apache mod_fcgid问题

时间:2012-01-30 21:33:40

标签: apache mod-fcgid fcgid

我在多台服务器上遇到问题,而不是使用Apache模块mod_fcgid来处理处理请求的cgi脚本(票证验证和类似处理),然后根据处理结果提供服务器上的文件。

我在日志中反复出现以下错误:

[Mon Jan 30 23:11:41 2012] [warn] [client 95.35.160.193] mod_fcgid: error reading data, FastCGI server closed connection

[Mon Jan 30 23:11:41 2012] [warn] [client 95.35.160.193] (32)Broken pipe: mod_fcgid: ap_pass_brigade failed in handle_request_ipc function

[Mon Jan 30 23:13:34 2012] [warn] [client 37.8.52.128] mod_fcgid: can't apply process slot for /var/www/cgi-bin/assetx.fcgi

这些问题导致服务器运行缓慢,而其他时间导致服务暂时不可用错误。

服务器上有大量流量,我目前配置了以下fcgi指令:

FcgidMaxRequestsPerProcess       0
FcgidMaxProcesses       300
FcgidMinProcessesPerClass 0
FcgidIdleTimeout        240
FcgidIOTimeout  240
FcgidBusyTimeout 300

服务器上的平均负载是正常的,进程数平均为250个进程。

我已经对这个问题进行了几天的研究,有人说这是一个许可问题,我跟着他们的建议,没有帮助。我试着调整上面的参数,这些是我尝试过的最终值,但它们也不起作用。我也在尝试使用nginx而不是apache但是我找不到一个合适的方法来使用nginx在服务器上运行这个高负载的cgi脚本。

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

在Apache成功联系之前,你的应用程序正在消亡。答案是找出应用程序死亡的原因。

即使在错误情况下,FastCGI进程也不应该死或退出。 Apache希望FastCGI脚本能够继续存在。

你提到你有一个cgi脚本。你是如何修改它以支持FastCGI的?

通常你需要切换到类似CGI :: Fast的东西,删除所有对die的调用并退出,并重构你的脚本以使用CGI :: Fast while循环运行。