Po podrapaniu się w głowie, próbując dowiedzieć się, dlaczego moja strona reaguje tak wolno, mimo że zasoby serwera są w porządku, w końcu sprawdziłem stan Apache i znalazłem:
78 requests/sec - 0.7 MB/second - 8.5 kB/request
256 requests currently being processed, 0 idle workers
Wygląda na to, że mój apache jest dosłownie maksymalny dzięki połączeniom. Każdy, kto próbuje odwiedzić moją stronę, zostaje umieszczony na „liście oczekujących”, dopóki Apache nie będzie znowu wolny.
Wygląda na to, że mam dwie opcje.
A) Podnieś maksymalny limit połączeń powyżej 256. Chociaż zgodnie z tym artykułem nie jest to takie proste:
Domyślnie parametr MaxClients ma ustalony sztywny limit 256. Można to jednak zmienić, kompilując Apache. Niektóre dystrybucje lub firmy hostingowe podnoszą ten limit do bardzo wysokiej wartości, na przykład 512 lub nawet 1024, aby poradzić sobie z dużymi obciążeniami.
B) Znajdź skrypty, które zajmują zbyt dużo czasu. Wydaje mi się to o wiele trudniejsze, ponieważ większość procesów apache po prostu pojawia się, a następnie znika. Poza tym moje skrypty PHP są całkiem dobrze zoptymalizowane ... i ponownie zasoby serwera są w porządku:
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)
Którą opcję (jeśli któraś z nich) powinienem wybrać i jak to zrobić?
EDYTOWAĆ
Więcej informacji: Wersja serwera: 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
Konfert HTTP: http://pastebin.com/yBeLt6mP
Próbka żądania Parital: http://pastebin.com/vzUVDMPR
Przełącz zawijanie tekstu, jeśli przedziały wklejania pokazują się dziwnie.