У меня есть сервер Plesk 9.5.4 на Debian с PHP 5.2.6-1 + lenny13, который сохраняет свои php5-cgi
процесс постоянно активен. Я редактировал /etc/apache2/conf.d/fcgid.conf
и изменил значения (и проверил, загружен ли конфиг в любом случае, что было правдой).
IdleTimeout 500
ProcessLifeTime 360
Но все же процесс продолжается более часа, а активность отсутствует более получаса.
Кто-нибудь знает, в чем может быть проблема?
mod_fastcgi
Проверьте свои настройки для
-minПроцессы n (5) Минимальное общее количество экземпляров динамического приложения FastCGI, разрешенное для одновременного запуска без остановки диспетчером процессов (из-за отсутствия спроса).
По умолчанию 5.
mod_fcgid
Проверьте свои настройки для
FcgidMinProcessesPerClass
Эта директива устанавливает минимальное количество процессов, которые будут сохранены в классе процесса после завершения запросов.
Этот параметр будет применяться ко всем приложениям, созданным для этого сервера или виртуального хоста. Используйте FcgidCmdOptions, чтобы применить этот параметр к одному приложению.
Процессы CGI остаются «живыми», поэтому они могут немедленно обрабатывать запросы. Они не завершаются после одного запроса, но часто настраиваются на обработку 500-5000 запросов, пока они не будут заменены новым.
Соответствующие параметры конфигурации:
PHP_FCGI_CHILDREN=60
PHP_FCGI_MAX_REQUESTS=5000
Веб-сервер не заботится об обработке 50+ экземпляров PHP-CGI, которые могут обрабатывать запросы, но оставляет эту работу серверу CGI. Сам сервер CGI поддерживает работу пула экземпляров PHP-CGI. Он также убивает их, когда они больше не нужны, и запускает их при необходимости.
IdleTimeout
сообщает диспетчеру процессов CGI, как долго ждать, пока процесс CGI вернет ответ.
Веб-сервер получает HTTP-запрос, отправляет его на сервер CGI, сервер CGI передает его процессу PHP-CGI. Теперь процесс PHP-CGI выполняет вычисления и вычисления, и его выполнение занимает 1 минуту. Так как таймаут 120, все нормально.
Теперь поступает еще один запрос, вычисления усложняются, и процесс PHP-CGI завершается за 10 минут. Через 2 минуты сервер CGI достигает тайм-аута простоя процесса CGI и решает больше не ждать. Он возвращает HTTP-серверу ошибку: «данные не получены, время ожидания простоя».
ProcessLifetime
- это количество секунд, в течение которых процесс CGI может продолжать работать. После этого его заменяют на новый.