2017-06-20 20 views
2

我需要從Elastic Beanstalk服務器獲取JVM堆轉儲,但服務器沒有jcmd或jmap。亞馬遜本身不會將它們與JDK一起安裝。這裏就是我們的安裝:檢查Elastic Beanstalk JVM堆的最佳方法

[[email protected] ~]$ sudo yum list installed|grep jdk 
java-1.7.0-openjdk.x86_64    1:1.7.0.111-2.6.7.2.68.amzn1 @amzn-updates 
java-1.8.0-openjdk.x86_64    1:1.8.0.101-3.b13.24.amzn1 @amzn-updates 
java-1.8.0-openjdk-headless.x86_64 1:1.8.0.101-3.b13.24.amzn1 @amzn-updates 

什麼是從JVM上的彈性魔豆獲得堆轉儲的最佳方式?

+0

你設法從JVM上EBS得到一個堆轉儲? – SylvesterAbreu

回答

1

我發現您可以通過安裝安裝JMAP正確的pac kage:

sudo yum install java-1.8.0-openjdk-devel 

雖然這可能取決於您使用的基線,tomcat版本等。

當創建一個堆轉儲,使用Tomcat的用戶:

sudo -u tomcat jmap -dump:live,file=/tmp/test.hprof <pid> 
+0

這工作!謝謝。 –

0

Disclamer:我從來沒有與彈性青苗的工作,但我可以推薦以下檢查:

考慮採取堆轉儲程序,我從Java應用程序本身的意思。有這樣做的許多方面:

  • 通過JMX - 有機會,你會發現HotSpotDiagnostic豆,將能夠調用堆轉儲操作(Here有一個教程這樣做)

  • 如果你的應用是新的,你有春天啓動,那麼很可能它可能堵塞彈簧操動,有一個「/堆轉儲」端點只是爲了這個目的