Почесавши голову, намагаючись зрозуміти, чому мій сайт реагує так повільно, хоча ресурси сервера добре, я нарешті перевірив стан Apache і виявив:
78 requests/sec - 0.7 MB/second - 8.5 kB/request
256 requests currently being processed, 0 idle workers
Виявляється, мій апаш буквально заповнений зв’язками. Кожен, хто намагається завітати на мій сайт, потрапляє до списку очікування, поки Apache знову не буде вільним.
Здається, у мене є два варіанти.
A) Підвищення максимальної межі з'єднання вище 256. Хоча згідно з цією статтею це не так просто:
За замовчуванням параметр MaxClients має компільований жорсткий ліміт 256. Це можна змінити, перекомпілювавши Apache. Деякі дистрибуції або хостингові компанії підвищують цей ліміт до дуже високого значення, наприклад 512 або навіть 1024, щоб впоратися з великими навантаженнями.
В) Знайдіть сценарії, які займають занадто багато часу. Мені це здається набагато складнішим, оскільки більшість апаратних процесів просто з'являються, а потім знову зникають. Крім того, на моїх сайтах PHP-сценарії оптимізовані досить добре ... і ще раз серверні ресурси чудово:
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)
Який варіант (якщо будь-який з них) я обрав і як це зробити?
EDIT
Більше інформації: Версія сервера: 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: http://pastebin.com/yBeLt6mP
Зразок часткового запиту: http://pastebin.com/vzUVDMPR
Увімкніть перемотування тексту, якщо папки-кошики виглядають дивними.