Cherokee 1.2.101 の FastCGI で Archlinux / php-fpm 5.3.9 を実行している一部のサーバーで断続的な問題が発生しています。次のようなロジックを使用して静的キャッシュ ファイルを構築および提供するキャッシュ プラグインを使用しています。
$cache_file = md5($host . $uri) . '.cache';
if( file_exists($cache_file) ) {
$cache_file_contents = file_get_contents($cache_file)
exit( $cache_file_contents );
}
// else build/save the $cache_file
いくつかのプロセスは、その呼び出しでハングしている php-fpm の遅いログに記録されexit()
ます。その時点で、負荷が急増し、100% の CPU 使用率が (ほぼ) 完全に Web サーバーに行き、PHP ページが 500 - 内部サーバー エラーを返し始めます。サーバーが自然に回復する場合もあれば、php-fpm と cherokee を再起動する必要がある場合もあります。
PHP-FPM の FastCGI 設定を実行するように構成しました。
これは VPS ですが、キャッシュ ファイルが既にロードされているはずなので、ファイルシステムでの IO 待機を暫定的に除外します。テストする行為でそれをキャッチできませんでした
vmstat
500に設定しましたが、呼び出しがプロセスの循環を妨げているのでは
pm.max_requests
ないかと思います。exit()
php-fpm ログには多くの
WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers)
. これは、プール内の子プロセスの数を規制する php-fpm の通常の部分のようですが、
トラブルシューティングに関するヒントをいただければ幸いです。以下に、危険信号を発した 3 つの点を示します。
http://www.php.net/manual/en/function.exit.php#96930
https://serverfault.com/questions/84962/php-via-fastcgi-terminated-by-calling-exit#85008