Назад | Перейти на главную страницу

Задержка загрузки сайта - не из-за Apache, MySQL. Как найти причину?

Я только что переместил два сайта на новый сервер. Оба они похожи на сайты на Drupal. Один загружается нормально (1-3 секунды), а другой занимает до 12-15 секунд. После долгой регистрации и измерений я обнаружил, что большая часть задержки связана с ожиданием ответа от сервера. То есть, когда я загружаю страницу в браузере, Apache на сервере получает запрос в течение 10 секунд. Я дважды проверил записи DNS, но не нашел ничего неправильного.

Как я могу сузить круг возможных причин?

Вы захотите использовать что-то, что может заглядывать внутрь запроса для подсказок. Модуль Devel позволяет вам видеть разбивку выполняемых запросов и их продолжительность. Другие инструменты, такие как XHProf, дадут вам еще более глубокое понимание.

В конечном итоге «ожидание ответа» - отвлекающий маневр. То, что это означает, не согласуется с интуитивным прыжком, который вы, кажется, сделали. В этом случае дело не в том, что сервер задерживает свой ответ, а в том, что сервер подготовка свой ответ. Следовательно, ваша задача - выяснить, что так долго занимает сервер.

Общие причины этого, которые я видел всего за последние несколько недель:

  • Мертвые хосты memcached / redis, определенные в settings.php (особенно в недоступных подсетях RFC1918)
  • Сбежавшие запросы MySQL
  • Сервер MySQL указан как имя хоста с медленным DNS-сервером
  • Сервер MySQL настроен на поиск имен клиентских хостов (т. Е. Нет skip_name_resolve)
  • Cron не запускался какое-то время, у него большое отставание, и включен модуль "cron для бедняков"

Но опять же, это все выстрелы в темноте; вы захотите инструментировать и действовать дедуктивно, а не ХАЛЯВАпробираясь через это.