У меня периодически возникали проблемы на некоторых серверах под управлением Archlinux / php-fpm 5.3.9 в FastCGI на Cherokee 1.2.101.Я использую плагин кеширования, который создает и обслуживает статические файлы кеша, используя логику:
$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% (почти) целиком переходит на веб-сервер , и страницы PHP начинают возвращать 500 - Внутренние ошибки сервера.Иногда сервер восстанавливается сам по себе, другим мне нужно перезапустить php-fpm и cherokee.
У меня есть настройки FastCGI для PHP-FPM, настроенные на
Несмотря на то, что это VPS, я бы предварительно исключил ожидание ввода-вывода в файловой системе, поскольку файл кэша уже должен быть загружен.Я не смог поймать его в действии для проверки с 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
Ошибки при вызове функции exit () для fastCGI?