5

ネットワークサーバーとして機能するプログラムを管理するために inetd を使用するかどうかの選択を促す、現実世界の考慮事項を簡潔に説明できる人はいますか?

(inetd を使用すると、プログラム内のネットワーク コードに関する要件が変更されると思いますので、間違いなくプログラミング関連であり、一般的な IT ではないと思います)

質問は、inetd によって管理される制御プログラムを使用してネットワーク リスナーを開始する、私が見た実装に基づいています。ネットワーク リスナーは永久に実行され、一定の負荷がかかります。教科書の inetd の使用プロファイル (オンデマンド、使用頻度の低い、軽量) にはうまく適合しないように思われ、より一般的な質問に興味を持ちました。

4

5 に答える 5

3

それはあなたのサービスの使用パターンに依存します。デーモンの起動時間が短く、使用頻度が低いと予想される場合は、intedが適している可能性があります。これにより、追加のネットワークコードを作成する必要性が減少または排除されます。

デーモンがより重いか、より頻繁に使用される場合は、スタンドアロンで作成することをお勧めします。init.dスクリプトとそれに合わせた構成を簡単に作成できconf.d、管理者が管理するのは難しくありません。最近のほとんどのプログラミング言語は使いやすいソケットライブラリを備えているため、多くの場合、ネットワークコードはそれほど難しくないかもしれません。

私の経験では、最近inetdに精通している管理者はほとんどいないことがわかりました。ほとんどのデーモンは、独自のinitスクリプトを提供するだけです。実際、私が管理している数百のシステムの中で、inetdを介して何かを起動するシステムは1つも考えられません。それは検討する価値のあることです。

于 2008-12-24T06:38:39.763 に答える
2

inetd の使用を決定する際に考慮すべきもう 1 つの要因は、要求を処理するプロセスが平均して消費するメモリの量だと思います。これがかなり高い場合、負荷が高いとメモリが不足する危険があります (inetd がフォークするため)。同じサーバーがマルチスレッドまたは選択ポーリングの方法で実装できる可能性があり、接続ごとの負荷が高くなり、メモリが少なくなる可能性があります。

于 2008-12-24T06:40:06.830 に答える
2

inetd にフックすると、システム管理者は inetd を使用すると、プログラムとのネットワーク通信がどのように行われるかを事実上すべて制御できるため、運用上の観点からサービスの管理が少し簡単になります。ただし、プログラムにいくつかのコード変更を加える必要があります。また、最初からプログラムをデーモンとして実行するだけでは効率的ではない場合があります。

編集: 私は個人的に inetd を使用することはなく、常にサーバー プロセスをスタンドアロン デーモンとして記述することを選択します。

于 2008-12-24T05:58:08.957 に答える
0

どのような代替戦略を検討していますか?

inetd は、OS が適切な実行レベルで起動したときにサーバーが確実に起動するようにするための優れた方法です。サーバーを他の管理メカニズムを持つように設計したとしても、inetd はすべてのコマンドを非常に単純にラップすることができます。結局、シェルスクリプトだけです。

于 2008-12-24T05:54:43.940 に答える