Linuxサーバーはどのくらいの頻度で再起動する必要がありますか?


30

大規模な計算グリッドにデータを提供するWebサービスの実行に使用される多くのLinuxサーバー(SUSE 9&10)があります。最近、停止を説明するのが難しい(ハードウェアとソフトウェアのログに明らかなエラーが表示されない)ことがあり、長い稼働時間(通常200〜300日)が問題であるかどうか疑問に思っています。これらのサーバーの使用率が高い場合、定期的な再起動サイクルを検討する必要がありますか?

回答:


47

カーネルの更新後にリブートする必要があります(KSpliceを使用している場合を除く)。その他はオプションです。個人的には、メンテナンスウィンドウ中に月に1回のサイクルで再起動して、サーバーとすべてのサービスが期待どおりに戻るようにします。このようにして、システムが正常に復帰するために予定外のリブート(つまり、重要なカーネル更新)を行う必要があるかどうかをかなり確信で​​きます。サーバーとサービス(つまり、Nagios)の自動監視も、このプロセスを支援するのに大いに役立ちます(再起動し、ライトが赤くなり、できればすべて緑に戻ることを望みます)。

PS定期的にリブートする場合は、fsckチェックを調整する必要があります(つまり、チェック間のマウントカウントを適切に調整する必要があります。そうしないと、サーバーが数テラバイトのデータをfsckし始めると、2分間のクイックリブートに30分かかることがあります。通常、マウントカウントを0(tune2fs -c 0)に設定し、チェックの間隔を6か月程度に設定してから、時々fsckを手動で強制的に実行し、カウントをリセットします。


1
DRBCPを定期的にテストすることは必須であり、このタイプのチェックはその方向への素晴らしい出発点です。
スコットパック

カーネルの更新後に再起動する必要はありません-ksplice.com
raspi

1
KSpliceは正しいです。KSpliceを使用すると、ソフトウェア(カーネル、データベースなど)を実行するパッチをライブできます。ただし、OracleがKSpliceを購入したため、Oracleのものを使用していない人(最近KSpliceを購入した人)にとってはおそらく解決策ではありません。
カート

11

大幅な設定変更が行われるたびに、実際にはかなり定期的にサーバーを再起動します。緊急時にサーバーソフトウェアが手間をかけずに起動することを知っておくことが重要です。最後にしたいことは、停止から回復しようとしているが、セットアップ時にサーバーを徹底的にテストしなかったため、サーバー構成を台無しにする必要があることです。


6

実行中のカーネルバージョンを絶対に変更する必要がない限り、Linuxサーバーを再起動する必要はありません。ほとんどの問題は、構成ファイルを変更し、initスクリプトを使用してサービスを再起動することで解決できます。

リブートに注意する必要があります...サービスの構成ファイルに変更を反映せずに「オンザフライ」で何かを変更した場合、それらの変更はリブート後に適用されません。

ただし、通常、スケジュールされたシステム更新後に再起動します。一般的には必要ありませんが、私はオフィスに誰もいないときにそうします。とにかく、私がアップデートを行うことになったとき、しばしばカーネルのアップグレードがあります。


もちろん、時々再起動する必要があります。ソフトウェアを更新し、その特定のソフトウェアが現在実行されている場合、古いバージョンのコピーはまだRAMでアクティブであるため、古いバージョンのソフトウェアを使用し続けます。更新を有効にするには、そのソフトウェアを再起動する必要があります(サービスの再起動または再起動による)。一部のアプリケーションは再起動が必要で、サービスの再起動を通じて更新できません
-BlueWizard

1
@JonasDralle、サービスがアップグレードされると、サービスは自動的に停止して再起動します。そうでなければ、それはそのサービスの実装のバグです!
アレクシスウィルケ

4

実際には必要ありませんが、Linuxのメモリ処理は優れています。しかし、その長さのアップタイムがある場合は、おそらく既知の脆弱性を持つカーネルを実行しているでしょう-あなたはそれを見たいかもしれません。


3
Linuxはメモリを正常に処理できますが、個々のアプリケーションは処理できない場合があります。長時間実行すると、ヒープが断片化する可能性があります。もちろん、prefork Apache(プロセスをリサイクルする)のようなものは一般的にこれに苦しむことはありません。単一の非常に長寿命のプロセスを使用する他のもの(mysqlなど)があります。アプリケーションに依存します。
MarkR 2009年

4

最近のカーネルの更新またはlibcの更新がある場合は、再起動する必要があると思います。多くのことがlibcにリンクされているため、リブートしない限り、そのlibをメモリから完全にアンロードして新しいバージョンに置き換えることは実際には不可能です。

たとえば、/ bin / lsや/ bin内のその他の基本的なものでもlibcを使用します。コンソールを実行していてbashを使用している場合は、libcを使用しています。

$ ldd /bin/bash
        linux-gate.so.1 =>  (0xffffe000)
        libtermcap.so.2 => /lib/libtermcap.so.2 (0xb8029000)
        libdl.so.2 => /lib/libdl.so.2 (0xb8025000)
        libc.so.6 => /lib/libc.so.6 (0xb7ed9000)
        /lib/ld-linux.so.2 (0xb804b000)

$ ldd /bin/ls
        linux-gate.so.1 =>  (0xffffe000)
        librt.so.1 => /lib/librt.so.1 (0xb7f3a000)
        libacl.so.1 => /lib/libacl.so.1 (0xb7f33000)
        libc.so.6 => /lib/libc.so.6 (0xb7de7000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb7dd0000)
        /lib/ld-linux.so.2 (0xb7f61000)
        libattr.so.1 => /lib/libattr.so.1 (0xb7dcc000)

はい、/ etc / init.dのファイルを変更して、何らかの形で起動に影響を与える場合は、再起動することをお勧めします。すぐに起動して実行する必要があるときに、スタートアップファイルで小さな間違いを犯したことを知りたくありません。

サーバーが再起動せずに何日も経過している場合、実際には、サーバーが再び正常に起動することを確認する方法がないことを意味します。繰り返しになりますが、これは多くの設定ファイルが変更されている可能性があり、起動することを確認するために長時間再起動した人がいないためです。また、サーバーに多数の更新プログラムがあり、長時間再起動していない場合は、更新プログラムを適用するに再起動してください。かなり前、または適用した新しい更新。

最後に、非常に長い時間後に重要なサーバーを再起動した場合、fsckは、サーバーが回復するまで非常に長い時間待たなければならないことを意味する場合があります。tune2fsを使用してこれを回避できますが、定期的にチェックすることをお勧めします。これが、たった1台のサーバーに依存しているだけではなく、Webサイト全体がなくなってしまうような状況に陥るべきではない理由です。スタンバイに別のものが必要です。


3
「再起動前」の+1
kubanczyk 09

2

この予想外のダウンタイムを抱えているときに探すべきもう1つのことは、メモリとプロセッサがどの程度正確に使用されているか、どのプログラムによって使用されているかを調べることです。 topどのプロセスがリソースの損失の原因であるかを判断し、それらを直接管理できる必要があります。別のアイデアは、cronjobを初期化して、特定のスケジュールでプロセスをシャットダウンおよび再起動することです。


+1-すべての停止がカーネルの問題によって引き起こされるわけではありません。
pcapademic

2

ルートパーティションでディスクチェック(fsck)を実行できるように長い時間が経過した場合は、再起動することをお勧めします。あなたの主張は、これがデータの整合性を確保するのに役立つということです。


1

適切に実行されているLinuxサーバーは、カーネルの更新のためにのみ再起動する必要があります。一部のソフトウェアでは常に同じことが言えません。たとえば、apache2やmailmanを再起動する必要がある場合があります。


0

私のインフラストラクチャには、2つのデータサイトがあります。アルファ(運用が毎日行われる)とベータ(バックアップサイト、万が一アルファで事態が悪化した場合に備えて)です。現時点ではそうではありませんが、ベータ版からすべてのサービスを実行できるように、6か月ごとにアルファサイトでダウンタイムをスケジュールするようにプッシュしています。

これにより、2つのことが達成されます。まず、災害復旧サイトが完全に実行可能であることを証明します。第二に、アルファで蓄積された残骸を取り除くのに一週間分の時間を与えてくれます。

現状では、サーバーを必要な頻度で再起動しません。必要なときにサーバーが復旧することを知っておくことが重要であると言った他のポスターに同意します。あなたは、彼らが何かを変更し、それを正しく行っていない、またはそれを文書化していないことを知るためだけに、彼らがするだろうと「考え」たくない。


0

マシンの現在の状態がリブート後のマシンの状態になる場合、(可能な限り)チェックするスクリプトをさらに作成できます。

これが意味するのは...

  • /etc/init.d/*
    • 現在実行中のすべてのサービスに、起動時に開始するフラグが設定されていることを確認します
    • 起動していないすべてのサービスが起動時に起動しないようにフラグが設定されていることを確認します
  • /etc/fstab
    • すべてのマウントされたファイルシステム(すなわち/etc/mtab)に対応するエントリがあることを確認します/etc/fstab
    • 起動時にマウントするように指定されたすべてのファイルシステム/etc/fstabも現在マウントされていることを確認します。

もちろん、これは決して完全なチェックではありませんが、再起動後のトラブルのリスクを減らします。

これに加えて、(imo)サーバーパッケージの更新に関するポリシーを適切な順序で設定する必要があります。たとえば、1週間に1グループ...

  • クラッシュ&バーンサーバー
  • 開発サーバー、トレーニングサーバー
  • テストサーバー
  • プリプロダクションサーバー
  • 本番サーバー

また、「6か月ごとにすべてのサーバーが完全なOSアップグレードを実行する」などの全体計画も立ててください。


0

サーバーで実行中のタスクに依存します。一部の仮想サーバーでは、apachectl restartの代わりに再起動を使用することが多く、5〜10秒長くかかります。ただし、一部の負荷の高いマシンは年に数回再起動され、管理者全体がプロセスを監視します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.