オペレーティングシステムがファイル記述子を制限するのはなぜですか? 質問する

オペレーティングシステムがファイル記述子を制限するのはなぜですか? 質問する

メッセージ キュー サーバーを実装する最良の方法をできる限り調査した後、この質問をします。オペレーティング システムは、プロセスとグローバル システムが持つことができるオープン ファイル記述子の数に制限を設けるのはなぜですか? 現在のサーバー実装では zeromq を使用しており、接続された各 Websocket クライアントに対してサブスクライバー ソケットを開きます。明らかに、その単一のプロセスでは fds の制限までしかクライアントを処理できません。このトピックを調査すると、システム制限を 64k fds のレベルまで上げる方法について多くの情報が見つかりますが、それがシステム パフォーマンスにどのように影響するか、なぜ 1k 以下なのかについては何も触れられていません。現在のアプローチは、独自のループ内のコルーチンと、すべてのクライアントとそのサブスクリプション チャネルのマ​​ップを使用して、すべてのクライアントにメッセージをディスパッチすることです。しかし、ファイル記述子の制限と、それが永続的な接続でクライアント レベルごとに使用しようとするアプリケーションにどのように影響するかについて、確かな答えを聞きたいです。

ベストアンサー1

これは、ファイル記述子の値がファイル記述子テーブルへのインデックスであるためと考えられます。したがって、可能なファイル記述子の数によってテーブルのサイズが決まります。平均的なユーザーは、決して必要のない数百万のファイル記述子を処理できるファイル記述子テーブルによって RAM の半分が使用されることを望んでいません。

おすすめ記事