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

Выяснение причин замедления работы сервера

У меня есть потенциальный клиент, у которого есть php-сайт, который большую часть времени работает нормально. Однако примерно раз в неделю будет происходить задержка (медленная загрузка страницы). Я уверен, что существует множество причин, которые могут вызвать это (проблемы с сетью, неправильная установка, определенный файл php, повышенная нагрузка трафика). Однако мне нужен способ выяснить, что это вызывает. Есть ли какое-нибудь программное обеспечение для мониторинга серверов, специально разработанное для таких ситуаций?

PS: Сервер Linux

Я бы узнал следующее:

  • Влияет ли это «замедление» на всех пользователей?
  • Это замедляет работу всего сайта или только определенный набор функций на сайте?
  • Происходит ли это каждый день в одно и то же время и в один и тот же день каждую неделю?

Если замедление всегда происходит в пятницу во время выхода, и приложение используется для ввода пользователями данных своих табелей учета рабочего времени за неделю, возможно, серверу просто требуется больше ЦП / памяти и / или пропускной способности, чтобы принять на себя нагрузку всех последних. минутные пользователи. Достаточно сказать, что эти типы шаблонов будет сложно отследить, не зная тонкостей приложения, его пользователей и способов использования.

Чтобы рекомендовать инструменты, нам нужно знать, на какой ОС работает ваше приложение? Windows / IIS, Linux / Apache? Однако, по моему неофициальному опыту, замедление работы сайта вызвано одной из следующих причин:

  • Плохое программирование базы данных
    • SELECT * FROM TableXYZ
    • Запросы к неиндексированным столбцам
  • Проблемы с сервером
    • Недостаточно памяти
    • Недостаточно пропускной способности
      • Сервер -> Пользователь
      • Сервер -> База данных

Чаще всего проверять (на предмет проблем, связанных с производительностью):

  • Сервер базы данных
    • Загрузка процессора
    • Доступная память
    • Disk Queue Length (исчерпано ли максимальное количество операций ввода-вывода на вашем диске?
  • Веб сервер
    • Загрузка процессора
    • Использование памяти
    • Пропускная способность для конечных пользователей
    • Пропускная способность к серверу базы данных

Для нас, работающих в среде MSSQL, включение опции Auto-Grow DB на загруженном сервере БД также может вызвать случайное замедление. Во время автоматического увеличения дисковый ввод-вывод очень тяжелый, так как файл расширяется, поэтому любые транзакции в реальном времени, происходящие в течение этого времени, будут заметно медленнее, особенно если этот сервер уже работает на предельных значениях ввода-вывода.

Чтобы решить эту проблему, мы просто увеличили объем автоматического увеличения БД в МБ до смехотворно большого числа, так что теперь это происходит только раз в год. Все еще замедление, но теперь это происходит не каждую неделю.

Действительно отличный маленький инструмент для системного мониторинга (либо специального в командной строке, либо для отслеживания тенденций, если вы настроили его для работы в фоновом режиме и регистрации данных) - это dstat. Это лучший инструмент для командной строки, который я нашел.

Одно из преимуществ состоит в том, что его единственная зависимость - от Python, поэтому вы можете запускать его прямо из дома в системе, к которой у вас ограниченный доступ, и для большинства функций не требуется root.

Вот любимый псевдоним, который дает вам информацию об использовании основных компонентов (и наиболее часто используемых процессов) каждую секунду в реальном времени:

> which dstat-long
dstat-long      dstat -cdngm --top-cpu --top-mem

Как измерить замедление? Вы используете внешние инструменты веб-мониторинга, такие как keynote или alertfox? Это было бы полезно сравнить с внутренними журналами.

У вас есть доступ к оболочке?

Установлен ли sysstat?

Если у вас есть доступ к оболочке, убедитесь, что sysstat установлен и включен. Подождите около часа, пока он соберет данные, и введите в командной строке "sar" от имени пользователя root. Если вы видите данные - отлично. А теперь оставь это. А пока прочтите руководства по sysstat или sar. Когда вы снова увидите задержку, подключитесь, запустите sar, посмотрите, что именно и когда тормозит. Увидев, когда именно и чего не хватает (ЦП / память / ввод-вывод / сеть), вы сможете лучше понять, на что смотреть.