如何增加在Windows 7下运行的Apache的堆栈大小?

时间:2011-02-20 17:58:23

标签: apache stack-overflow windows-7-x64

我认为我在Windows 7下的Apache服务器上运行的是一个堆栈溢出运行cakePHP应用程序。

1 个答案:

答案 0 :(得分:67)

在Windows平台上更常出现此问题,因为Apache的默认堆栈大小较小。 Windows上有1 MB的默认堆栈大小,与Unix / Linux平台上的8 MB不同。这可能是一个原因,为什么一些例如PHP脚本在Linux上正常工作,但导致Apache在Windows上崩溃。

此外,崩溃是无声的(分段错误),没有错误消息,Apache只是停止响应并重新启动子进程。浏览器没有数据并呈现空白页面,因此确定错误是有点困难。

在PHP中使用长正则表达式时,这是一个常见问题。

只有Apache的错误日志中有一个通知,告诉我,子进程崩溃了:

Parent: child process exited with status ... -- Restarting

更改Apache堆栈大小的最佳方法是使用Apache配置文件中的 ThreadStackSize 指令。 Apache的文档中描述了 ThreadStackSize 指令:http://httpd.apache.org/docs/2.2/mod/mpm_common.html#ThreadStackSize

因此,在Windows上增加Apache的堆栈大小可能如下所示:

<IfModule mpm_winnt_module>
   ThreadStackSize 8388608
</IfModule>

这些行应该放在Apache的配置文件中。为简单起见,您可以将其添加到 httpd.conf 。或者更好(但不是必须),将它放到 httpd-mpm.conf 文件中,并在 httpd.conf 中取消注释这一行:

Include conf/extra/httpd-mpm.conf

它将Apache的堆栈大小设置为8 MB,因此它与Linux上的默认值相同。

不要忘记重启Apache! :)