Как понять какой процесс занял процессорное время некоторое время назад на сервере Ubuntu 22.04?
У нас работает виртуальная машина и раз в сутки нагрузка на процессор становится почти 100% и приложение, которое крутится в виртуалке - вылетает. При этом зайти на виртуалку невозможно ресурсов процессора не хватает, чтобы по ssh пустить. Помогает только перезагрузка. При этом после перезагрузки все параметры в норме и посмотреть по htop, atop и т.д. виновника не получается. Есть какой то способ выловить процесс, который жрет ресурсы - по журналу или может какой сервис мониторинга несложный можно запустить?
Ответы (1 шт):
Если процесс занимал цпу, а потом резко перестал его занимать, то возможно его прибил OOM. Посмотрите dmesg
dmesg -T | egrep -i 'killed process'
Если процесс не убит, то посмотрите столбец time+ в htop. Время накапливается. Если процесс занимает много цпу - время накапливается быстрее.
Некоторые хостинги (там где виртуалки стоят меньше $2) шарят ядра. Запускают 30 виртуалок на 16 ядрах. тогда 100% загрузки цпу может происходить не на вашей виртуалке, а на соседской. Это можно приметить когда красная полоска в htop больше половины. Или обратите внимание на индикаторы wa, hi, st в top