Узнайте нужен ли в Вашей компании Service Desk

8 (495) 726-15-52

Анализ нагрузки на сервер

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

Обзор утилит для анализа производительности на сервере

Начнем с проверки процессора с помощью встроенной команды мониторинга производительности. Особое внимание обращаем на выделенные участки окна выдачи.

Приложения пользователей отображаются в значении us, в норме они занимают не более 20 процентов. Свободные ресурсы процессора показывает значение id, которое в идеале составляет 80-100 процентов. Wa – это показатель ожидания процессора, его готовности к выполнению команд. Если данный показатель высок, значит, время ожидания процессора слишком высокое.

Детализацию по процессам сервера поможет получить утилита mpstat из пакета sysstat. Более удобно отобразит загрузку сервера инструмент htop.

Анализ нагрузки на процессор

Когда загрузка процессора больше 20%, нужно оптимизировать приложение либо приобрести дополнительный сервер. При высоком wa выявляем объем памяти, свободной и занятой, командой free. Значение swap покажет количество памяти, резервируемой на диске в случае недостатка оперативной памяти.

Команда cat/proc/meminfo отражает использование оперативной памяти более подробно.

При повышении показателя swap придется увеличить объем оперативной памяти или приобрести дополнительный сервер. Идеальным является нулевое значение данного показателя.

Объем доступной памяти на диске поможет узнать команда df-h. Она даст полную информацию по всем разделам. В столбце Use отразится занятое место. Оптимально, когда занято не более 90 процентов диска.

Сетевой трафик в онлайне показывает утилита cbm. Если ее показатели предельно высоки, возможно, придется апгрейдить действующий сервер.

Утилита dstat служит для отражения общей статистики сервера в онлайн-режиме. Столбец total-cpu-usage покажет загрузку процессора, dsk/total — загрузку диска, net/total — загрузку сети.

В целях предупреждения проблем желательно использовать системы автоматического мониторинга данных характеристик, которые помогут оперативно выявить причины нагрузки на сервер.

Анализ работы сервера на примере MS SQL Server

Во-первых, получим информацию о работе пользователей и расходуемых ими ресурсах. При анализе конкретного запроса используется группа команд SET STATISTICS * ON с различными аргументами. При этом аргумент TIME показывает затраты процессора, а IO – дисковые операции. Группа параметров Include * также будет полезна. При этом Client Statistics поможет оценить объем сетевого трафика, а Actual Execution Plan и Live Query Statistics помогут проанализировать алгоритм выполнения запроса.

Во-вторых, анализируем нагрузку от приложения в конкретной ситуации, связанной с определенным действием пользователя, нажатием кнопки. Для этого понадобится SQL Server Profiler. Запускаем, подключаемся к серверу, выбираем способ профилирования – стандартный или с добавлением фильтров и событий. В последнем случае для показа всех событий и фильтров отмечаем галочками пункты группы Show All: Events и Columns. Есть характеристики, при выборе которых можно зафиксировать внешние sql-вызовы к серверу. Более подробные настройки желательно смотреть в документации для версии продукта, операционной системы. Помимо перечисленного, в профайлере можно анализировать и другие события, можно заложить план выполнения, сохранить итог в таблицу или файл.

В-третьих, возможна ситуация, при которой нужно сделать анализ всей активности пользователя, выявить причину зависания сервера. Тут помогут параметры группы Sys.dm_exec с дополнительными аргументами. Рекомендуется обратиться к актуальной документации на версию ПО.  Сводную статистику по запросам выводит команда sys.dm_exec_query_stats.

Нагрузка от dns сервера

DNS-сервером могут называть приложение для ответа на запросы DNS или хост с данным приложением. Запрос посетителя в первую очередь поступает на DNS сервер, который возвращает IP-адрес приложения. Затем http-запрос отсылается на сервер приложения, после чего приходит ответ. Стандартно в А-записи домена присутствует один IP-адрес, но можно указать несколько адресов, что позволит направить посетителей одного домена на разные адреса, сбалансировав нагрузку. Это принцип циклического алгоритма Round Robin.

Используется также направление клиентов на разные IP-адреса по территориальному принципу, сервис GEO DNS.

Нагрузка от почтового сервера

Зачастую повышение нагрузки вызвано рассылкой спама. Это может произойти в случае взлома почтового сервера и загрузки хакерских скриптов либо намеренной рассылки большого количества писем пользователями сервера. Если есть подозрения, нужно выполнить сканирование сайта на взлом, заражение и хакерские скрипты. Такую задачу выполняет, например, сканер AI-Bolit.

Apache создает нагрузку на процессор

Это возможно при некорректном использовании скриптов. Существуют модули Apache для проверки: mod_performance и mod_status. В случае выявления неправильной работы скриптов, создания повышенной нагрузки на сервер необходима их оптимизация. Причинами перегрузки также может быть работа с аудио и видео потоками или использование модуля сжатия данных mod_gzip.