У меня странное поведение на моем сервере: - /. Это 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: жесткий и мягкий для файловых дескрипторов, память заблокирована, размер стека, время процессора, хорошие уровни и т. д.