web-dev-qa-db-ja.com

メモリとスワップがいっぱいです。sshできません。物理的な再起動以外のオプションはありますか?

誤って、ubuntuサーバーですべてのメモリを使用する(そしてスワップだと思う)いくつかのアプリケーションを実行しましたが、クラッシュし、SSHが機能せずフリーズします。次の解決策以外のオプションを知っていますか?

  1. サーバーを物理的に再起動します。
  2. プロセスが終了するまで待ちます。

sshが機能していないときにサーバーをリモートで再起動する方法はありますか?私はまだサーバーにpingを実行できるので、不適切なプロセスを強制終了したり、OSの再起動などの基本的なコマンドを実行したりするための予約済みメモリがあるかどうか疑問に思います。

*コマンドは「Nohup」で実行されたため、sshセッションを閉じて終了しませんでした。

6
Ehsan

いいえ、システムはほぼ完成しています。あなたの唯一の望みは、1つが終了するのを待つか、1つが大きくなりすぎて、OOMキラーが一掃してそれに対して何かをすることです。

システムがいわゆるスラッシングを実行しているようです。つまり、システムは使用中のシステムのメモリの内外でページを交換しているということです。これにはSSHが含まれます。

実際にはいくつかのオプションがあります。最初のオプションはもちろんサーバーを再起動することですが、それはあなたにとってローカルではないので、それはあなたにとってあまりオプションではないようです。データセンターにある場合は、データセンターに近づいて再起動することができる場合があります。データセンターに確認する必要があります。

2番目のオプションも非常に簡単です。 SSHセッションは、いくつかのものがスワップアウトされるのを待ってハングするだけなので、ttyを割り当てることができます。私は以前にこれを経験したことがありますが、応答するのを待つ必要があります。かなり時間がかかる場合があります。 CLIを取得したら、サーバーを強制終了または再起動できます。

サーバーにPINGを実行できる理由は、実際には非常に単純です。カーネルのIPスタック(IIRC)がスワップアウトされないため、ICMPが応答できます。

3番目のオプションは、事前にいくつかの設定が必要になるため、現時点では実際のオプションではないと思います。モデムをセットアップして、番号にダイヤルインしてシリアルコンソールを取得できるようにすることができます。同じように、IPMI Serial over LAN(SOL)を使用してシリアルコンソールを取得できます。また、IPMIを使用すると、サーバーを再起動できます。繰り返しになりますが、それらは設定されていないようです。

1
Squidly