2010-08-19 1 views
5

Я запускаю загрузку с Tomcat 6, работающей на Java 6. Я хочу собрать кучу кучи Java, когда сервер Tomcat находится под нагрузкой. Обычно я использую jmap -dump для сбора моих кучи.Сбор Java heapdump под загрузкой

Однако, когда я пытаюсь это сделать, когда Tomcat обрабатывает высокую нагрузку, я нахожу, что коллекция heapdump терпит неудачу.

Является ли jmap лучшим инструментом для сбора кучи кучи из процесса под нагрузкой? Каковы возможные причины, из-за которых jmap не сможет собрать heapdump?

Если jmap не лучший инструмент - что лучше?

Это вполне приемлемо для меня для jmap (или какого-либо другого инструмента), чтобы остановить мир в процессе Java, когда выполняется сброс кучи.

+1

Вы пытались подключить VisualVM к VM и создать HeapDump, используя это? –

+0

Это не идеально для меня, поскольку мой Tomcat работает на удаленном сервере Linux. VisualVM включает поддержку удаленных дампов кучи, но для этого требуется открыть порт JMX при запуске JVM. – mchr

+0

http://stackoverflow.com/questions/20235802/ways-how-to-get-heap-dump-from-running-tomcat-7 содержит более подробные ответы. – Vadzim

ответ

2

Я обнаружил, что работающий Tomcat с портом JMX позволяет мне использовать удаленный кусок с помощью visualvm. Это мне удалось, когда jmap не удалось.

2

Является ли jmap лучшим инструментом для сбора дампа кучи из процесса под нагрузкой?

Я думаю: нет. From this link:

Примечание - Эта утилита не поддерживается и может или не может быть доступен в будущих версиях JDK.

+0

Можете ли вы порекомендовать альтернативу? – mchr

+0

Нет, мне никогда не приходилось иметь дело с кучами, но я искал информацию jmap, просто любопытно, удачи. – sourcerebels

2

Я также нашел, что jmap может довольно темпераментно. Если у вас возникли проблемы:

  • Повторите попытку. Часто удается получить дамп кучи после нескольких попыток, если первого не удается
  • Используйте параметр -F
  • Добавить -XX: + HeapDumpOnOutOfMemoryError в стандартной конфигурации проактивно принимать кучу дампов при возникновении ошибки ООЙ брошено
  • Запустите Tomcat интерактивно и добавьте кучу кучи на опции ctrl-break. Это также дает вам ниспадающую нить, что-то, что вам, вероятно, понадобится в любом случае
  • Если ваш размер кучи особенно большой и у вас есть повторяющееся состояние, временно уменьшите размер кучи. Это приводит к тому, что полученный файл намного проще обрабатывать, занимает меньше времени и, скорее всего, преуспеет.
+0

Спасибо за этот ответ - в следующий раз я попробую повторить jmap. Я написал собственный ответ об использовании visualvm. – mchr

Смежные вопросы