Java >> Java tutorial >  >> Java

Hjælp venligst med at fortolke OOM-Killer

Løsning 1:

Mangler hukommelse.

18. dec 23:24:59 ip-10-0-3-36 kerne:[ 775.566936] Mont om hukommelse :Kill process 4973 (java) score 0 eller ofre barn

Fra samme log (ps);

[ 775.561798] [ 4973] 500 4973 4295425981 2435 71 50 0 java

4295425.981 er omkring 4TB. og linjen total-vm:17181703924kB viser omkring en 17TB.

Kan du fejlsøge din hukommelsesallokeringsrutine? som for mig din ansøgning fik en dårlig løkke et eller andet sted og skal tage alle de tilgængelige ressourcer, og den tilgængelige swap også.

Løsning 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

Din ansøgningsproces forsøger at påkalde fallocate på shmem filsystem. Fra hurtig google ser det ud til, at ZGC bruger fallocate til at hente initial heap-hukommelse fra shm-filsystemet og fortsætter med at bruge fallocate til at udvide heap. En sådan brug af fallocate syscall er ret usædvanlig, så enten er dette en ZGC-fejl (som du allerede har mistænkt), eller også lækker noget andet masser af hukommelse, hvilket får heap-udvidelse til at mislykkes.

Jeg foreslår, at du konfigurerer ZGC for at undgå yderligere runtime-allokeringer (sæt Xms og Xmx til samme værdi). Dette løser måske ikke dit problem, hvis hukommelseslækagen sker på grund af noget, der ikke er relateret, men du ville i det mindste have en bedre chance for at finde den virkelige synder.

Bemærk, at din overordnede opsætning er noget farlig - ZGC kan tilsyneladende godt lide at have en masse sammenhængende hukommelse, men hvis du har 190G heap på 240G RAM-maskine, er der muligvis ikke en tilstrækkelig stor sammenhængende region til fallocate fra. I så fald vil ZGC falde tilbage til at opfange små hukommelsesområder med yderligere fallocate opkald (se beskrivelse af linket fejlrapport), og problemet vil blive sløret igen... Aktiver støtte for hugepages i JVM (normale hugepages , ikke gennemsigtige enorme sider !) og forudalloker hugepages under opstart (med kernel-argument) — brug af hugepages er alligevel tilrådeligt for dine heap-størrelser.


Java tag