Найти тему

Linux. Процесс пошел в разнос. Что делать?

Бывает так, что работающая нормально система начинает жутко тормозить, а в журнал сыпятся какие-то ошибки. И тут стоит задача найти это слабое звено, которое начало издеваться над системным ресурсами. Обычно, таким звеном оказываются процессы, которые вышли из под контроля и начали поглощать значительную часть процессорного времени или какой-либо памяти. Причин такого поведения процессов, может быть много. Это и ошибки в программном коде, например одна и та же операция может запускаться в бесконечном цикле, и даже не удачно удаленный лог файла может привести к такой ситуации.

Первым делом надо выяснить, с чем мы имеем дело. Первым делом обращаем внимание на параметр Load Average. Узнать его значение можно командами uptime, top или ps. Это значение обычно означает среднее количество процессов запущенных за предыдущие 1, 5 и 15 минут. Эти значения не должны превышать количество ядер процессора, имеющихся в системе.

Также загрузку процессора можно посмотреть в top, если она близка к 100%, то вероятно это и есть узкое место.

Загруженная под завязку файловая система тоже может приводить систему в нерабочеспособное состояние. В этом случае вам пригодятся команды df и dh.

Команда df показывает сколько дисковой памяти занимает смонтированная в нее файловая система. Например,

$df -h
Filesystem Size Used Avail Use% Mounted on
udev 472M 0 472M 0% /dev
tmpfs 98M 460K 98M 1% /run
/dev/vda1 9.4G 3.2G 5.8G 36% /
tmpfs 489M 28K 489M 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 98M 0 98M 0% /run/user/58052889

Здесь я использовал опцию -h, которая приводит размеры в единицы, понятные человеку. Ну и далее команда du -h, начиная с первого каталога. пока не найдет файл, который занял много места.

Но бывает так, что команда du не покажет вам этот самый большой файл, при этом команда df нам говорит обратное, что система чем-то забита. Такое поведение возможно в тех случаях, когда файл удален, но при этом используется какой-то программой, и следовательно продолжает занимать место на диске. Для выяснения какой процесс какой файл продолжает держать на диске, используйте команду lsof или fuser.

Заключение.

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