GNU/Linux >> Linux の 問題 >  >> Linux

Linux ファイル記述子の制限はどのように機能しますか?

代わりに /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 を増やそうとするよりも


Linux
  1. Linuxファイル機能を管理する方法

  2. Linuxでスワップファイルを作成する方法

  3. Linuxでログファイルを空にする方法

  1. Linuxでファイルを見つける方法

  2. Linuxでスワップを作成する方法

  3. Linuxでファイルの名前を変更するにはどうすればよいですか?

  1. Linuxでファイルを移動する方法

  2. Linuxでファイルを作成する方法

  3. Linux で iso ファイルをマウントする方法