簡體   English   中英

VisualVM連接到本地TomEE非常慢,無法進行堆轉儲

[英]VisualVM connect to local TomEE very slow and can not take a heap dump

我在MAC OSX山獅上遇到了TomEE 1.5.1和VisualVM 1.7.0_09的一個非常奇怪的問題。

TomEE加載一些webapp后。使用VisualVM連接本地TomEE進程需要很長時間,連接后gc按鈕被禁用,我無法進行堆轉儲。 VisualVM的日志顯示一些錯誤。

com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
    at sun.tools.attach.BsdVirtualMachine.<init>(BsdVirtualMachine.java:90)
    at sun.tools.attach.BsdAttachProvider.attachVirtualMachine(BsdAttachProvider.java:63)
    at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:213)
    at com.sun.tools.visualvm.attach.AttachModelImpl.getVirtualMachine(AttachModelImpl.java:104)
Caused: java.io.IOException: Unable to open socket file: target process not responding or HotSpot VM not loaded

.java_pid<pid>文件未在tmp文件夾中創建。

但是如果我在啟動它之后和加載任何webapps之前使用VisualVM連接TomEE,那么將創建.java_pid<pid>文件,並且VisualVM將立即連接到它,並且堆轉儲工作。

另一個解決方法是修改catalina.sh以將tools.jar添加到ClassPath並刪除openejb javaagent,然后在TomEE完全啟動后連接正常工作。

無法在ubuntu機器上重現。

可能jvm內存不足。 我見過很多次了。 嘗試:

  1. 增加內存限制
  2. 將VisualVM連接到jvm。
  3. 部署您的應用程序。
  4. 並運行內存采樣器,分析器或堆轉儲來診斷問題。 你可能有內存泄漏。 如果您遇到內存問題,堆轉儲是最安全的方法。 您還可以使用命令行進行堆轉儲 ,稍后在VisualVM中對其進行分析。

還要確保您的系統內存不足。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM