Apache ThreadsPerChild increase not applying
I installed WAMP and am using Apache 2.2.17 on my windows 7 box. Have a lot of boxes connecting to it to request work etc etc.
The apache server crashed on me twice because it said
[warn] Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting
I messed around with the httpd-mpm and this is my current configuration within that file
#
# Server-Pool Management (MPM specific)
#
#
# PidFile: The file in which the server should record its process
# identification number when it starts.
#
# Note that this is the default PidFile for most MPMs.
#
<IfModule !mpm_netware_module>
PidFile "logs/httpd.pid"
</IfModule>
#
# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
#
<IfModule !mpm_winnt_module>
<IfModule !mpm_netware_module>
LockFile "logs/accept.lock"
</IfModule>
</IfModule>
#
# Only one of the below sections will be relevant on your
# installed httpd. Use "apachectl -l" to find out the
# active mpm.
#
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 250
MaxRequestsPerChild 0
</IfModule>
# BeOS MPM
# StartThreads: how many threads do we initially spawn?
# MaxClients: max number of threads we can have (1 thread == 1 client)
# MaxRequestsPerThread: maximum number of requests each thread will process
<IfModule mpm_beos_module>
StartThreads 10
MaxClients 250
MaxRequestsPerThread 250
</IfModule>
# NetWare MPM
# ThreadStackSize: Stack size allocated for each worker thread
# StartThreads: Number of worker threads launched at server startup
# MinSpareThreads: Minimum number of idle threads, to handle request spikes
# MaxSpareThreads: Maximum number of idle threads
# MaxThreads: Maximum number of worker threads alive at the same time
# MaxRequestsPerChild: Maximum number of requests a thread serves. It is
# recommended that the default value of 0 be set for this
# directive on NetWare. This will allow the thread to
# continue to service requests indefinitely. 开发者_运维问答
<IfModule mpm_netware_module>
ThreadStackSize 65536
StartThreads 250
MinSpareThreads 50
MaxSpareThreads 500
MaxThreads 3000
MaxRequestsPerChild 0
MaxMemFree 100
</IfModule>
# OS/2 MPM
# StartServers: Number of server processes to maintain
# MinSpareThreads: Minimum number of idle threads per process,
# to handle request spikes
# MaxSpareThreads: Maximum number of idle threads per process
# MaxRequestsPerChild: Maximum number of connections per server process
<IfModule mpm_mpmt_os2_module>
StartServers 2
MinSpareThreads 5
MaxSpareThreads 10
MaxRequestsPerChild 0
</IfModule>
# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_winnt_module>
ThreadsPerChild 250
MaxRequestsPerChild 0
</IfModule>
The issue is that even though I increased the number of threadsperchild it still says this in the error log
[Tue Apr 12 00:26:10 2011] [notice] Apache/2.2.17 (Win32) PHP/5.3.5 configured -- resuming normal operations
[Tue Apr 12 00:26:10 2011] [notice] Server built: Oct 18 2010 01:58:12
[Tue Apr 12 00:26:10 2011] [notice] Parent: Created child process 3580
[Tue Apr 12 00:26:10 2011] [notice] Child 3580: Child process is running
[Tue Apr 12 00:26:10 2011] [notice] Child 3580: Acquired the start mutex.
[Tue Apr 12 00:26:10 2011] [notice] Child 3580: Starting 64 worker threads.
[Tue Apr 12 00:26:10 2011] [notice] Child 3580: Starting thread to listen on port 80.
Why doesn't my threadsperchild setting apply and work? It seems to default back to 64...
If you still have this problem, you need to uncomment this line in httpd.conf:
Include conf/extra/httpd-mpm.conf
精彩评论