GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bitte helfen Sie bei der Interpretation von OOM-Killer

Lösung 1:

Kein Speicher mehr.

18. Dezember 23:24:59 ip-10-0-3-36 Kernel:[ 775.566936] Nicht genügend Arbeitsspeicher :Prozess 4973 (Java) beenden, 0 Punkte erzielen oder Kind opfern

Aus demselben Protokoll (ps);

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

4295425.981 sind etwa 4 TB. und die Zeile total-vm:17181703924kB zeigt ungefähr 17 TB.

Können Sie Ihre Speicherallokationsroutine debuggen? Was mich betrifft, hat Ihre Anwendung irgendwo eine schlechte Schleife und muss alle verfügbaren Ressourcen und auch den verfügbaren Swap verwenden.

Lösung 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

Ihr Anwendungsprozess versucht, fallocate aufzurufen auf dem shmem-Dateisystem. Nach schnellem Googeln sieht es so aus, als ob ZGC Fallocate verwendet, um den anfänglichen Heap-Speicher aus dem SHM-Dateisystem zu holen, und weiterhin Fallocate zum Erweitern des Heap verwendet. Eine solche Verwendung von fallocate syscall ist eher ungewöhnlich, also ist dies entweder ein ZGC-Fehler (wie Sie bereits vermutet haben) oder etwas anderes lässt viel Speicher verloren, was dazu führt, dass die Heap-Erweiterung fehlschlägt.

Ich schlage vor, dass Sie ZGC konfigurieren, um zusätzliche Laufzeitzuweisungen zu vermeiden (setzen Sie Xms und Xmx auf gleichen Wert). Dies löst möglicherweise nicht Ihr Problem, wenn das Speicherleck aufgrund von etwas anderem auftritt, aber zumindest hätten Sie eine bessere Chance, den wahren Schuldigen zu finden.

Beachten Sie, dass Ihr gesamtes Setup etwas gefährlich ist – ZGC mag es anscheinend, viel zusammenhängenden Speicher zu haben, aber wenn Sie 190 GB Heap auf einer 240 GB RAM-Maschine haben, gibt es möglicherweise keine ausreichend große zusammenhängende Region zu fallocate aus. In diesem Fall wird ZGC darauf zurückgreifen, kleine Speicherregionen mit weiteren fallocate aufzunehmen Aufrufe (siehe Beschreibung des verlinkten Fehlerberichts), und das Problem wird wieder verschleiert ... Aktivieren Sie die Hugepages-Unterstützung in JVM (normale Hugepages , keine transparenten Hugepages !) und Hugepages während des Bootens vorbelegen (mit Kernel-Argument) – die Verwendung von Hugepages ist für Ihre Heap-Größen sowieso ratsam.


Linux
  1. So interpretieren Sie erfasste Wireshark-Informationen

  2. Grep:Speicher erschöpft?

  3. Wie teste ich Oom-Killer über die Befehlszeile?

  4. Stirbt die SSD? Bitte helfen!?

  5. PHP-Speicherlimit

Linux-Speichernutzung

13 Möglichkeiten, wie Sie Linux helfen können

Was ist NVM (nicht flüchtiger Speicher)?

So löschen Sie den Auslagerungsspeicher unter Linux

Speicherauslastung des TOP-Befehls

Wie liest man Oom-Killer-Syslog-Meldungen?