Sto modificando la mia homepage per le prestazioni, attualmente gestisce circa 200 richieste / secondo su 3.14.by che mangia 6 query SQL e 20 req / secondo su 3.14.by/forum che è il forum phpBB.
Stranamente, i numeri sono più o meno gli stessi su alcuni server VPS e Atom 330 dedicati.
Il software server è il seguente: Apache2 + mod_php prefork 4 child (qui provato diversi numeri), php5, APC, nginx, memcached per l'archiviazione delle sessioni PHP.
MySQL è configurato per consumare circa il 30% della RAM disponibile (~ 150 Mb su VPS, 700 Mb su server dedicato)
Sembra che ci sia un collo di bottiglia da qualche parte che non mi permette di andare più in alto, qualche suggerimento? (vale a dire che so che fare meno di 6 SQL lo renderebbe più veloce, ma questo non sembra un fattore limitante, poiché sqld mangia non più di qualche% in cima a causa delle query memorizzate nella cache)
Qualcuno ha testato che calciare precaricato apache2 e lasciare solo nginx + php è molto più veloce?
Alcuni altri parametri di riferimento
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.
Aggiornamento: sembra che il collo di bottiglia sia rappresentato dalle prestazioni di MySQL sui dati memorizzati nella cache. La pagina con SQL singolo mostra 354req / sec, con 6 SQL - 180 req / sec. Cosa pensi che posso modificare qui? (Posso sborsare 100-200 Mb per 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/