Apache's fork mode and worker mode judgment method

  • 2020-05-14 05:24:08
  • OfStack

This article will introduce you to judge whether apache works in prefork mode or worker mode. For the test method, we only need to use http to operate.

The common working modes of apache are prefork and worker. Run the command httpd-l or apache2-l, and if the output contains prefork.c, it is prefork mode, and if it contains worker.c, it is worker mode.

Once we know the pattern, we can edit it in confextrahttpd-mpm.conf


#
# 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     2
  MaxClients     150
  MinSpareThreads   25
  MaxSpareThreads   75
  ThreadsPerChild   25
  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       50
  MaxRequestsPerThread 10000
</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     25
  MaxSpareThreads    250
  MaxThreads      1000
  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   150
  MaxRequestsPerChild  0
</IfModule>

If we use windows system 1, we usually use winnt mpm at the back.


Related articles: