У меня были периодические проблемы на некоторых серверах с 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
strace -p PID
- person Marki555   schedule 22.02.2013