1 日フルタイムで実行する必要があるサーバー プログラムがあります。いくつかのパラメータを変更したい場合、シャットダウンしてから再起動する方法はありますか?
2 に答える
これには、次のような方法がありますが、ほぼ確実にこれらに限定されません。
プログラムが定期的にそのファイルをチェックして内部情報を更新するように、パラメータを別のファイルに保持できます。
(1) と似ていますが、何らかのシグナルをアプリケーションに送信して、アプリケーションがすぐにファイルを再読み取りできるようにすることができます。
(1) または (2) のいずれかを実行できますが、構成ファイルではなく共有メモリを使用します。
プログラムを IPC 会話のサーバー側に置いて、クライアントが接続を開いて新しいパラメーターを提供できるようにすることができます。単純なメッセージ キューから、本格的な HTTP サーバーおよび関連するページまで、あらゆるものです。
もちろん、これらはすべて、プログラムで新しい情報を探すためにかなりの量の作業を必要とする傾向があります。
決定を下すときは、そのことを考慮に入れる必要があります。実装する最も簡単な解決策は、午後 11 時 55 分などにプロセスを (完全に) 強制終了し、すぐに再起動することです。コードにはおそらく起動時に情報をロードする機能がすでにあるため、これは簡単ですcron
。
怠惰を悪いことだと言う人もいますが、必ずしもそうとは限りません :-)
サーバーがクライアントからの多数の有効な接続を維持している場合、サーバー プロセスの再起動は、考慮すべき最後の方法です。構成ファイルをリロードする以外に、クライアントとサーバーの間にプロキシ プロセスを挿入する方法もあります。
プロキシ プロセスは 2 つのことを担当します。
a. クライアントからの接続を維持し、処理のためにパケットをサーバーに転送します。
b. 現在のサーバー プロセス (サーバー A) が生きているかどうかを判断し、生きていない場合は、別のサーバー (サーバー B) に自動的に切り替えます。
次に、常に 2 つ (またはそれ以上) のサーバーが実行されているため、クライアントの中断を心配することなく、サーバーを再起動してパラメーターを変更できます。