Мой Linux-сервер "Количество созданных процессов" и "Переключатели контекста" невероятно быстро растут

У меня странное поведение на моем сервере:-/. Является ли OpenVZ VPS (я думаю, это OpenVZ, потому что /proc/user_beancounters существует и df -h возвращает /dev/simfs диск. Также ifconfig возвращается venet0). Когда я делаю cat /proc/statЯ вижу, как каждую секунду создается около 50-100 процессов, а происходит около 800–1200 тыс. Переключений контекста! Вся эта информация находится на полностью бездействующем сервере, ни трафике, ни запущенных программах.

В верхней части отображается средняя загрузка 0 и 100% простоя процессора.

Я закрыл все ненужные сервисы (httpd, mysqld, sendmail, nagios, named...) и проблема все еще возникает. я делаю ps -ALf каждую секунду тоже, и я не вижу никаких изменений, только новый ps процесс создается каждый раз, а PID точно такой же, как и раньше + 1, поэтому новые процессы не создаются, поэтому я подумал, что процесс растет в cat /proc/stat должно быть темы (да, кажется, что processes в /proc/stat также учитывает создание потоков: http://webcache.googleusercontent.com/search?q=cache:8NLgzKEzHQQJ:www.linuxhowtos.org/System/procstat.htm&hl=es&tbo=d&gl=es&strip=1).

Я изменился на /proc реж и готово cat [PID]\status со всеми PID, перечисленными с ls (Включая ядра) и в любом процессе voluntary_ctxt_switches ни nonvoluntary_ctxt_switches растут с той же скоростью, что и cat /proc/stat делает (всего несколько десятков в секунду), Threads держит то же самое.

я сделал strace -p PID ко всему процессу, чтобы я мог видеть, если какой-либо процесс создает потоки или что-то еще, но единственный процесс, который имеет некоторое движение ssh и это движение read/write операции из-за отправки данных на мой терминал.

После этого я сделал vmstat -s и увидел, что forks растет с той же скоростью processes в /proc/stat делает. Как говорит http://linux.die.net/man/2/fork, каждый fork() создает новый PID, но мой PID сервера не растет!

Последнее, о чем я могу думать, это то, что все обрабатываемые данные, которые proc/stat а также vmstat -s show используется всеми остальными VPS, хранящимися на той же машине, но я не знаю, правильно ли это... Если кто-то может пролить свет на это, я был бы очень благодарен.

2 ответа

Решение

В вашем случае я бы предположил, что ваше ядро ​​не виртуализирует некоторые или все значения в / proc / stat, поэтому то, что вы видите, должно быть вызвано активностью в других контейнерах или на самом аппаратном узле.

Вы не упомянули конкретную версию ядра, поэтому мы не можем проверить наверняка, но аналогичная проблема обсуждалась в http://forum.openvz.org/index.php?t=msg&goto=44507&;.

PS: проверьте /proc/vz/vestat вместо этого.

Я видел по крайней мере один подобный вопрос о ком-то с двумя одинаковыми серверами Ubuntu за балансировщиком нагрузки... и я скажу вам то, что я ему сказал:

syspro ("системный профилировщик")

или попробуйте добавить некоторые ограничения в /etc/security/limits.conf. Примените ограничения к обеим машинам и сравните, какие исполняемые файлы отображаются. Это как минимум помечает процесс или поток и сужает список подозреваемых.

man limit.conf: hard & soft для файловых дескрипторов, mem заблокирован, размер стека, время процессора, хорошие уровни и т. д.

Другие вопросы по тегам