GNU/Linux >> Znalost Linux >  >> Linux

Příliš mnoho otevřených souborů v Debianu

Řešení 1:

Pokud je váš proces spuštěn pomocí skriptu, můžete do skriptu umístit volání ulimit těsně před spuštěním démona.

Pokud chcete zvýšit ulimit pro svého uživatele nebo pro všechny uživatele, můžete nastavit limity, které se použijí prostřednictvím pam_limits při přihlášení. Ty jsou nastaveny v /etc/security/limits.conf . Ve vašem případě můžete udělat něco jako:

*               hard    nofile             2048

Všimněte si, že „tvrdý“ označuje pevný limit – takový, který nelze překročit a nelze jej změnit. Měkký limit může změnit uživatel (např. někdo bez oprávnění root), ale ne za pevný limit.

Přečtěte si limits.conf pro více informací o použití pam_limits .

Řešení 2:

V jádře je také nastaveno "celkové maximum" otevřených souborů, aktuální nastavení můžete zkontrolovat pomocí:

cat /proc/sys/fs/file-max 

A nastavte novou hodnotu pomocí:

echo "104854" > /proc/sys/fs/file-max

Pokud chcete zachovat konfiguraci mezi restarty add

sys.fs.file-max=104854

do

/etc/sysctl.conf

Chcete-li zkontrolovat aktuální maximální využití souboru:

[[email protected] proc]# cat /proc/sys/fs/file-nr
3391    969     52427
|        |       |
|        |       |
|        |       maximum open file descriptors
|        total free allocated file descriptors
total allocated file descriptors
(the number of file descriptors allocated since boot)

Řešení 3:

Jak řekli jiní, můžete použít specifické limity na uživatele nebo skupinu v /etc/security/limits.conf.

Poznámka:ulimit -n ukazuje měkký limit.

ulimit -H -n 

vám ukáže pevný limit.

Díky tomu je výstup ulimit -a a ulimit -n docela matoucí, pokud jste například zvýšili počet souborů z 1024 na 4096, jak byste očekávali, že uvidíte výstup s pevným limitem, ale stále vidíte 1024, což je měkké limit.

Také si pamatujte, že tato omezení jsou vynucována na každé přihlášení, takže se znovu přihlaste v novém prostředí a zkontrolujte své změny, neočekávejte, že se přenesou do stávajících přihlášení.

Řešení 4:

Uvědomte si, že pokud proces spustíte pomocí start-stop-daemon, nastavení ulimitů v /etc/security/limits.conf nebude fungovat. Pokud například chcete zvýšit limit otevřených souborů pro kocoura na 20 000, musíte je přidat do řádků do /etc/default/tomcat :

ulimit -Hn 32768
ulimit -Sn 32768

Narazil jsem na tento problém v debianu 6.0.4. Pro jiný proces by uvedené odpovědi měly pomoci.


Linux
  1. Jak zvýšit limit otevřených souborů v Ubuntu?

  2. Spuštění udev:udevd inotify_init se nezdařilo:příliš mnoho otevřených souborů

  3. Počítání otevřených souborů na proces

  1. Jak nastavit nginx max otevřené soubory?

  2. Nelze změnit maximální počet otevřených souborů na proces pomocí sysctl

  3. Příliš mnoho otevřených souborů (CentOS7) – již jsem zkusil nastavit vyšší limity

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

  2. Řešení chyby Mysql:Příliš mnoho otevřených souborů

  3. Příliš mnoho úrovní symbolických odkazů