Ich optimiere meine Homepage, um die Leistung zu verbessern. Derzeit werden ungefähr 200 Anfragen / Sekunde auf 3.14.by verarbeitet, bei denen 6 SQL-Abfragen verarbeitet werden, und 20 Anfragen / Sekunde auf 3.14.by/forum, bei dem es sich um das phpBB-Forum handelt.
Seltsamerweise sind die Zahlen auf einigen VPS- und dedizierten Atom 330-Servern ungefähr gleich.
Server-Software ist die folgende: Apache2 + mod_php prefork 4 Kinder (versuchte verschiedene Zahlen hier), PHP5, APC, Nginx, für PHP-Sitzungen Speicherung zwischengespeichert.
MySQL ist so konfiguriert, dass es etwa 30% des verfügbaren Arbeitsspeichers aufnimmt (~ 150 MB bei VPS, 700 MB bei dedizierten Servern).
Das sieht so aus, als ob es irgendwo einen Engpass gibt, der es mir nicht erlaubt, höher zu gehen. Irgendwelche Vorschläge? (dh ich weiß, dass weniger als 6 SQL-Anweisungen schneller sind, aber dies scheint kein einschränkender Faktor zu sein, da sqld aufgrund von zwischengespeicherten Abfragen nicht mehr als ein paar Prozent oben isst.)
Hat jemand getestet, dass es viel schneller ist, vorgegabelten Apache2 zu treten und nur Nginx + PHP zu lassen?
Noch ein paar Benchmarks
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.
Update: Es scheint, dass der Engpass die MySQL-Leistung bei zwischengespeicherten Daten ist. Seite mit einzelnem SQL zeigt 354 Req / Sek., Mit 6 SQL - 180 Req / Sek. Was denkst du, kann ich hier optimieren? (Ich kann 100-200Mb für MySQL herausfiltern)
[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/