Scale up as you grow — whether you're running one virtual machine or ten thousand.

From GPU-powered inference and Kubernetes to managed databases and storage, get everything you need to build, scale, and deploy intelligent applications.

My server is running Ubuntu 18.04.5 LTS, with LAMP stack (PHP 7.4), and apache version 2.4.29 using Prefork MPM. My server has 16 CPUs and 29GB of RAM. This server hosts 258 websites.
Whenever I reboot my server, I notice (using top command) that apache is creating a crazy amount of processes. This is completely overloading the server. This ONLY happens when I reboot the server, or I manually stop apache (service apache2 stop) and then start apache (service apache2 start).
Normally this is the output of top (during normal hours):
https://drive.google.com/file/d/163-N2dq_ARKAICQEwnWA0SaLPLxtlOls/view?usp=sharing
After rebooting or stopping and starting apache manually, the load average climbs to over 126.4! It slowly (over about 10-15 minutes) goes back to normal. For the first 5 minutes after rebooting or stopping and starting apache, the load just steadily climbs until it gets to about 126-130.
Here is my MPM configuration (/etc/apache2/mods-enabled/mpm_prefork.conf):
<IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 150 MaxConnectionsPerChild 0 </IfModule>
Also KeepAlive is ON, MaxKeepAliveRequests is 100, and KeepAliveTimeout is 2.
What is very strange, is I made an exact copy of the server, and placed a handful of sites (6 websites) on the copy, and when I reboot, or start and stop apache on this copy server, this behavior does not happen. This is an EXACT copy of the server mentioned above, it is just only hosting 6 websites (WAY less traffic) instead of 258.
Could this problem be caused by too many client connections waiting on apache to respond during reboot, and when apache server finally comes back up it floods apache with connections?
Would increasing the values in my MPM configuration possibly help this? I’ve checked logs, and I never go over MaxRequestWorkers.
It has been suggested that I move from mpm_prefork to php-fpm and mod_event but for certain reasons this is not practical for me. I need to keep mpm_prefork.
WildcatMedia
jeffs
0621335d663b4b699a60eb27e28153
accesstrax
Dwight Trumbower
admin
yimprogramming
samunyi90
1d6ce141ab5444dfb1ea2dd29cf4b1
Matt Fricker
joel9b158e40551b15093f213f