Další možností je příliš mnoho vláken. Právě jsme narazili na tuto chybovou zprávu při spuštění testovacího svazku proti aplikaci, která používá fond vláken. Použili jsme
watch -n 5 -d "ps -eL <java_pid> | wc -l"
sledovat průběžný počet nativních vláken Linuxu běžících v rámci daného ID procesu Java. Po tomto zásahu asi 1 000 (pro nás – YMMV) se nám začala zobrazovat chybová zpráva, kterou zmiňujete.
To je obvykle způsobeno nedostatkem deskriptorů souborů.
Existuje systémový celkový limit deskriptorů souborů, co získáte z příkazu:
sysctl fs.file-nr
To vrátí počty deskriptorů souborů:
<in_use> <unused_but_allocated> <maximum>
Chcete-li zjistit, jaký je limit deskriptoru souboru uživatele, spusťte příkazy:
sudo su - <username>
ulimit -Hn
Chcete-li zjistit, kolik deskriptorů souborů používá uživatel, spusťte příkaz:
sudo lsof -u <username> 2>/dev/null | wc -l
Takže nyní, pokud máte problém s limitem deskriptoru systémového souboru, budete muset upravit svůj soubor /etc/sysctl.conf a přidat nebo upravit, pokud již existuje, řádek s fs.file-max a nastavit jej na hodnotu velkou dost na to, aby se vypořádal s počtem deskriptorů souborů, které potřebujete, a restartoval se.
fs.file-max = 204708