当我将 ThreadPerChild 设置为 200 时出现错误并且无法启动 Apache,尽管我仍有 60% 的可用 RAM。服务器是具有 4GB RAM 的 Windows Server 2008 R2。在这种情况下如何为 apache 使用更多 RAM?
我的 Apache MPM 配置:
# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxRequestsPerChild: maximum number of requests a server process serves
# Win32DisableAcceptEx: Use accept() rather than AcceptEx() to accept network connections
<IfModule mpm_winnt_module>
ThreadStackSize 8388608
ThreadsPerChild 170
MaxRequestsPerChild 0
#Win32DisableAcceptEx
</IfModule>
我在 apache 的 error_log 中得到了什么:
[Thu Dec 01 18:23:04.459113 2016] [mpm_winnt:notice] [pid 3396:tid 288] AH00354: Child: 启动 200 个工作线程。
[Thu Dec 01 18:23:04.459113 2016] [mpm_winnt:crit] [pid 3396:tid 288] (OS 8)没有足够的存储空间来处理这个命令。:AH00355:孩子:CreateThread 失败。无法创建所有工作线程。在使用 ThreadsPerChild 配置指令请求的 200 个线程中创建了 190 个。
[Thu Dec 01 18:23:04.474714 2016] [mpm_winnt:notice] [pid 3644:tid 380] AH00422: Parent: Received shutdown signal --
编辑:2016 年 12 月 9 日:
按照此页面https://support.microsoft.com/en-us/kb/106167将注册表中的 IRPStackSize 更改为 20 和 25。仍然无法启动 Apache 服务器。
谢谢。