使用FastCGI在Apache中导致了内部服务器错误
突然出现了内部服务器错误
当在Web系统中进行了长时间的处理时,突然请求中断,并出现了”Internal Server Error”的错误。
服务器环境如下:
-
- Windows Server
-
- Apache2.4
-
- PHP7
- FastCGI
内存限制
在设定的时间之前,出现了超时错误。由于正在执行相当重的处理,我已经尝试在php.ini中解除内存使用上限,并重新运行,但情况没有改变。
记录
我在试探中想知道是否有任何相关的信息,但却发现完全没有输出任何错误信息。
mpm_winnt 的意思是 Windows 操作系统下的多进程模块。
我尝试着读取配置文件,但结果并没有改变。
httpd.conf 被用作 Apache HTTP Server 的主要配置文件
重新检查设置文件。超时设置已经足够,也不是请求的问题。
<IfModule fcgid_module>
FcgidInitialEnv PHPRC "c:/php"
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 0
FcgidMaxRequestLen 30000000
FcgidIOTimeout 1800
FcgidConnectTimeout 1800
</IfModule>
查看公式文档后,发现了相关设置。
https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidbusytimeout
很明显,默认的时间可能会导致错误,而且由于处理比较重,可能会被中断。可以说,这个设计本身就不太好。
当我立即进行了更新并再次执行时,错误已经被避免了。
<IfModule fcgid_module>
FcgidInitialEnv PHPRC "c:/php"
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 0
FcgidMaxRequestLen 30000000
FcgidIOTimeout 1800
FcgidConnectTimeout 1800
FcgidBusyTimeout 1800
</IfModule>