VisualVM подключается к локальному TomEE очень медленно и не может получить дамп кучи

Я столкнулся с очень странной проблемой с TomEE 1.5.1 и VisualVM 1.7.0_09 на MAC OSX mountain lion.

После того, как TomEE загрузил какое-то веб-приложение. Использование 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.

Но если я использую VisualVM для подключения TomEE после его запуска и до загрузки каких-либо веб-приложений, будет создан файл .java_pid<pid>, и VisualVM немедленно подключится к нему, и дамп кучи будет работать.

Другой обходной путь - изменить catalina.sh, чтобы добавить tools.jar в ClassPath и удалить openejb javaagent, а затем подключиться после полного запуска TomEE, все работает нормально.

Невозможно воспроизвести на машине с убунту.


person Yaocl    schedule 03.12.2012    source источник
comment
вы подключаетесь к JMS? Попробуйте с JMS.   -  person Sagar Gandhi    schedule 18.08.2014
comment
Попробуйте jconsole и посмотрите, как это работает   -  person jsaddwater    schedule 18.08.2014


Ответы (1)


Вероятно, jvm не хватает памяти. Я видел это много раз. Пытаться:

  1. увеличение пределов памяти.
  2. Подключите VisualVM к jvm.
  3. Разверните свое приложение.
  4. И запустите семплер памяти, профилировщик или дамп кучи, чтобы диагностировать проблему. У вас наверняка утечки памяти. Дамп кучи - самый безопасный способ, если у вас проблемы с памятью. Вы также можете взять дамп кучи с помощью командной строки и позже проанализируем в VisualVM.

Также убедитесь, что вашей системе не хватает памяти.

person NiematojakTomasz    schedule 27.08.2014