2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Verweise:
①Verwenden Sie mtrace, um JVM-Off-Heap-Speicherlecks zu verfolgen
②Ein Fall zur Fehlerbehebung bei hoher Java-Speichernutzung
Ermitteln Sie den Speicherort des Speicherlecks (ausführliche Befehle finden Sie in den Referenzmaterialien ①).
Verwenden Sie jna, um mtrace im Java-Code zu aktivieren und die Speicherzuweisung zu verfolgen
Verwenden Sie den Befehl mtrace, um Protokolldateien zu analysieren und Speicherleck-Aufrufpunkte zu erhalten.
arthas überprüft den Aufrufstapel des Speicherleck-Aufrufpunkts (Sie können die Aufrufpunktadresse direkt verwenden, es ist kein Funktionsname erforderlich)
Erhalten Sie Speicherleckinhalte (ausführliche Befehle finden Sie in den Referenzmaterialien ②).
Wenn Sie einen Dienst offline testen und die QPS hoch ist, nimmt der vom nio.directbuffer-Bereich der Maschine belegte Speicher plötzlich zu, was zu OOM im Container führt.
Mithilfe der oben genannten Ideen zur Fehlerbehebung haben wir schließlich festgestellt, dass unser RPC-Framework eine große Datenmenge im Directbuffer-Bereich generiert hat. Tatsächlich ist bei hohem QPS die Anzahl der Selektor-Threads gering und die Verbrauchskapazität unzureichend, was zu einem Rückstand an Anforderungs- und Antwortdaten im Direktpufferbereich führt.