Serverul meu rulează Ubuntu 18.04.5 LTS, cu stiva LAMP (PHP 7.4) și versiunea apache 2.4.29 folosind Prefork MPM. Serverul meu are 16 procesoare și 29 GB de RAM. Acest server găzduiește 258 de site-uri web.
De fiecare dată când îmi repornesc serverul, observ (folosind comanda de sus) că apache creează o cantitate nebună de procese. Acest lucru este supraîncărcarea completă a serverului. Acest lucru se întâmplă NUMAI când repornesc serverul sau opresc manual apache (service apache2 stop) și apoi pornesc apache (service apache2 start).
În mod normal, aceasta este rezultatul de top (în timpul orelor normale):
După repornirea sau oprirea și pornirea manuală a apache, media de încărcare crește la peste 126,4! Încet (peste aproximativ 10-15 minute) revine la normal. În primele 5 minute după repornire sau oprire și pornire apache, sarcina crește constant până când ajunge la aproximativ 126-130.
Iată configurația mea MPM (/etc/apache2/mods-enabled/mpm_prefork.conf):
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>
De asemenea, KeepAlive este ON, MaxKeepAliveRequests este 100 și KeepAliveTimeout este 2.
Ceea ce este foarte ciudat, este că am făcut o copie exactă a serverului și am plasat o mână de site-uri (6 site-uri web) pe copie, iar când repornesc sau pornesc și opresc apache pe acest server de copiere, acest comportament nu se întâmplă. Aceasta este o copie EXACTĂ a serverului menționat mai sus, găzduiește doar 6 site-uri web (MULT mai puțin trafic) în loc de 258.
Această problemă ar putea fi cauzată de prea multe conexiuni client care așteaptă ca apache să răspundă în timpul repornirii, iar când serverul Apache revine în sfârșit, acesta inundă apache cu conexiuni?
Creșterea valorilor din configurația mea MPM ar putea ajuta acest lucru? Am verificat jurnalele și nu trec niciodată peste MaxRequestWorkers.