web-dev-qa-db-ja.com

私のLinuxサーバー「作成されたプロセスの数」と「コンテキストスイッチ」は信じられないほど急速に成長しています

サーバーで奇妙な動作があります:-/。 OpenVZ VPSです(_/proc/user_beancounters_が存在し、_df -h_が/ dev/simfsドライブを返すため、OpenVZだと思います。また、ifconfigは_venet0_を返します)。 _cat /proc/stat_を実行すると、毎秒約50〜100のプロセスが作成され、約800k〜1200kのコンテキストスイッチが発生することがわかります。そのすべての情報は、サーバーが完全にアイドル状態であり、トラフィックもプログラムも実行されていない状態です。

上は、負荷平均が0でCPUが100%アイドル状態であることを示しています。

不要なサービス(httpd、mysqld、sendmail、nagios、named ...)をすべて閉じましたが、問題は引き続き発生します。私も毎秒_ps -ALf_を実行しますが、変更は見られません。毎回新しいpsプロセスのみが作成され、PIDは以前とまったく同じ+ 1であるため、新しいプロセスは作成されません。作成されたので、_cat /proc/stat_で成長するプロセスはスレッドでなければならないと思いました(はい、_/proc/stat_のprocessesは、次のようにスレッドの作成もカウントしているようです: http:// webcache.googleusercontent.com/search?q=cache:8NLgzKEzHQQJ:www.linuxhowtos.org/System/procstat.htm&hl=es&tbo=d&gl=es&strip=1 )。

_/proc_ dirに変更し、_cat [PID]\status_を実行しました。すべてのPIDはls(カーネルのものを含む)でリストされており、どのプロセスでも_voluntary_ctxt_switches_または_nonvoluntary_ctxt_switches_は_cat /proc/stat_と同じ速度(わずか数十/秒)で成長し、Threadsも同じままです。

すべてのプロセスに対して_strace -p PID_を実行したので、スレッドなどをクレートしているプロセスがあるかどうかを確認できますが、少し動きのあるプロセスはsshだけで、その動きはread/write操作は、データが端末に送信されているためです。

その後、_vmstat -s_を実行し、forksが_/proc/stat_のprocessesと同じ速度で成長していることを確認しました。 http://linux.die.net/man/2/fork が言うように、各fork()は新しいPIDを作成しますが、サーバーのPIDは増加していません。

私が考えることができる最後のことは、_proc/stat_と_vmstat -s_が示すすべてのプロセスデータが同じマシンに保存されている他のすべてのVPSと共有されているということですが、それが正しいかどうかはわかりません。 。誰かがこれに光を当てることができれば、私は本当に感謝しています。

あなたの場合、カーネルが/ proc/statの一部またはすべての値を仮想化していないと思います。したがって、表示されているのは、他のコンテナーまたはハードウェアノード自体のアクティビティが原因であるはずです。

特定のカーネルバージョンについて言及していないため、確認できませんが、同様の問題が http://forum.openvz.org/index.php?t=msg&goto=44507& で説明されています。 =。

PS:代わりに/ proc/vz/vestatをチェックしてください。

2
joechip

ロードバランサーの背後に2つの同一のubuntuサーバーを持っている人について、ここで少なくとも1つの同様の質問を見ました...そして私が彼に言ったことをお話しします:

syspro(「システムプロファイラー」)

または、/ etc/security/limits.confにいくつかの制限を詰め込んでみてください。両方のマシンに制限を適用し、表示される実行可能ファイルを比較します。少なくともプロセスまたはスレッドにフラグを立て、容疑者のリストを絞り込みます。

man limits.conf:ファイル記述子、memロック、スタックサイズ、CPU時間、ニースレベルなどのハードとソフト

0
ArrowInTree