четверг, 19 сентября 2013 г.

Основные команды для обнаружения виновника нагрузки OpenVZ контейнеров

Добрый день!

Сегодня отвечал на тестовый вопрос для одной конторы и был такой вопрос: На OpenVZ ноде LA достигает 300. Как понять причину повышения нагрузки? Напишите команды для анализа проблемы и вероятные причины начиная с самой вероятной.

Решил провести синтетический тест. Так как у меня есть десктопный компьютер с Proxmox на борту, который включает в себя KVM и OpenVZ. Я создал 3 OpenVZ контейнера с Debian 6 на борту.

На каждом из контейнеров я запустил по 10 процессов cpuburn (утилита для синтетической нагрузки процессора).


И вот, что получилось:
# uptime

Видим, что LA в районе 30. Правильно, ведь я запустил 3 контейнера по 10 процессов cpuburn.

Для начала давайте посмотрим, какие контейнеры у нас есть и какие запущены: 
# vzlist -a

Проверим используемую память нашими контейнерами:
# vzmemcheck -vA
Ага! Видим, что память не так уж и заполнена (200-250 мегабайт, хотя я выделал по 1GB).

Посмотрим LA каждого контейнера:
# vzlist -o veid,laverage
Видим, что на всех контейнерах LA за 1 минуту равно 10. Это довольно плохо тем более при 1 CPU.

Так как это синтетический тест, то попробуем разобраться с одним контейнером. Давайте для начала ограничим использование процессора контейнером с CTID равным 100.
# vzctl set 101 --cpulimit 15 --save

Так же получить более адекватную информацию о памяти можно с помощью:
#vzcalc -v 100

Давайте же посмотрим, что за процессы так грузят процессор:
# vzctl exec 100 top -b -n 1

Видим процессы burnBX с PID'ами: 2380, 2382, 2384, 2385, 2387, 2388, 2397, 2399, 2400, 2402
Убьем их по очереди:
# vzctl exec 100 kill -9 2380
# vzctl exec 100 kill -9 2382
....

И выведем опять top:
# vzctl exec 100 top -b -n 1
И видим, как стремительно падает LA.

А помните мы ограничили контейнер 101 процессорными мощностями в 15% ? Давайте посмотрим uptime хост системы:

И видим, что LA равно 12.00, а было 30.
10 LA мы убрали убив 10 процессов на контейнере 100 и 8 LA (еще не успело сойти до 8.5 LA) мы уменьшили потребление контейнера 101. Вот так мы вычислили виновников и наказали их!



1 комментарий: