私はパフォーマンスのためにホームページを微調整しています。現在、3つのSQLクエリを処理する3.14.byでは毎秒約200リクエスト、php14フォーラムである3.14.by/forumでは毎秒20 reqを処理しています。
奇妙なことに、いくつかのVPSと専用のAtom 330サーバーで数値はほぼ同じです。
サーバーソフトウェアは次のとおりです。Apache2+ mod_php prefork 4子(ここで別の数字を試しました)、php5、APC、nginx、PHPセッションストレージ用のmemcached。
MySQLは使用可能なRAMの約30%を消費するように構成されています(VPSで約150 MB、専用サーバーで700 MB)
これはどこかにボトルネックがあるように見えますが、私がより高くなることを許可していませんか?(つまり、6個未満のSQLを実行すると高速化されることはわかっていますが、キャッシュされたクエリのためにsqldがトップの数%しか消費しないため、これは制限要因には見えません)
事前にフォークされたapache2をキックしてnginx + phpだけを残す方がずっと速いことをテストした人はいますか?
いくつかのベンチマーク
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.
更新: ボトルネックは、キャッシュされたデータのMySQLパフォーマンスにあるようです。単一のSQLを含むページには354req / secが表示され、6つのSQL-180 req / secが表示されます。ここで何を調整できると思いますか?(MySQLで100-200Mbを分岐できます)
[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/