Из-за временных ограничений на территории РФ наблюдаются проблемы с оплатой. Если платёж не проходит, оставьте запрос в службу поддержки.Служба поддержки работает 24/7 — мы всегда на связи по вопросам хостинга и серверов.Открыт прием заявок на аренду выделенных серверов и размещение оборудования в дата-центре.Напоминаем: рекомендуем включить резервное копирование для дополнительной защиты данных.Доступна новая линейка VPS/VDS с NVMe-дисками и увеличенной производительностью.Технические работы на части серверов завершены. Все сервисы работают в штатном режиме.
Статья3 мин чтенияПросмотры1

Как найти процесс, который нагружает процессор

Используем ps и top для короткой диагностики CPU: сравниваем снимок и текущую активность, учитываем несколько ядер и не останавливаем процессы наугад.

Комментарии 0

Процессор рядом с сокетом и системой охлаждения
В этой статье

Сайт стал отвечать медленно, а график процессора вырос. Нужно определить, кто выполняет работу и совпадает ли она по времени с задержками. Самый заметный процесс в одном снимке не обязательно является причиной: он мог активно работать раньше или выполнять полезное фоновое задание.

Получите список кандидатов

Примеры предназначены для Linux с procps. Команда ниже показывает процессы, сортируя их по доле CPU:

ps -eo pid,ppid,user,stat,pcpu,pmem,comm --sort=-pcpu

В выводе есть идентификатор процесса, родитель, пользователь, состояние и короткое имя команды. Мы намеренно не выводим полную командную строку: в её аргументах иногда оказываются секреты. Если список передаётся в поддержку, проверьте его на чувствительные имена пользователей и приложений.

У ps доля CPU рассчитывается за время жизни процесса. Она удобна для отбора, но не заменяет наблюдение за последними секундами. Долго работающий сервис с недавним всплеском может не оказаться на первом месте.

Сравните несколько интервалов

Для краткого наблюдения можно получить три пакетных снимка top:

top -b -d 2 -n 3

Интервал между обновлениями составляет две секунды. Вывод может быть длинным, поэтому смотрите на повторяющиеся процессы и общую картину CPU, а не только на первую строку. Первый снимок не используйте как единственное доказательство текущей нагрузки.

На многоядерной системе процесс может показывать больше ста процентов в принятом top режиме подсчёта. Это не обязательно ошибка измерения: несколько потоков используют несколько логических процессоров. Важны доступные ресурсы и настройки отображения.

Разделите вычисления и ожидание

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

Низкая загрузка CPU при медленном сайте не снимает проблему. Приложение может ждать базу данных, диск или внешний сервис. Высокая средняя нагрузка системы также не равна проценту занятости процессора: это другой показатель.

Проверьте рабочий контекст

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

Идентификаторы процессов переиспользуются. Не сохраняйте номер для отложенного вмешательства без повторной проверки владельца и назначения. Завершать найденный процесс по одному снимку нельзя: он может проводить важную операцию или автоматически запускаться заново.

Результат короткой диагностики

Запишите время, команду, пользователя, устойчивость нагрузки и действие, которое выполнялось на сайте. После исправления сравните те же показатели при похожем потоке запросов. Цель — установить, какой сценарий потребляет CPU и влияет ли он на пользователей, а затем выбрать изменение, результат которого можно измерить.

Обсуждение 0

Делись опытом и задавай вопросы. Комментарии без ссылок появляются после проверки редактором.

Пока никто не написал. Начни обсуждение.