在切諾基1.2.101的FastCGI上,一些運行Archlinux/php-fpm 5.3.9的服務器出現間歇性問題。我使用的是緩存插件,建立和使用邏輯像提供靜態緩存文件:PHP-FPM/FastCGI + exit()導致CPU峯值
$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使用率(幾乎)完全轉移到網絡服務器,PHP頁面開始返回500 - 內部服務器錯誤。有時候服務器會自行恢復,其他的我需要重新啓動php-fpm和cherokee。
我已經配置做了PHP-FPM的FastCGI設置一個
即使這是一個VPS我會試探性地排除IO上的文件系統等作爲緩存文件應該已經被加載。我一直沒能趕上它的行爲與
vmstat
我
pm.max_requests
設置爲500,但不知道如果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
Errors when calling exit() function for fastCGI?
對於二次探測,您可以嘗試使用strace來查看特定進程正在執行的操作:'strace -p PID' – Marki555 2013-02-22 11:45:55