Размер VIRT не очень полезен. Именно все виды страниц расширенной памяти действительно не используются. Взгляд на RES вместо этого. RES минус SHR ближе к Вашему фактическому объему потребляемой памяти для каждого процесса.
RES 60 м на некоторых процессах немного выше, чем я ожидал бы. Вы используете какие-либо модули (mod_perl, mod_php, mod_python), которые, вероятно, выделят большую память?
Вы можете использовать сторожевой таймер, например 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) ).
Предполагается, что у вас есть набор процессов, на которые вы можете нацелить такой мониторинг. Предположительно, вы подозреваете, что проблема связана с определенным приложением.
Когда ваш Лос-Анджелес поднимается и вы не можете войти через ssh, попробуйте Gray Goo крошечный доступный и надежный сервер и клиент удаленного выполнения команд, предназначенный исключительно для чрезвычайных ситуаций:
Загрузка - это совокупное значение задач с обработкой, оставшейся для выполнения.
Это мера оставшейся обработки, оставшейся после завершения каждого процесса. учитывая справедливый кусок CPU. По сути, он позволяет оценить, насколько хорошо система справляется с конкуренцией ресурсов между процессами.
IOWait также может увеличить нагрузку, если процессы вызывают большое использование ввода-вывода, что может указывать на проблему с памятью (используя слишком много и агрессивно свопинг) или лежащая в основе проблема ввода-вывода. Если это всего лишь один процесс, который использует множество операций ввода-вывода, он обычно все равно будет наказан без особого влияния на другие процессы.
Я не думаю, что вы можете просто убить один процесс, чтобы исправить такую проблему, поскольку проблема возникает из-за некоторые процессы требуют ЦП.
Вот простой сценарий 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