##
## Server-Pool Size Regulation (MPM specific)
## 

# the MPM (multiprocessing module) is not a dynamically loadable module in the
# sense of other modules. It is a compile time decision which one is used. We
# provide different apache2 MPM packages, containing different httpd binaries
# compiled with the available MPMs. See APACHE_MPM in /etc/sysconfig/apache2.

# prefork MPM
<IfModule prefork.c>
	# number of server processes to start
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#startservers
	StartServers         5
	# minimum number of server processes which are kept spare
	# https://httpd.apache.org/docs/2.4/mod/prefork.html#minspareservers
	MinSpareServers      5
	# maximum number of server processes which are kept spare
	# https://httpd.apache.org/docs/2.4/mod/prefork.html#maxspareservers
	MaxSpareServers     10
	# highest possible MaxRequestWorkers setting for the lifetime of the Apache process.
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#serverlimit
	ServerLimit        256
	# maximum number of server processes allowed to start (formerly MaxClients)
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxrequestworkers
	MaxRequestWorkers         256
	# maximum number of requests a server process serves
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxconnectionsperchild
	MaxConnectionsPerChild  10000
</IfModule>

# worker MPM
<IfModule worker.c>
	# initial number of server processes to start
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#startservers
	StartServers         3
	# minimum number of worker threads which are kept spare
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#minsparethreads
	MinSpareThreads     25
	# maximum number of worker threads which are kept spare
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxsparethreads
	MaxSpareThreads     75 
	# upper limit on the configurable number of threads per child process
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#threadlimit
	ThreadLimit         64
	# maximum number of simultaneous client connections (formerly MaxClients)
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxrequestworkers
	MaxRequestWorkers         256
	# number of worker threads created by each child process
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#threadsperchild
	ThreadsPerChild     25
	# maximum number of requests a server process serves
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxconnectionsperchild
	MaxConnectionsPerChild  10000
</IfModule>

# event MPM
<IfModule event.c>
	# initial number of server processes to start
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#startservers
	StartServers         3
	# minimum number of worker threads which are kept spare
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#minsparethreads
	MinSpareThreads     25
	# maximum number of worker threads which are kept spare
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxsparethreads
	MaxSpareThreads     75
	# upper limit on the configurable number of threads per child process
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#threadlimit
	ThreadLimit         64
	# maximum number of simultaneous client connections (formerly MaxClients)
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxrequestworkers
	MaxRequestWorkers         256
	# number of worker threads created by each child process
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#threadsperchild
	ThreadsPerChild     25
	# maximum number of requests a server process serves
	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxconnectionsperchild
	MaxConnectionsPerChild  10000
	# limit concurrent connections per process
	# https://httpd.apache.org/docs/2.4/mod/event.html#asyncrequestworkerfactor
	AsyncRequestWorkerFactor  2
</IfModule>

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 15

#
# MaxRanges: Maximum number of Ranges in a request before
# returning the entire resource, or one of the special
# values 'default', 'none' or 'unlimited'.
# Default setting is to accept 200 Ranges.
#MaxRanges unlimited

#
# EnableMMAP: Control whether memory-mapping is used to deliver
# files (assuming that the underlying OS supports it).
# The default is on; turn this off if you serve from NFS-mounted
# filesystems.  On some systems, turning it off (regardless of
# filesystem) can improve performance; for details, please see
# https://httpd.apache.org/docs/2.4/mod/core.html#enablemmap
#
#EnableMMAP off

#
# EnableSendfile: Control whether the sendfile kernel support is
# used  to deliver files (assuming that the OS supports it).
# The default is on; turn this off if you serve from NFS-mounted
# filesystems.  Please see
# https://httpd.apache.org/docs/2.4/mod/core.html#enablesendfile
#
EnableSendfile on

<IfModule mod_setenvif.c>
	#
	# The following directives modify normal HTTP response behavior to
	# handle known problems with browser implementations.
	#
	BrowserMatch "Mozilla/2" nokeepalive
	BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
	BrowserMatch "RealPlayer 4\.0" force-response-1.0
	BrowserMatch "Java/1\.0" force-response-1.0
	BrowserMatch "JDK/1\.0" force-response-1.0

	#
	# The following directive disables redirects on non-GET requests for
	# a directory that does not include the trailing slash.  This fixes a 
	# problem with Microsoft WebFolders which does not appropriately handle 
	# redirects for folders with DAV methods.
	# Same deal with Apple's DAV filesystem and Gnome VFS support for DAV.
	#
	BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
	BrowserMatch "^WebDrive" redirect-carefully
	BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
	BrowserMatch "^gnome-vfs" redirect-carefully
</IfModule>
