《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.