GNU/Linux >> Znalost Linux >  >> Linux

Největší povolený maximální počet otevřených souborů v Linuxu

Domnívám se, že hlavním důvodem limitu je vyhnout se nadměrné spotřebě paměti (každý otevřený deskriptor souboru používá paměť jádra). Slouží také jako ochrana proti chybným aplikacím, které prosakují deskriptory souborů a spotřebovávají systémové prostředky.

Ale vzhledem k tomu, jak absurdně velkou RAM mají moderní systémy ve srovnání se systémy před 10 lety, si myslím, že výchozí hodnoty jsou dnes poměrně nízké.

V roce 2011 byl výchozí pevný limit pro deskriptory souborů v Linuxu zvýšen z 1024 na 4096.

Některý software (např. MongoDB) používá mnohem více deskriptorů souborů, než je výchozí limit. Lidé z MongoDB doporučují zvýšit tento limit na 64 000. Použil jsem rlimit_nofile 300 000 pro určité aplikace.

Dokud ponecháte měkký limit na výchozí (1024), je pravděpodobně docela bezpečné pevný limit zvýšit. Programy musí volat setrlimit() aby zvýšili svůj limit nad měkký limit a jsou stále omezeni pevným limitem.

Viz také některé související otázky:

  • https://serverfault.com/questions/356962/where-are-the-default-ulimit-values-set-linux-centos
  • https://serverfault.com/questions/773609/how-do-ulimit-settings-impact-linux

Dopad by za normálních okolností nebyl pozorovatelný, ale modul IO jádra se bude muset postarat o všechny tyto otevřené deskriptory souborů a také by mohly mít dopad na efektivitu mezipaměti.

Takové limity mají výhodu v tom, že chrání uživatele před jeho vlastními chybami (nebo chybami třetích stran). Pokud například spustíte malý program nebo skript, který se rozvětvuje na dobu neurčitou, nakonec se zablokuje na jednom z ulimit s a tím zabránit intenzivnějšímu (možná neobnovitelnému) zamrznutí počítače.

Pokud nemáte přesné důvody ke zvýšení některého z těchto limitů, měli byste se tomu vyhnout a lépe spát.


Technicky je omezena na maximální hodnotu unsigned long (C Lang), tj. 4 294 967 295

Reference :fs.h soubor

/* And dynamically-tunable limits and defaults: */
struct files_stat_struct {
  unsigned long nr_files;   /* read only */
  unsigned long nr_free_files;  /* read only */
  unsigned long max_files;    /* tunable THIS IS OUR VALUE */
};

Linux
  1. Přesouvání souborů na Linuxu bez mv

  2. Co je číslo inodu v Linuxu?

  3. Maximální počet souborů/adresářů na Linuxu?

  1. Zkopírujte soubory v terminálu Linux

  2. Přesunout soubory v terminálu Linux

  3. Jak zvýšit limit počtu otevřených souborů v Linuxu

  1. Otázky k rozhovoru s Linuxem:Otevřít soubory / Otevřít deskriptory souborů

  2. Maximální PID v Linuxu

  3. linux tree příkaz limit počtu souborů zobrazených v každém adresáři