Назад | Перейти на главную страницу

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

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

Вверху показано 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, хранящимися на той же машине, но я не знаю, правильно ли это ... Если кто-то может пролить свет на это, я был бы очень благодарен.

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

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

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

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

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

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

man limits.conf: жесткий и мягкий для файловых дескрипторов, память заблокирована, размер стека, время процессора, хорошие уровни и т. д.