Apache Web Server Tuning

Change default Apache prefork to event module.

For Ubuntu

https://www.interserver.net/tips/kb/apache-php-fpm-ubuntu-18-04/

a2dismod mpm_prefork
a2dismod mpm_worker
a2enmod mpm_event
systemctl restart apache2

With PHP

aptitude install php-fpm libapache2-mod-fcgid
a2enmod proxy
a2enmod proxy_fcgi
a2dismod php7.4
a2enconf php7.4-fpm
a2dismod mpm_prefork
a2dismod mpm_worker
a2enmod mpm_event
systemctl restart apache2

Enable to Event Module

  • Edit /etc/httpd/conf.modules.d/00-mpm.conf
  • Comment Line: LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
  • Uncomment Line: LoadModule mpm_event_module modules/mod_mpm_event.so

Include Configuration File for MPM Event Module

  • In /etc/httpd/conf/httpd.conf
  • Add Line: IncludeOptional conf.d/mpm_event_module.conf
    • (Add this line below other IncludeOptional lines)

Create the MPM Event Module Config File

Create /etc/httpd/conf.d/mpm_event_module.conf with below lines

# event MPM
# ServerLimit: Default 16. 
# StartServers: initial number of server processes to start
# 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
# MaxRequestWorkers: maximum number of worker threads
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
# ThreadLimit: Sets the upper limit on the configurable number of threads per child process.  ThreadsPerChild can be modified during a restart up to the value of this directive.
<IfModule mpm_event_module>
    ServerLimit               16
    StartServers               3
    MinSpareThreads           75
    MaxSpareThreads          250
    ThreadLimit               64
    ThreadsPerChild           25
    MaxRequestWorkers        400
    MaxConnectionsPerChild  8000
</IfModule>

For 8,000 concurrent connections use this configuration.

<IfModule mpm_event_module>
    ServerLimit              250
    StartServers              10
    MinSpareThreads           75
    MaxSpareThreads          250 
    ThreadLimit               64
    ThreadsPerChild           32
    MaxRequestWorkers       8000
    MaxConnectionsPerChild 10000
</IfModule>

Ref: https://oxpedia.org/wiki/index.php?title=Tune_apache2_for_more_concurrent_connections


QR Code
QR Code tech:apache:apache_webserver_tuning (generated for current page)