Websphere — частое создание дампа потока/кучи

Наше приложение в рабочей среде генерирует частые дампы кучи/потока при выполнении очень больших отчетов, что в конечном итоге приводит к сбою JVM. WebSphere — это сервер, а размер кучи установлен равным 1024/2048 (начальный/максимальный) для всех узлов.

Какие существуют способы решения этой проблемы? Я мог бы подумать о следующих вариантах. Есть ли что-то еще, что мне не хватает?

  1. Установить минимальный/максимальный размер кучи на 2048 или даже выше?

  2. Включить подробную сборку мусора в WebSphere и проанализировать оптимальный размер кучи?

Анализ потоков: Работает: 123 (67%) Заблокировано: 16 (9%) Ожидание состояния: 43 (23%)


person yonikawa    schedule 25.10.2016    source источник
comment
Вы пометили это с помощью webphere-mq, но я не вижу упоминания о MQ в вопросе. Должны ли вы что-то пометить, чтобы эксперты App Server увидели этот вопрос?   -  person Morag Hughson    schedule 26.10.2016
comment
Что записывается в дампе как триггер для создания дампа? OutOfMemoryError?   -  person Tim McCormick    schedule 26.10.2016
comment
@MoragHughson: Спасибо за подсказку, это должна была быть websphere, а не websphere-mq.   -  person yonikawa    schedule 26.10.2016
comment
@TimMcCormick: да, ошибка нехватки памяти.   -  person yonikawa    schedule 26.10.2016


Ответы (3)


Хорошей отправной точкой для изучения OOM является эта тема IBM KnowledgeCenter

person F Rowe    schedule 26.10.2016

Поскольку похоже, что вы столкнулись с проблемой OutOfMemory, следует рассмотреть три возможности:

  • Вашим приложениям постоянно требуется больше памяти для обработки текущей нагрузки.

Решение. Вам необходимо протестировать приложение с трафиком, близким к производственному, и соответствующим образом настроить минимальный/максимальный размер кучи.

  • У вас проблема с утечкой памяти.

Решение: проанализируйте дампы памяти/кучи, созданные с помощью Инструменты IBM Support Assistant. PMR для IBM поможет.

  • Websphere имеет утечку памяти.

Решение. Откройте PMR.

Вот хорошее чтение об управлении памятью Java в средах WAS.

person trikelef    schedule 27.10.2016

Попробуйте захватить память, информацию о сборке мусора из производственной среды. Я не уверен, влияет ли журнал GC на производительность. Тем не менее, jstat является чрезвычайно легким инструментом и может использоваться в производственной среде без какого-либо влияния на производительность. Создавайте дамп вывода jstat через равные промежутки времени с помощью следующей команды (здесь я устанавливаю интервал равным 1 часу):

jstat -gc <PID> 3600s
person Arnab Biswas    schedule 14.12.2016