我在多个服务器上遇到问题,而不是使用 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 脚本。
我能做些什么来解决这个问题?