![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| vdweller |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Есть серверное J2SE приложение написанное на базе Apache Mina. При работе на боевом сервере под небольшой нагрузкой (около 10 клиентов и порядка 1 сообщения в секунду) после некоторого времени работы (порядка 1 часа) приложение начинает грузить процессор на 100% (loadaverages >=1, 1 процессор), причем даже при почти полном исчезании коннектов нагрузка остается. После небольших разборок выяснилось что активизируется сборщик мусора и количество сборок мусора начинает зашкаливать (по несколько сборок в секунду), при этом используемая память постоянно скачет с 3 мегабайт до 40 - 50 и обратно в течении 20-30 секунд. Но все дело в том что никаких крупных объектов не выделяется в это время, сетевые сообщения "весят" порядка 50-100 байт, даже с учетом накладных расходов получается совсем мало, никак не 40 Мб, которые успевают выделиться за это время, а кроме них никакие данные не обрабатываются, да и размер хипа выставлен как -Xms128M -Xmx128M. Может кто то сталкивался с таким поведением ява машины?
Система на сервере freebsd 6.3, java version "1.6.0_03-p4" (также пробовал diablo-jdk-1.6, изменений никаких) Вот логи сборки мусора: Сначала все идет нормально
потом ни с того ни с сего сборки начинают сыпаться по несколько в секунду
Думал может приложение переклинивает в этот момент времени, но судя по логам в приложении в момент когда сборщик сходит с ума не происходит никаких критических событий, обычная работа. Может кто нибудь глянет опытным взглядом на логи, в чем может быть проблема? |
||||
|
|||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
ну как, выяснили, кто виноват? |
|||
|
||||
| vdweller |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Увы, пока нет Попробовал увеличить хип для молодого поколения (-XX:NewRatio=5) стабильное время работы увеличилось с часа до 10 часов, но потом все равно сборщик активизируется на всю. Мест выделения такого огромного количества объектов способных за 1 секунду заполнить все ~30 Мб выделенных для NewGen я не нашел в программе, так что пока расследование продолжается |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Не забываем о перекрестных ссылках...
для теста попробуйте попереопределять методы finalize некоторых объектов, в которых будет содержаться вывод на консоль, что объект завершает своё существование. Если вы переопределите в каком-то объекте этот метод, а в консоль от него не поступают сообщения, вот тут-то и собака зарыта. |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Можно было бы предположить, что "зацикливается" поток, работающий с селектором - распространенная ошибка при программировании nio. Но вы же используете MINA, т.е. с этим потоком непосредственно не соприкасаетесь.
|
|||
|
||||
| vdweller |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
При определенных условиях зацикливался один из потоков работы с клиентами, который на каждой итерации создавал пачку ArrayList, всем спасибо, сам дурак
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |