良い php-fpm 設定を提案してください

良い php-fpm 設定を提案してください

友人のためにサーバーを設定しています。サーバーの仕様は次のとおりです。

8GB RAM 
Quad Core processor 
1 TB HDD 
100 mbps port

ただし、すべての PHP ファイルの読み込みが非常に遅いです。スピードテストを実行したところ、サーバーが最初のバイトを読み込むのに 16 秒かかりました。これは PHP-FPM 構成によるものだと確信しています。サーバーは nginx と PHP のみを使用し、mysql などは使用していません。

現在のphp-fpmの設定

pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 35

サーバーの負荷とRAMの使用量は問題ありません

このサーバーに適した構成を提案してください


アップデート:

この構成は問題なく動作します

pm.max_children = 20
pm.start_servers = 7
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests = 100

最初のバイトの読み込み時間の問題は解決しました。しかし、15~20時間後には最初のバイトの読み込み時間が徐々に長くなります。読み込み時間を短くするには、php-fpm をリロードする必要があります。上記の設定に基づいて、最初のバイトの読み込み時間が短いままになるように変更し、再起動する必要がないようにしました:P

更新 2: php-fpm を再起動する前 最初のバイトを読み込む時間: 1.5 秒 ページの合計読み込み時間: 3.0 秒 php-fpm を再起動した後 最初のバイトを読み込む時間: 0.3 秒 ページの合計読み込み時間: 1.5 秒

これは明らかに、遅いコードの問題ではなく、php-fpmの設定の問題であることを示しています。

答え1

ワーカーが多すぎます! APC を使用してコードを高速化します。遅いコードは単に遅いコードであるという @Martin Fjordvald の意見に完全に同意します。たとえば、index.php を投稿していただければ、ボトルネックを見つけるお手伝いをいたします。

私の個人的な設定は以下でご覧いただけます。GitHubDrupal インストールでの最後の負荷テストでは、読み込み時間は約 120 ミリ秒でした。

経由で新しい cronjob を作成しcrontab -e、次の内容をファイルに入力します。

# Simple reload every hour.
@hourly /etc/init.d/php5-fpm reload

# And restart at midnight.
@daily /etc/init.d/php5-fpm restart

答え2

遅いコードは遅いコードであり、サーバー構成では対処できません。速度が遅くなる唯一のケースは、トラフィックが多すぎて、リクエストがプロセスが利用可能になるまで待機する必要がある場合です。

PHP-FPM を使用しているため、スロー ログを有効にして、コードが遅い理由を突き止めます。

関連情報