Бытрый поиск
Search

Поиск нагрузки на сервере VPS/VDS

Если Вы обнаружили, что сайт внезапно начал тормозить, то возможно причиной тому является нагрузка на сервере. Нагрузка может быть связана как с несоответствием потребляемых вашим сайтом ресурсов, выбранным тарифом, так и атакой на сайт. Постараемся выяснить и проверить причины нагрузки.
Главным инструментом в этом деле станет команда консольная команда «top».

top

Программа «top» дает представление о работающей системе в реальном времени.
Для запуска программы, подключитесь к Вашему серверу по SSH, введите команду «top» и нажмите клавишу «Enter», запуститься программа с отображением всех запущенных процессов на сервере.

В верхней части отображается краткая информация о используемых ресурсах В нижней части – список запущенных процессов Разберем несколько параметров отображаемых программой.
Load Average — среднее значение загруженности системы за период времени (в дальнейшем LA). Три значения показывают усреднённую нагрузку за последние 1, 5 и 15 минут. Можно найти множество противоречивых статей, какое значение считать нормальным. Обычно принимается, что значение 0 это простой ядра, а значение 1 это полная нагрузка ядра. Оценить показатель средней нагрузки можно только зная количество ядер в системе.

Параметр Cpu
Строка Cpu показывает сразу несколько параметров нагрузки:

  • us (user) - Использование процессора пользовательским процессами
  • sy (system) - Использование процессора системным процессами
  • ni (nice) - Использование процессора процессами с измененным приоритетом с помощью команды nice
  • id (idle) - Простой процессора. Можно сказать, что это свободные ресурсы
  • wa (IO-wait) - Говорит о простое, связанным с вводом/выводом
  • hi (hardware interrupts) - Показывает сколько процессорного времени было потрачено на обслуживание аппаратного прерывания
  • si (software interrupts) - Показывает сколько процессорного времени было потрачено на обслуживание софтверного прерывания
  • st (stolen by the hypervisor) - Показывает сколько процессорного времени было «украдено» гипервизором

Нагрузка на процессор (параметры sy, us, ni)

Высокие значения sy, us и ni самые понятные и простые для диагностики, поскольку показывают нагрузку на CPU, создаваемую запущенными программами. Смотрим в выводе команды top процессы по столбцу %CPU и оптимизируем их при необходимости. Либо просто добавляем мощность CPU на сервер.

Нагрузка ввода-вывода (параметр wa)

Высокие значения wa, а также высокий LA, говорят о простое процессов в состоянии D-state, связанном с дисковой подсистемой или с сетевыми проблемами.

Упрощенная модель состояний в Linux

D-state — состояние непрерывного сна (процессы, которые ожидают освобождения потока ввода-вывода)
R-state — процесс активен в настоящее время (выполняется в данный момент)
S-state — состоянии ожидания (sleeping), т.е. он ожидает какого-то события или сигнала
Т-state — процесс приостановлен сигналом STOP или выполнением трассировки
Z-state — «зомби», процесс, завершивший свое выполнение, но присутствующий в системе, чтобы дать родительскому

Посмотреть состояние процессов в системе можно с помощью команды ps с опциями: ps aux

Пример нахождения причин высокого wa и load average

Смотрим командой ps aux | grep D процессы в состоянии D.