Je modifie ma page d'accueil pour les performances, actuellement elle gère environ 200 requêtes / seconde sur 3.14.by qui mange 6 requêtes SQL, et 20 req / seconde sur 3.14.by/forum qui est le forum phpBB.
Curieusement, les chiffres sont à peu près les mêmes sur certains VPS et sur un serveur Atom 330 dédié.
Le logiciel serveur est le suivant: Apache2 + mod_php prefork 4 enfants (essayé différents nombres ici), php5, APC, nginx, memcached pour le stockage des sessions PHP.
MySQL est configuré pour consommer environ 30% de la RAM disponible (~ 150 Mo sur VPS, 700 Mo sur serveur dédié)
On dirait qu'il y a un goulot d'étranglement quelque part qui ne me permet pas d'aller plus haut, des suggestions? (c'est-à-dire que je sais que faire moins de 6 SQL le rendrait plus rapide, mais cela ne ressemble pas à un facteur limitant, car sqld ne mange pas plus de quelques% en haut en raison des requêtes mises en cache)
Quelqu'un a-t-il testé que lancer Apache2 pré-forké et laisser juste nginx + php est beaucoup plus rapide?
Quelques repères supplémentaires
Small 40-byte static file: 1484 r/s via nginx+apache2, 2452 if we talk to apache2 directly.
Small "Hello world" php script: 458 r/s via ngin+apache2.
Mise à jour: Il semble que le goulot d'étranglement concerne les performances de MySQL sur les données mises en cache. La page avec un seul SQL affiche 354 req / sec, avec 6 SQL - 180 req / sec. Que pensez-vous que je puisse modifier ici? (Je peux débourser 100-200 Mo pour MySQL)
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
default-character-set=cp1251
collation-server=cp1251_general_cs
skip-character-set-client-handshake
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
bind-address = 127.0.0.1
key_buffer = 16M
max_allowed_packet = 8M
thread_stack = 64K
thread_cache_size = 16
sort_buffer_size = 8M
read_buffer_size = 1M
myisam-recover = BACKUP
max_connections = 650
table_cache = 256
thread_concurrency = 10
query_cache_limit = 1M
query_cache_size = 16M
expire_logs_days = 10
max_binlog_size = 100M
[mysqldump]
quick
quote-names
max_allowed_packet = 8M
[mysql]
[isamchk]
key_buffer = 8M
!includedir /etc/mysql/conf.d/