Мой Linux-сервер "Количество созданных процессов" и "Переключатели контекста" невероятно быстро растут
РЕДАКТИРОВАТЬ: Более подробные ответы здесь: https://serverfault.com/questions/454192/my-linux-server-number-of-processes-created-and-context-switches-are-growing
У меня странное поведение на моем сервере:-/. Это VPS. Когда я делаю 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
делает (всего несколько десятков в секунду).
я сделал 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, хранящимися на той же машине, но я не знаю, правильно ли это... Если кто-то может пролить свет на это, я был бы очень благодарен.