Teknologian jakaminen

Muistivuotojen vianetsintäideoita ja tapausten jakaminen

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Viitteet:

①Käytä mtracea JVM:n muistivuotojen seuraamiseen

②Vianetsintätapaus korkeasta Java-muistin käytöstä

1. Tutkimusideoita

Selvitä muistivuodon paikka (katso yksityiskohtaiset komennot viitemateriaalista ①)

  1. Käytä jna:ta ottaaksesi mtrace käyttöön Java-koodissa muistin varauksen seuraamiseksi

  2. Käytä mtrace-komentoa lokitiedostojen analysointiin ja muistivuodon kutsupisteiden hankkimiseen.

  3. arthas tarkistaa muistivuodon hälytyspisteen kutsupinon (voit käyttää hälytyspisteen osoitetta suoraan, toiminnon nimeä ei vaadita)

Hanki muistivuotosisältö (katso viitemateriaalit ② yksityiskohtaisia ​​komentoja varten)

  1. Suorita pmap-komento ensimmäistä kertaa saadaksesi Java-prosessin muistin käytön
  2. Tietyn ajan kuluttua muisti kasvaa Suorita pmap-komento uudelleen saadaksesi Java-prosessin muistin käytön.
  3. Käytä tekstivertailutyökalua kahden pmap-komennon tulosten vertaamiseen ennen ja jälkeen
  4. Transcode tarkastellaksesi juuri lisätyn muistin tietosisältöä

2. Tapausten jakaminen

Kun palvelua testataan offline-tilassa, kun QPS on korkea, koneen nio.directbuffer-alueen varaama muisti kasvaa yhtäkkiä, mikä aiheuttaa OOM:n esiintymisen kontissa.

Yllä olevien vianetsintäideoiden avulla päätimme lopulta, että RPC-kehys loi suuren määrän dataa suorapuskurialueella. Itse asiassa, kun QPS on korkea, valitsinsäikeiden määrä on pieni ja kulutuskapasiteetti on riittämätön, mikä johtaa pyyntö- ja vastausdatan ruuhkaan suorapuskurialueella.