私のサーバーの状態を確認する方法

私のサーバーの状態を確認する方法

topコマンドを使用してサーバーの状態を確認する方法、サーバーを変更する必要があるのか​​、リソースを追加するのかを知りたいです。以下はtop私のサーバーからのコマンド出力です。

ここに画像の説明を入力してください。

以下はいくつかの異なる事実です。平均負荷範囲は28.XXから77.XXです。 - CPU %id はほとんど 10.0 から 22.0 の間であり、時には 30.0 に落ちる場合もあります。 - サーバーは仮想マシンで実行されます。 - 仮想マシンは、Intel(R)Xeon(R)CPU E5-2403 0 @ 1.80GHz、4コアを搭載したサーバーにインストールされています。 - Webアプリケーション、データベースサービス、memcached、Webサーバー、およびその他の関連サーバーアプリケーションが長い間実行されています。注。 - Presence.pyサービスは、最も作業量の多いサービスで、現在703ノードの存在を確認しています。

システムにRAMを追加する必要はないと言いたいのですが、CPUが圧倒されているようです。それでも100〜200のノードを追加する必要があるため、サーバーはこれを処理できないようです。私は正しいですか?

編集:存在.pyの背景

Presence Service(presence.py)は、(コア数の2倍)プロセス、マスタープロセス、および(コア数の2倍 - 1)ワーカープロセスで実行される独自のアプリケーションです。登録された各ノードに対してワーカープロセスの1つにスレッドが作成されるため、700個のノードがある場合、各ワーカープロセスは約100個のスレッドを実行します。各スレッドはTelnetまたはHTTPを介して1秒間に1回、そのノードの状態を確認するため、各プロセスの負荷を想像できます。これは、各スレッドがネットワークI / Oを待機または待機するのにほとんどの時間を費やすことを意味します。

Presenceサービスは、350ノードの負荷から始めてうまくいっていましたが、しばらく負荷を増やし始め、600ノードを超えて少しゆっくり戻り始めました。たとえば、次のコマンドを実行すると、curl www.google.com実行に数秒かかります。

ベストアンサー1

存在.pyをより軽いソリューションに置き換えます。それはまるで

cat config.txt | while read C; do
    C=($C)
    nmap -p ${C[1]} ${C[0]} | grep open || mail -s "Warning; port ${C[1]} on server ${C[0]} is unreachable" ${C[2]} < /dev/null &
done;

crontab同様の構成の見積もり

echo -e "127.0.0.1\t22\[email protected]" > config.txt

ポートを確認するためにかなりのCPUを使用する理由はありません。これは厳密にIO制限されたタスクです。 (CPU時間がますますuser短くなるのがわかりますwait。)

このBashの例は重い解決策(再利用不可能)と見なされます。 Cでコーディングするのが本当に簡単な場合は... Pythonがオブジェクトのリサイクルに失敗したり、他の原因で不要な作業を監視したりできます。非効率的なコードに多くのリソースを投資することは可能ですが、単に非効率性を変更する方が安いことがよくあります。また、欲しいかもしれませんネットワークスタックの調整

おすすめ記事