GNU/Linux >> Znalost Linux >  >> Linux

Jak fungují limity linuxových deskriptorů?

Místo toho se chcete podívat na /proc/sys/fs/file-max

Z nedávného linux/Documentation/sysctl/fs.txt:

file-max &file-nr:

Jádro přiděluje ovladače souborů dynamicky, ale zatím je znovu neuvolňuje.

Hodnota v file-max označuje maximální počet file-handles, které linuxové jádro alokuje. Když se vám zobrazí spousta chybových zpráv o vyčerpání popisovačů souborů, možná budete chtít tento limit zvýšit.

Historicky tři hodnoty v file-nr označovaly počet alokovaných popisovačů souborů, počet přidělených, ale nepoužitých popisovačů souborů a maximální počet popisovačů souborů. Linux 2.6 vždy hlásí 0 jako počet volných popisovačů souborů -- to není chyba, pouze to znamená, že počet přidělených popisovačů souborů přesně odpovídá počtu použitých popisovačů souborů.

Pokusy o alokaci více deskriptorů souborů než file-max jsou hlášeny pomocí printk, hledejte "VFS:file-max limitreached".

EDIT:základní chybou pravděpodobně není, že systému docházejí globální deskriptory souborů, ale pouze váš proces. Zdá se pravděpodobné, že problémem je limit maximální velikosti výběru.


Nezdá se, že byste dosáhli limitu deskriptorů systémových souborů. Viz tato odpověď.

Možná váš proces serveru používá select a je tedy omezen na 1024 deskriptorů? Pokud přepnete na jiný mechanismus, např. poll již nebudete omezeni na 1024 deskriptorů.

select() pracuje s fd_set s

Toto je z POSIX dokumentace select.h:

Jako makro je třeba definovat následující:

FD_SETSIZE

Maximum number of file descriptors in an fd_set structure.

Zkuste najít nebo vypsat FD_SETSIZE ve vašem systému.

Pokud zjistíte, že FD_SETSIZE je pro vás příliš nízké, raději bych zkusil přejít od select než se snažit zvýšit FD_SETSIZE což je obvykle těžší.


Linux
  1. Jak spravovat možnosti souborů Linux

  2. Jak přejmenovat soubor v Linuxu?

  3. Jak připojit soubor iso v Linuxu

  1. Jak najít soubor v Linuxu

  2. Jak vytvořit swap v Linuxu

  3. Jak vytvořit odkládací soubor v Linuxu

  1. Jak přesunout soubor v Linuxu

  2. Jak vytvořit soubor v Linuxu

  3. Jak vyprázdnit soubor protokolu v Linuxu