2013-11-27 31 views
10

çalıştıran yığın dökümü nasıl yolu bu Get a heapdump on JVM from Tomcat 6 denedim ama benim için işe yaramıyor, tomcat sunucudan yığın dökümü almak için başka yollar var mı? Şimdiden teşekkürler!tomcat 7

+0

Yığın dökümü yapmaya çalışırken karşılaştığınız sorun nedir? – Taky

+0

Yalnızca bellek yetersizliğinden dolayı JVM öldüğünde yığın dökümü yapmak istiyorsunuz. İstediğin zaman, yığın çöpü yapmana izin vermiyor. Ama yine de sizin için çok kullanışlı bir seçenek. – Taky

cevap

17

Yığın dökümünü almanın en kolay yolu jmap kullanmasıdır. Java süreci ile makinede jmap komutunu yürütün. Kullanım örneği:

jmap -dump:file=/mnt/heapdump_2013-04-01.data 29842 

kullanım jps java Pid bilmek.


Ayrıca jvisualvm aracılığıyla yığın dökümü yapabilirsiniz. Uzak makineye jmx veya jstatd üzerinden bağlanabilirsiniz. Uzak makineye yığın çöpü yapabilir ve depolayabilirsiniz.

Heapdumps analiz etmek için size tavsiyelerde bulunabilir: MAT. Sorunları hızlı bir şekilde anlamanızı sağlayan çok güçlü bir araç. MAT'ye here iyi inro'yu bulabilirsiniz.


Eğer ikili dökümü yapabilir uzun süre (You can use gcore or gdb) için uygulamayı durdurmak için istemiyorsanız. Ve use jmap to analyze gdb dump yapabilirsiniz. atlassian blog'da okuyabileceğiniz daha fazla bilgi. someissues'a dikkat edin.

+0

"sudo" kullanmanız gerekebilir – th3morg

5

jvisualvm "Dump yığın" yanında başka bir yolu da JMX arayüzü ile. Bu yol, çöplüğün nerede saklanacağını belirlemenize bile izin verir.

, JMX-plugin ile jconsole veya jvisualvm kullanarak tomcat'in JMX sunucusuna bağlanın. Daha sonra com.sun.management ->HotSpotDiagnotic ->Operations'a vardık. dumpHeap'un yanındaki iki parametreyi doldurun. Oracle'ın belgelerine (here bakınız):

Parametreler:

Outputfile - Sistem bağımlı dosya adı

canlı - Gerçek dökümü sadece nesneleri diğerlerinden ulaşılabilir nesneleri yani yaşıyorsa

Sonra dumpHeap tuşlarına basın ve dökümü yazarken VM freeze'ı bir süre izleyin.

1

Görsel VM'yi öneririm http://visualvm.java.net/ Tomcat'a bağlanabilen, yığın dökümü oluşturabilen ve okuyabilen, iş parçacığı dökümü, işlemci ve bellek örnekleyicisi yaratan hepsi bir arada.

Yeni jdk 1.7 kullanırsanız, VisualVM zaten jdk klasörünüzde paketlenmiştir.