Как узнать, какие процессы выполнялись одновременно в прошлом?

Меня просят расследовать предупреждение о высокой загрузке ЦП, которое произошло сегодня утром. Я использовал sar -p и увидел высокую загрузку ЦП в то время

Затем я использовал ps -eo pcpu, pid, user, args | sort -r -k1 | less , чтобы составить список 10 основных проблем с памятью в этот час

Теперь, как мне узнать, какие процессы вызвали узкое место в это конкретное время утром. Я разработчик java, а не специалист по Linux.

Возможно ли это вообще?

4
задан 28 January 2016 в 21:43
1 ответ

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

  1. использовать скрипт, который регулярно записывает необходимые данные в лог-файл. Вы можете использовать cron для записи вывода ps (и других команд) каждые x минут в лог-файл.
  2. Лучше использовать специализированную программу, которая делает это за вас. atop очень хорош в этом, она заботится о сохранении лог-файла.

atop доступен через EPEL repo для CentOS/RHEL/Fedora и через репозиторий Debian/Ubuntu по умолчанию.

Atop можно использовать как обычную утилиту для работы с топом в реальном времени, с немного другим поведением (смотрите страницу manpage для нажатия клавиш).

Самое интересное: После установки демон начинает протоколировать данные в /var/log/atop и вы можете снова читать эти файлы с помощью atop:

atop -r /var/log/atop/atop_20160128

У вас есть доступ ко всем функциям типа 'top' (сортировка/смотр использования памяти/CPU/IO и т.д.) и вы можете перепрыгнуть на 10 минут вперед по времени с помощью 't' и на 10 минут назад с помощью 'T' или перепрыгнуть в определенное время с помощью 'b'.

Посмотрите на manpage atop, и в google есть много советов на этот счет.

Может быть, есть и другие решения, но atop прост в понимании и использовании и хороший старт перед тем, как делать еще несколько индивидуальных настроек.

.
7
ответ дан 3 December 2019 в 02:57

Теги

Похожие вопросы