CGI进程管理

CGI进程管理

我在 Debian 上安装了 Plesk 9.5.4 服务器,使用 PHP 5.2.6-1+lenny13,这使其php5-cgi进程持续处于活动状态。我编辑了/etc/apache2/conf.d/fcgid.conf并更改了值(并检查了配置是否已加载,结果是真的)。

IdleTimeout 500
ProcessLifeTime 360

但该进程仍会持续运行一个多小时,并且半小时以上没有任何活动。

谁知道问题可能出在哪里?

答案1

CGI 进程保持“活动”状态,以便能够立即处理请求。它们不会在单个请求后终止,但通常配置为处理 500-5000 个请求,直到被新请求替换为止。

相关配置选项包括

PHP_FCGI_CHILDREN=60
PHP_FCGI_MAX_REQUESTS=5000

CGI进程管理

Web 服务器并不关心处理 50 多个可能处理请求的 PHP-CGI 实例,而是将这项工作留给 CGI 服务器。CGI 服务器本身会保持 PHP-CGI 实例池的运行。它还会在不再需要这些实例时将其终止,并在需要时将其启动。

CGI 服务器配置

IdleTimeout

告诉 CGI 进程管理器等待 CGI 进程返回响应的时间。

例子:

Web 服务器收到 HTTP 请求,将其发送到 CGI 服务器,CGI 服务器将其转发给 PHP-CGI 进程。现在 PHP-CGI 进程不断计算,需要 1 分钟才能完成。由于超时时间为 120,因此一切正常。

现在又有另一个请求进来,计算更加困难,PHP-CGI 进程需要 10 分钟才能完成。2 分钟后,CGI 服务器达到 CGI 进程的空闲超时并决定不再等待。它向 HTTP 服务器返回一个错误:“未检索到数据,空闲超时”。

ProcessLifetime

是 CGI 进程可以保持运行的秒数。之后将被新进程替换。

答案2

mod_fastcgi

检查您的设置

-最小进程数n (5) 允许在任意时刻运行的动态 FastCGI 应用程序实例的最小总数,不会被进程管理器杀死(由于需求不足)。

默认为 5。

mod_fcgid

检查您的设置

每个类的最小进程数

该指令设置完成请求后在进程类中保留的最小进程数。

此设置将应用于为此服务器或虚拟主机生成的所有应用程序。使用 FcgidCmdOptions 将此设置应用于单个应用程序。

相关内容