代わりに /proc/sys/fs/file-max を見たい
最近の linux/Documentation/sysctl/fs.txt から:
<ブロック引用>ファイルの最大値とファイル番号:
<ブロック引用>カーネルはファイル ハンドルを動的に割り当てますが、まだ解放しません。
<ブロック引用>file-max の値は、Linux カーネルが割り当てるファイル ハンドルの最大数を示します。ファイル ハンドルが不足しているというエラー メッセージが多数表示される場合は、この制限を増やすことをお勧めします。
<ブロック引用>従来、file-nr の 3 つの値は、割り当てられたファイル ハンドルの数、割り当てられているが未使用のファイル ハンドルの数、およびファイル ハンドルの最大数を示していました。
<ブロック引用>file-max よりも多くのファイル記述子を割り当てようとすると、printk で報告されます。「VFS:file-max limitreached」を探してください。
編集:根本的なエラーは、おそらくグローバル ファイル記述子が不足しているシステムではなく、プロセスだけです。 select の最大サイズ制限に問題があるようです。
システム ファイル記述子の制限に達しているようには見えません。この回答を参照してください。
おそらく、サーバー プロセスは select
を使用しています したがって、1024個の記述子に制限されていますか?別のメカニズムに切り替える場合。 poll
1024 個の記述子に制限されることはなくなります。
select()
fd_set
で動作します
これは select.h の POSIX ドキュメントからのものです:
<ブロック引用>以下はマクロとして定義されます:
FD_SETSIZE
Maximum number of file descriptors in an fd_set structure.
FD_SETSIZE
を検索または出力してみてください
FD_SETSIZE が低すぎる場合は、select
から離してみてください。 FD_SETSIZE
を増やそうとするよりも