我有一个 php 脚本,它从客户端传递的 url 加载网页,解析它并将结果发送到客户端。
在我的开发环境(安装了 windows 7 和 wamp 的笔记本电脑)上运行时,它运行良好,但是当上传到服务器(windows server 2008 R2 + php 5.3.6 + apache 2.2 + mod_fcgid 2.3.9)时,运行结果为“内部服务器错误”。
我可以看到 FastCGI 进程、处理请求、内存消耗如何上升到它被挂起并意外终止的程度。
apache 错误日志显示以下 2 条消息:
(OS 109)The pipe has been ended. : mod_fcgid: get overlap result error, referer: http://some_domain.com/NL-Analysis/getDomainResults
(OS 109)The pipe has been ended. : mod_fcgid: ap_pass_brigade failed in handle_request_ipc function, referer: http://some_domain.com/NL-Analysis/getDomainResults
我尝试根据错误日志在互联网上寻找解决方案,我发现的大部分内容都指向 mod_fcgid 配置。我尝试更改一些 mod_fcgid 指令和限制,但没有帮助。
目前 mod_fcgid 在 httpd.conf 中使用这些参数进行配置:
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS=1000
FcgidIOTimeout 7200
FcgidConnectTimeout 7200
FcgidBusyScanInterval 7200
FcgidBusyTimeout 7200
FcgidMaxRequestsPerProcess 1000
FcgidMaxProcesses 80
FcgidIdleTimeout 7200
FcgidMaxRequestInMem 100000000000
FcgidProcessLifeTime 7200
我很乐意提供任何其他意见。
有人能想出一种方法来阻止 FastCGI 进程终止吗?
谢谢,阿隆。