powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Приложение не подает признаков жизни. Как понять что происходит?
9 сообщений из 9, страница 1 из 1
Приложение не подает признаков жизни. Как понять что происходит?
    #39085693
Dymytry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый!

Есть приложение, которое выполняет долгий рассчет, работая в цикле. Я слежу за его состоянием просто глядя на лог где печатается номер итерации. Однако в какой-то момент бывает так, что печать останавливается. Приложение продолжает работать.

Я коннекчусь к нему через VisualVM, монитор показывает что

HeapSpace - занято 800мб из 3гб
график UsedHeap похож на пилу с периодом 10-15 сек
TaskManager говорит о 100% занятости CPU

Постоянный GC? Но ведь он не доходит до предельного заполнения памяти, зачем так часто GC делать? Можно ли это исправить?

Как диагностировать проблемы в таких ситуациях?
Что добавить в приложение чтобы облегчить себе жизнь при диагностировании таких ошибок?
...
Рейтинг: 0 / 0
Приложение не подает признаков жизни. Как понять что происходит?
    #39085695
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он не доходит до вывода в system.out и зацикливается где-то. GC начинает активно отжирать процессор если хип приближется к максимальному на сколько я помню, а так работает не особо (5-7% обычно от CPU).
...
Рейтинг: 0 / 0
Приложение не подает признаков жизни. Как понять что происходит?
    #39085705
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dymytry, печать иногда останавливается если случайно нажал какуюто клавишу в консоли.
Такой эффект я наблюдал в Windows.

По хорошему логгировать надо через нормальные библиотеки (log4j) в файл. И оттуда смотреть чо как.
Или через JMX наблюдать значения нужных счётчиков или состояний.
...
Рейтинг: 0 / 0
Приложение не подает признаков жизни. Как понять что происходит?
    #39085755
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DymytryКак диагностировать проблемы в таких ситуациях?
Что добавить в приложение чтобы облегчить себе жизнь при диагностировании таких ошибок?

Что значит "приложение продолжает работать"? Как видишь работу?
Надо освоить логирование, уровня trace понаставить... побольше и включить на время trace. Вот.
...
Рейтинг: 0 / 0
Приложение не подает признаков жизни. Как понять что происходит?
    #39085772
Dymytry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Логирование есть, но логи ничего не выводят. Т.е. в какой-то момент он перестает писать в логи.

* * *

Добавил GC логирование. Оказалось:

Когда приложение работает нормально, вижу:
GC14745453
[GC [PSYoungGen: 515062K->69120K(563712K)] 551267K->144915K(1961984K), 0.0724851 secs] [Times: user=0.30 sys=0.00, real=0.07 secs]
14745452

Когда оно зависло, оно пишет, не переставая:
GC[GC [PSYoungGen: 698432K->128K(698880K)] 1867872K->1169568K(2097152K), 0.0027902 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC [PSYoungGen: 698496K->64K(698880K)] 1867936K->1169504K(2097152K), 0.0070425 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC [PSYoungGen: 698464K->128K(698880K)] 1867904K->1169568K(2097152K), 0.0028557 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC [PSYoungGen: 698496K->128K(698880K)] 1867936K->1169568K(2097152K), 0.0030874 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

Т.е. по ходу реально все время идет на Minor GC.
Т.е. причина проблемы в том, что стало генериться больше мусора. Но почему? Функциональность со временем выполнения не меняется. Скорость создания объектов должна быть такой же.

Отсюда дополнительный вопрос:
как мне понять какие инстансы очищаются GC, т.е. что именно было в тех 600гб которые очистил GC в последнем логе? Ведь если я вызову взять HeapDump в VisualVM он сначала вызовет GC и того что мне надо я не увижу.
...
Рейтинг: 0 / 0
Приложение не подает признаков жизни. Как понять что происходит?
    #39085809
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dymytry, мне кажется ты путаешь причину со следствием. Логи GC что ты привёл не несут никакой ценной
инфы. И они не являются признаком того что в системе что-то не так. Это просто обычные логи.

Далее. Я предлагаю тебе сделать 2 дампа стека потоков.

1) Во время т.н. нормальной работы приложениея. Когда идёт расчёт и пишутся логи.
2) Во время неотзывчивого поведения когда по твоему мнению что-то пошло не так и логи не пишутся.

Приаттачивай эти дампы к форуму и будем смотреть.
...
Рейтинг: 0 / 0
Приложение не подает признаков жизни. Как понять что происходит?
    #39085825
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dymytry,
делать обычную отладку приложения. либо через лог, либо через бряки.
Т.е. найти номер итерации где валится и там смотреть.
авторКогда оно зависло
дак когда оно зависло?
...
Рейтинг: 0 / 0
Приложение не подает признаков жизни. Как понять что происходит?
    #39087447
Dymytry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, знатоки были правы :) Приложение не зависало и с GC проблем не было - просто я забыл синхронизировать один участок и имел конкуррентную запись в ХэшМэп, которая в какой-то момент попадала в бесконечный цикл, видимо там Node.next проставлялся так что получался замкнутый круг.

ThreadDump в этом помог.

Сейчас, смотрю, приложение доходит до точки когда действительно занимается вся память, но это уже совсем другая история... :)

Спасибо!
...
Рейтинг: 0 / 0
Приложение не подает признаков жизни. Как понять что происходит?
    #39087459
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жадина... ты забрал у нас ощущение триумфа
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Приложение не подает признаков жизни. Как понять что происходит?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]