web-dev-qa-db-ja.com

Windows Server 2008R2でのWINNTApacheMPM「ThreadsPerChild」構成

ThreadPerChildを200に設定すると、エラーが発生し、Apacheを起動できませんが、まだ60%の空きRAMがあります。サーバーは、4GBのRAMを搭載したWindows Server 2008R2です。この場合、ApacheにもっとRAMを利用する方法は?

私のApacheMPM構成:

# 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:子: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:親:シャットダウン信号を受信しました-

編集:2016年12月9日:

このページをたどった https://support.Microsoft.com/en-us/kb/106167 レジストリのIRPStackSizeを20と25に変更します。それでもApacheサーバーの起動に失敗しました。

ありがとう。

1
user3162662

この人は、64ビットのWindowsとApacheを使用することで、ThreadsPerChildを最大化できたと言います。

https://www.apachelounge.com/viewtopic.php?t=5754

今日、私は上記と同じ構成を試しましたが、x64システムを使用しています。
Windows Server 2012(x64)
Apache 2.4.7 VC1164ビット
mod_fcgid 2.3.9
PHP 5.4.24VC11非スレッドセーフ

ただし、64ビットシステムでは、2つの問題が解決しました。
1。 mpmThreadsPerChildを15000に設定できるようになりました

1
Chloe