LINUX.ORG.RU
ФорумAdmin

Как убить самый прожорливый прцесс

 proccess kill,


0

1

Всем добрый день!

Подскажите пожалуйста как найти id прцесса который потребляет памяти больше определенного значения для того что бы его убить.

В итоге хочется сделать скрипт и запускать его по крону. ОС: ubuntu server

Или может есть что то готовое для этих целей? Подскажите пожалуйста, заранее спасибо!

А чего все докапываются до самого прожорливого ? Предлагаю убивать последнего запушенного , до него всё работало. И с отслеживанием лимита тоже фигня получается, несколько виртуалок ,каждая «ограниченная», очень даже неплохо всё подвешивают.

ilovewindows ★★★★★
()
Ответ на: комментарий от Eddy_Em

он может грохнуть не то, что хотелось бы

У каждого процесса в /proc/$PID/ есть пара-тройка файлов oom_adj, oom_score, oom_score_adj Для важных процессов, например sshd, выставляется приоритет ООМ, так что его убьют в последнюю очередь.

sdio ★★★★★
()
Ответ на: комментарий от sdio

Ну дык я только вчера проверял: freecad подвесил мне систему, я жамкнул alt+sysrq+f, oom-killer грохнул firefox.

Я, конечно, понимаю, что firefox — дрянь, от которой надо избавляться (правда, пока никаких аналогов нет), но таки жрал он 350МБ оперативки и ~10% CPU, а freecad пытался 3ГБ отожрать (всю оперативку + изрядный кусок свопа) и ~300%CPU.

Eddy_Em ☆☆☆☆☆
()

настрой oom-killer, там не просто самый прожорливый процесс должен убиваться
к тому же бездумно килять процессы по крону - черевато
если очень хочется велосипед - man ps, man sort, man head, man kill

marvin_yorke ★★★
()
Ответ на: комментарий от Eddy_Em

Если я правильно помню логику НБП-убивца (oom-killer), он старается не убивать процессы с активным IO, чтобы избежать порченных файлов. Потому и не тронул freecad и убил «неактивный» firefox

sdio ★★★★★
()

который потребляет памяти больше определенного значения

а если таких процессов несколько, то какая логика должна быть?

zolden ★★★★★
()
Ответ на: комментарий от marvin_yorke

Спасибо!

Не совсем понятно как его настроить, я так понял нужно изменить значение этого файла: /proc/sys/vm/overcommit_memory в 1 или 2?

webcoderu
() автор топика
Ответ на: комментарий от webcoderu

вот, например:

vm.overcommit_memory = 2
vm.overcommit_ratio = 80
vm.dirty_bytes = 2097152
vm.dirty_background_bytes = 2097152

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

Eddy_Em ☆☆☆☆☆
()

а если этим процессом окажется сервер БД - ты ничтоже сумняшеся убьешь его ?

x905 ★★★★★
()
Ответ на: комментарий от x905

Вообще конечно хочется убивать процессы которые заняли более 4-5ГБ оперативки.

Вот и думал может грепать вывод какой нибудь команды типа top брать оттуда id процесса и убивать.

В нормальном режиме для моего сервера ни один процесс не должен потреблять столько памяти. Конечно это временное решение, а суть проблемы кроется в другом - не нужно допускать что бы появлялись такие процессы.

webcoderu
() автор топика
Ответ на: комментарий от x905

Изначально проблема в php процессе, который запускатеся из под root, и по каким то причинам отжирает всю память (8ГБ) и остаётся только писать в тех поддержку что бы рестартанули сервер потому что даже по ssh не войти.

webcoderu
() автор топика
Ответ на: комментарий от Eddy_Em

Ещё такой вопросик, а можно логировать информацию о процессах которые убиваются oom-killer'ом или что то подобное?

webcoderu
() автор топика
Ответ на: комментарий от webcoderu

Это лучше тех, кто ближе с ядром знаком, спрашивать. post-factum'а, например.

Eddy_Em ☆☆☆☆☆
()

Подскажите пожалуйста как найти ногу которая занимает места больше определенного значения для того что выстрелить в нее.

fixed.

Этот скрипт будет регулярно убивать апач и системные демоны. Слабо придумать некостыльное решение?

Kor03d ★★
()
Ответ на: комментарий от post-factum

Плюется:

tailf /var/log/messages.log
…
Jul 10 11:40:49 localhost kernel: [ 1940.834987] SysRq : Manual OOM execution
…

Но никаких упоминаний о том, что прибит firefox.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от webcoderu

нужно изменить значение этого файла: /proc/sys/vm/overcommit_memory в 1 или 2?

нет - это совсем другая история

megabaks ★★★★
()
Ответ на: комментарий от alpha4

Ой не факт, если руками не задать oom-приоритеты.

warp
()
Ответ на: комментарий от Eddy_Em

Этот пример связан с методом выделения памяти. Ты хоть почитай что делает vm.overcommit_memory = 2 . Не копируй настройки не глядя.

sdio ★★★★★
()
Ответ на: комментарий от sdio

Ты хоть почитай что делает vm.overcommit_memory = 2

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

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

Ну ладно.

sdio ★★★★★
()
Ответ на: комментарий от webcoderu

и по каким то причинам отжирает всю память (8ГБ) и остаётся только писать в тех поддержку

ulimit

KRoN73 ★★★★★
()

Как убить самый прожорливый прцесс

В твоём случае это будет не убийстово, а суицид (одновременно сдохнет и самый бесполезный «процесс»)

anonymous
()
Ответ на: комментарий от Pinkbyte

ты не пользуешься явой

Явно не пользуюсь, но что-то ее в зависимостях имеет. Кажется, либреофис.

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.