Řešení 1:
Nedostatek paměti.
18. prosince 23:24:59 ip-10-0-3-36 jádro:[ 775.566936] Nedostatek paměti :Zabijte proces 4973 (java) skóre 0 nebo obětujte dítě
Ze stejného logu (ps);
[ 775,561798] [ 4973] 500 4973 4295425981 2435 71 50 0 java
4295425.981 je kolem 4TB. a řádek total-vm:17181703924kB ukazuje přibližně 17TB.
Můžete odladit rutinu přidělování paměti? pokud jde o mě, vaše aplikace má někde špatnou smyčku a musí vzít všechny dostupné zdroje a také dostupný swap.
Řešení 2:
Dec 18 23:24:59 ip-10-0-3-36 kernel: [ 775.214705] shmem_fallocate+0x32d/0x440
Dec 18 23:24:59 ip-10-0-3-36 kernel: [ 775.217182] vfs_fallocate+0x13f/0x260
Dec 18 23:24:59 ip-10-0-3-36 kernel: [ 775.219525] SyS_fallocate+0x43/0x80
Dec 18 23:24:59 ip-10-0-3-36 kernel: [ 775.221657] do_syscall_64+0x67/0x100
Váš aplikační proces se pokouší vyvolat fallocate
na souborovém systému shem. Z rychlého googlování to vypadá, že ZGC používá fallocate k odebrání počáteční paměti haldy ze souborového systému shm a pokračuje k použití fallocate pro rozšíření haldy. Takové použití fallocate syscall je poměrně neobvyklé, takže buď se jedná o chybu ZGC (jak jste již tušili), nebo kvůli něčemu jinému uniká spousta paměti, což způsobuje selhání rozšiřování haldy.
Navrhuji, abyste nakonfigurovali ZGC, abyste se vyhnuli dalšímu přidělování runtime (nastavení Xms
a Xmx
na stejnou hodnotu). To nemusí vyřešit váš problém, pokud k úniku paměti dojde kvůli něčemu, co s tím nesouvisí, ale alespoň byste měli větší šanci najít skutečného viníka.
Všimněte si, že vaše celkové nastavení je poněkud nebezpečné – ZGC zjevně rádo má hodně souvislé paměti, ale pokud máte 190G haldu na 240G RAM počítači, nemusí existovat dostatečně velká souvislá oblast na fallocate
z. V takovém případě se ZGC vrátí k výběru malých paměťových oblastí pomocí dalších fallocate
volání (viz popis připojeného hlášení o chybě) a problém bude znovu zatemněn... Povolit podporu hugepages v JVM (normální hugepages , nikoli průhledné velké stránky !) a předběžně alokovat hugepages během bootování (s argumentem jádra) — použití hugepages je každopádně vhodné pro velikost vaší haldy.