Nachdem ich mir am Kopf gekratzt hatte, um herauszufinden, warum meine Site so langsam reagierte, obwohl die Serverressourcen in Ordnung sind, überprüfte ich schließlich den Apache-Status und stellte fest:
78 requests/sec - 0.7 MB/second - 8.5 kB/request
256 requests currently being processed, 0 idle workers
Es scheint, dass mein Apache buchstäblich mit Verbindungen ausgelastet ist. Jeder, der versucht, meine Website zu besuchen, wird auf eine "Warteliste" gesetzt, bis Apache wieder frei ist.
Es scheint, ich habe zwei Möglichkeiten.
A) Erhöhen Sie das maximale Verbindungslimit über 256. Obwohl es laut diesem Artikel nicht so einfach ist:
Standardmäßig hat der MaxClients-Parameter ein kompiliertes Hard-Limit von 256. Dies kann jedoch durch erneutes Kompilieren von Apache geändert werden. Einige Distributionen oder Hosting-Unternehmen erhöhen diese Grenze auf einen sehr hohen Wert, z. B. 512 oder sogar 1024, um mit großen Lasten fertig zu werden.
B) Suchen Sie Skripte, die zu viel Zeit in Anspruch nehmen. Dies scheint mir viel schwieriger zu sein, da die meisten Apache-Prozesse nur erscheinen und dann wieder verschwinden. Außerdem sind die PHP-Skripte meiner Websites ziemlich gut optimiert ... und auch hier sind die Serverressourcen in Ordnung:
Server load 2.69 (8 CPUs)
Memory Used 25.33% (2,039,108 of 8,048,804)
Swap Used 1.32% (54,156 of 4,095,992)
Welche Option (wenn eine davon) sollte ich wählen und wie soll ich das tun?
BEARBEITEN
Weitere Informationen: Serverversion: Apache / 2.2.23 (Unix) mod_ssl / 2.2.23 OpenSSL / 1.0.0-fips DAV / 2 mod_auth_passthrough / 2.1 mod_bwlimited / 1.4 FrontPage / 5.0.2.2635
HTTP Conf: http://pastebin.com/yBeLt6mP
Beispiel für eine paritale Anfrage: http://pastebin.com/vzUVDMPR
Schalten Sie Text-Wrap um, wenn die Paste-Bins seltsam erscheinen.