Change default Apache prefork to event module.
https://www.interserver.net/tips/kb/apache-php-fpm-ubuntu-18-04/
a2dismod mpm_prefork a2dismod mpm_worker a2enmod mpm_event systemctl restart apache2
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
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