Apache 崩溃解决 -- 修改堆栈大小

《Apache 崩溃解决 -- 修改堆栈大小》要点:
本文介绍了Apache 崩溃解决 -- 修改堆栈大小,希望对您有用。如果有疑问,可以联系我们。

《Apache 崩溃解决 -- 修改堆栈大小》是否对您有启发,欢迎查看更多与《Apache 崩溃解决 -- 修改堆栈大小》相关教程,学精学透。编程之家PHP学院为您提供精彩教程。

在Windows平台下用正则preg_match_all或preg_match分析比较长的字符串时,导致apache瓦解重启的原因是windows平台下默认分配的线程堆栈空间ThreadStackSize太小导致的.Windows 32默认只有256KB,而在Linux下默认值是8M,这就是为什么同样的程序在linux平台下正常,而在windows平台下不正常的原因.

那么如何增加Windows平台下ThreadStackSize的大小呢?在apache的配置文件httpd.conf里启用”Include conf/extra/httpd-mpm.conf”,然后在httpd-mpm.conf文件里的mpm_winnt_module配置模块里设置”ThreadStackSIze 8400000”即可(大约8M).

代码如下:

<IfModule mpm_winnt_module>

ThreadStackSize 8400000

#ThreadsPerChild 150

ThreadsPerChild 350

#MaxConnectionsPerChild 0

MaxConnectionsPerChild 10000

</IfModule>

这里必要注意的是,32位的Apache程序只能最多使用大约2GB内存空间!因此,ThreadStackSize和ThreadsPerChild的值相乘后(8M*350)不应该超过2G,否则无法启动apache,出现的错误日志如下:

[Thu Apr 21 17:13:28.061948 2016] [mpm_winnt:crit] [pid 30660:tid 364] (OS 8)存储空间不敷,无法处理此命令. : AH00355: Child: CreateThread Failed. Unable to create all worker threads. Created 212 of the 350 threads requested with the ThreadsPerChild configuration directive.

相关文章

1、到apache官网上下载apache的安装文件 http://httpd.apache.org/download.cgi 点击链接Files for Mic...
1.确保apache已开启rewrite。 2.在.htaccess文件中添加如下: RewriteEngine On RewriteCond %{HTTP_RE...
在httpd.conf中修改ErrorLog和CustomLog的配置 ErrorLog &quot;|E:/apache2.2/bin/rotatelogs.exe ...
1、打开apache的配置文件httpd.conf,打开如下项 LoadModule proxy_module modules/mod_proxy.so LoadM...
一、下载必须的安装源码包 http://httpd.apache.org/download.cgi#apache24 httpd-2.4.23.tar.gz http:...
1.在apache配置文件httpd.conf中找到如下行: #LoadModule rewrite_module modules/mod_rewrite.so 去掉...