Сервер медленно отдаёт статику (Apache KeepAlive)

Причин того, что сервер “тупит” и медленно отдаёт статическую информацию (картинки, css и js файлы) может быть немало. Но случилось так, что найти эту причину оказалось не так просто и очевидно.

Предыстория. Тестовый выделенный сервер (датацентр в Германии) Apache+PHP+MySQL работал нормально, даже “летал”, но с какого-то момента произошло необъяснимое: страницы стали грузиться по нескольку десятков секунд..периодически вообще уходя в аут. Явно было видно что серверный php код отрабатывает быстро (приложение профилировалось), а дальше..доолгая загрузка статики, иногда ошибки, что такой файл отсутствует вообще, но при обращении на него он находится там,где ему и место.

Парадокс состоял в том, что с разных провайдеров эта картина выглядела диаметрально противоположно: у одних – тупит (мы видим эту жесть), у других – всё так же “летает” (админ сервера, который и не мог увидеть и понять проблемы – уже такие хитромудрые догадки пошли: закэшеные NS’ы и тп в том же духе).

Снесли ось (CentOS), поставили всё с нуля – та же картина.

И тут уже полезли ковырять конфиг апача. Проблема решилась включением режима KeepAlive:

1. В файле конфига /etc/httpd/conf/httpd.conf  строку KeepAlive Off заменяем на KeepAlive On.

2. Настройки MaxKeepAliveRequests и KeepAliveTimeout выставляем по вкусу

3. Перезапускаем Apache: >service httpd restart

Подробнее об этом режиме и его настройках, а также о возможных последствиях его использования можно почитать в мануале или немного погуглив (не об этих настройках пост).

Таким образом, напрашивается только один вывод – соединение с сервером постоянно разрывалось и статика тянулась мелкими кусочками. Непонятным фактом осталось то, почему с разных провайдеров это происходило по-разному.

Добавить комментарий

Ваш e-mail не будет опубликован.