Уничтожьте процессы, если высоко загружают среднее число

Размер VIRT не очень полезен. Именно все виды страниц расширенной памяти действительно не используются. Взгляд на RES вместо этого. RES минус SHR ближе к Вашему фактическому объему потребляемой памяти для каждого процесса.

RES 60 м на некоторых процессах немного выше, чем я ожидал бы. Вы используете какие-либо модули (mod_perl, mod_php, mod_python), которые, вероятно, выделят большую память?

1
задан 27 June 2012 в 23:11
4 ответа

Вы можете использовать сторожевой таймер, например Monit , чтобы следить за процессами, которые вам нужны, и перезапускать их, если они потребляют лишние ресурсы.

Что-то вроде этого может быть использовано для мониторинга Apache:

 check process apache with pidfile /var/run/httpd.pid
       start program = "/etc/init.d/httpd start"
       stop program  = "/etc/init.d/httpd stop"
       if cpu > 40% for 2 cycles then alert
       if totalcpu > 60% for 2 cycles then alert
       if totalcpu > 80% for 5 cycles then restart
       if mem > 100 MB for 5 cycles then stop
       if loadavg(5min) greater than 10.0 for 8 cycles then stop

Итак, если процент процессора для процесса Apache или любого из его дочерних процессов превышает 40%, отправьте предупреждение. Если он превышает 80%, перезапустите Apache.

Monit также запустит Apache, если он по какой-то причине не работает, что является разумным способом поддерживать работу критически важных служб (если у вас нет чего-то вроде Upstart) ).

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

3
ответ дан 3 December 2019 в 17:14

Когда ваш Лос-Анджелес поднимается и вы не можете войти через ssh, попробуйте Gray Goo крошечный доступный и надежный сервер и клиент удаленного выполнения команд, предназначенный исключительно для чрезвычайных ситуаций:

https://code.google.com/p/greygoo/

2
ответ дан 3 December 2019 в 17:14

Загрузка - это совокупное значение задач с обработкой, оставшейся для выполнения.

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

IOWait также может увеличить нагрузку, если процессы вызывают большое использование ввода-вывода, что может указывать на проблему с памятью (используя слишком много и агрессивно свопинг) или лежащая в основе проблема ввода-вывода. Если это всего лишь один процесс, который использует множество операций ввода-вывода, он обычно все равно будет наказан без особого влияния на другие процессы.

Я не думаю, что вы можете просто убить один процесс, чтобы исправить такую ​​проблему, поскольку проблема возникает из-за некоторые процессы требуют ЦП.

0
ответ дан 3 December 2019 в 17:14

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

В этом примере сценарий убивает «именованный» процесс, если нагрузка превышает 2,5.

Если нагрузка падает ниже этого уровня, он проверяет, запущен ли named, и запускает его при необходимости.

#!/bin/bash

NOTIFY="2.5"

TRUE="1"    
FTEXT='load average:'
LOAD5MIN="$(uptime | awk -F "$FTEXT" '{ print $2 }' | cut -d, -f2 | sed 's/ //g')"

RESULT=$(echo "$LOAD5MIN > $NOTIFY" | bc)

if [ "$RESULT" == "$TRUE" ]; then
    echo "High load"
    killall -9 named
else
    pgrep named || /etc/init.d/bind9 start 1>/dev/null 2>/dev/null
fi
0
ответ дан 3 December 2019 в 17:14

Теги

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