サーバー上のすべてのサービスがダウンし、それでもpingに応答する原因は何ですか?そしてそれを理解する方法


9

サーバーが完全にダウンすること、つまり、http、ssh、ftp、dns、smtp、を基本的にすべてのサービスが応答を停止することは、数日以内にすでに2回発生しています。 、それが私を最も困惑させるものです。

私は、ユーザーの小さなグループによって使用される短いバーストでサーバーに大きな負荷(CPUとメモリ)を引き起こすいくつかのPHPスクリプトを持っていますが、通常、サーバーはこれらのバーストに完全に「耐え」、それがダウンした場合このような使用量のピークと一致することは決してありません(関連性があるとは言えませんが、それらの直後には発生しません)。

これらのクラッシュの最終的な原因を魔法のように教えてくれるようにあなたに頼んでいるのではありません。私の質問は、単一のプロセスが原因で、これらのすべてのサービスが同時に停止する可能性があるかどうかです。面白いのは、ping以外のすべてのネットワークサービスがダウンすることです。サーバーのCPUが100%消費されている場合、pingにも応答しません。(たとえば)phpスクリプトが壊れているためにApacheがクラッシュした場合、それはhttpにのみ影響し、sshやdnsなどには影響しません。

私のOSはCent OS 5.6です

最も重要なのは、サーバーをハードリブートした後、どのシステムログを見ればよいですか?/ var / log / messagesは疑わしいものを明らかにしません。

回答:


8

tl; drは依然としてpingに応答していますが、これは予想される動作です。メモリ使用量を確認してください)

ICMPエコー要求(つまり、ping)は、カーネル内のネットワークスタックによって処理され、他の依存関係はありません。

カーネルは「メモリ常駐」として知られています。つまり、常にRAMに保持され、通常のアプリケーションのようにディスクにスワップすることはできません。

これは、物理メモリが足りなくなったアプリケーションがディスクにスワップされても、カーネルはその場所に残っている状況を意味します。物理メモリとスワップメモリ​​の両方がいっぱいになると(そしてシステムがプログラムを管理できなくなると)、マシンはフォールオーバーします。ただし、a)カーネルはまだメモリ内にあり、b)カーネルはping要求に何の支援もなしに応答できるため、システムはすべてが死んでいてもpingに応答し続けます。

あなたの問題に関して、私はメモリの問題を強く疑います。「sysstat」をインストールし、「sar」コマンドを使用して、memory / cpu / load / io loadなどのログを確認します。クラッシュ時には、100%の物理とスワップの両方が使用されていると思います。

また、呼び出されているOOMキラー(メモリ不足キラー)の兆候がないか、dmesgまたは/ var / log / messagesを確認することも検討します。これは、メモリが使い果たされた場合にプロセスの強制終了を開始するカーネルの緊急システムです。その効果は、殺されているプロセスに大きく依存します。メモリを使い果たしている単一のプロセスは効率的に強制終了され、メモリが解放されますが、ApacheベースのWebサイトは、子プロセスが強制終了されるとすぐに代替プロセスを生成します。


OOM Killerの+1
HTTP500 2012年

おかげで、サーバー障害の前にRAMとスワップの両方がいっぱいだったので、これが問題であるとほぼ確信しています。(私はovhのマネージャーの統計で見ることができます)。そして、それはおそらく、大量のメモリを使用する私のクレイジーphpスクリプトの一部です。しかし、いくつかの理由で私を困惑させます。(1)PHPによって消費されたメモリは後で解放されないように見えますが、それは意味がありません。いずれにしても、私は適切なオペレーティングシステムがあまりにも多くのメモリを使用したという理由だけで1つ(またはさらにいくつかの)プロセスの完全に死ぬことを期待していない(2)...私はそれを期待
マッテオ

システムが正常に動作し続けるのに十分なRAMがない場合、メモリを要求するプログラムにメモリを割り当てることを拒否します。つまり、バグのあるプログラムや悪意のあるプログラムでもシステム全体を破壊することはできません...
matteo

3
@matteo Linuxには「オーバーコミット」と呼ばれるものがあります。1GB malloc()のRAMが実際にそれを使用することを意味するわけではないため、メモリマネージャーは、プログラムが持つメモリの量とメモリの量を追跡します。プログラムは実際に使用しており、ほとんどの場合、実際にうまく機能しています。少なくとも、複数のプログラムが実際に1GBのすべてを使いたいと思うまでは、それが持っていると考えます。
DerfK 2012年

1
@matteo これがOOMの問題であるという兆候はありません。通常、OOMキラーは特定の条件を満たす特定のプロセスを選択しますが、常にsshのようなデーモンを強制終了するとは限りません。これは間違いなくI / O側です。私の回答で要求したとおり、ハードウェアの状況や仕様を説明していませんでした。
ewwhite 2012年

5

通常、これはI / Oまたはディスクサブシステムの問題です。多くの場合、これは非常に高いシステム負荷平均と組み合わされます。たとえば、下のグラフに詳細が示されているシステムは、スクリプトが正しく実行されず、ファイルの束をロックし、4 CPUシステムで負荷が36 ...に上昇すると、応答しなくなりました(まだping可能でした)。

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

RAMで実行され、ディスクアクセスを必要としないサービスは引き続き実行されます...したがって、ネットワークスタック(ping)は稼働していますが、他のサービスはディスクアクセスが必要なときに停止します...キーが参照されているか、SSHパスワードの検索が必要です。負荷平均が30程度になると、SMTPがシャットダウンする傾向があります...

システムがこの状態になったら、nmapサーバーのIPに対してリモートを試し、何が起きているかを確認します。

これがディスクまたはストレージの問題である場合、ロギングはおそらく機能しません...

ハードウェアのセットアップについて教えてください。これは仮想マシンですか?ストレージレイアウトとは何ですか?

ロギングだけでなく、システムパフォーマンスをグラフ化して、これがいつ発生するかを理解できるかどうかを確認する必要があります。これが特定のアクティビティに関連しているかどうかを確認します。


これが問題であるとしたら、SSHにパスワードをメモリに保持するように指示する方法はあります。そのため、サーバーがこの状態であっても、少なくともsshを介してログインし、いくつかのコマンドを実行して確認できます。どうしたの?
matteo

1
I / Oの場合は、問題の原因を突き止める必要があります。それがディスクアレイのタイムアウトまたはドライバーの相互作用である場合、それは、不十分に実行されるスクリプトやリソース競合の問題とは異なります。
ewwhite 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.