Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Серверное Java-приложение виснет намертво / 5 сообщений из 5, страница 1 из 1
06.09.2012, 13:50:53
    #37946588
shainsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Серверное Java-приложение виснет намертво
Имеется серверное приложение, которое через сокеты слушает другие серверные приложения, а также своих клиентов.
Реализовано на стороннем фреймворке для гетерогенных систем (легковесный аналог Корбы).
Фреймворк использует ТредПул для обработки запросов, и ещё один ТредПул используется нами для реализации бизнес-логики.
Приложение работает на серваке с 16 ядрами, 4 гига отдано под кучу.
Где-то раз в неделю приложение наглухо виснет.
Треддамп получается снять только в forced-режиме (jstack -F), внутри него все потоки в состоянии BLOCKED.
После снятия тред-дампа в принудительном порядке приложение, как правило, "развисает".

Среда: Debian + Sun JDK 1.6.26

Были попытки воспроизвести баг на разработческих машинах (ОС и JDK те же), но даже в случае
ограничения размеров кучи и размеров ТредПула получали только тормоза или OutOfMemory,
при этом потоки не зависали.

В связи с этим 2 вопроса:
1. Глобальный - нет ли у коллективного разума подозрений, в чем может быть проблема?
2. Локальный - может ли кто-нибудь посоветовать профайлер, который бы с некоторой периодичностью делал текстовые отчеты
о состоянии памяти/потоков/GC? Графического интерфейса от продакшн-сервера я получить, увы, не могу, иначе юзал бы JVisualVM.

В аттаче - треддамп зависшего приложения.
...
Рейтинг: 0 / 0
06.09.2012, 14:02:44
    #37946609
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Серверное Java-приложение виснет намертво
По поводу п.2. используйте GC логирование реализованое в самой JVM. -verbose:gc и несколько вспомогательных настроек. Это must have для любого нагруженого продакшн сервера.
...
Рейтинг: 0 / 0
06.09.2012, 14:04:12
    #37946611
shainsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Серверное Java-приложение виснет намертво
Blazkowicz,

Логирование GC включили, но с тех пор пока что не было зависаний. :)
...
Рейтинг: 0 / 0
06.09.2012, 14:16:16
    #37946639
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Серверное Java-приложение виснет намертво
Судя по вот этому, подозрение все же падает на stop-the-world-gc
Thread 4764: (state = BLOCKED)
- java.lang.AbstractStringBuilder.<init>(int) @bci=6, line=45 (Compiled frame)
- java.lang.StringBuilder.<init>() @bci=3, line=68 (Compiled frame)

А CPU отжирается при этом почти полностью?
...
Рейтинг: 0 / 0
06.09.2012, 14:21:35
    #37946655
shainsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Серверное Java-приложение виснет намертво
BlazkowiczСудя по вот этому, подозрение все же падает на stop-the-world-gc
Thread 4764: (state = BLOCKED)
- java.lang.AbstractStringBuilder.<init>(int) @bci=6, line=45 (Compiled frame)
- java.lang.StringBuilder.<init>() @bci=3, line=68 (Compiled frame)


У меня было такое же подозрение, тем более, что память где-то подтекает, и YoungGen медленно растет. Но на разработческой машине с кучей=8Мб (!) воспроизвести зависание мне не удалось, я просто получил OutOfMemory.

BlazkowiczА CPU отжирается при этом почти полностью?

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


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