Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Lock в класслоадере очень надолго (15 сек)! Почему? И как избавиться? 
:(
    Опции темы
Barvetal
Дата 3.6.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 181
Регистрация: 31.10.2005

Репутация: 5
Всего: 5



Всем привет!

Решили произвести нагрузочное тестирование нашего сайта. Страницы начали не отдаваться по 10-30 секунд... Посмотрел, что происходит в дампе потоков. Происходит следующее:
Один из потоков берет лок (на момент дампа потоков этот поток обрабатывал клиентский запрос 16 секунд):
java.lang.Thread.State: RUNNABLE
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    - locked <0x74d489a8> (a sun.misc.Launcher$ExtClassLoader)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
    - locked <0x74d48960> (a sun.misc.Launcher$AppClassLoader)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
    - locked <0x74d48960> (a sun.misc.Launcher$AppClassLoader)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1274)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205)
    at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:95)
    at org.hibernate.impl.SessionFactoryImpl.getImplementors(SessionFactoryImpl.java:683)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1543)
    at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
    at net.myorg.persistence.dao.GenericDao.loadByFieldsEqOrLike(GenericDao.java:187)
    at net.myorg.persistence.dao.GenericDao.loadByFields(GenericDao.java:159)
    at net.myorg.persistence.dao.GenericDao.loadByField(GenericDao.java:138)
    at net.myorg.persistence.utils.UrlUtils.getDocListUrl(UrlUtils.java:96)
    at net.myorg.persistence.utils.UrlUtils.getDocListUrl(UrlUtils.java:103)
    at net.myorg.portal.calendar.Renderer.getWeeks(Renderer.java:265)
    at net.myorg.portal.calendar.View.pageBeginRender(View.java:137)
    at org.apache.tapestry.AbstractPage.firePageBeginRender(AbstractPage.java:478)
    at org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:268)
    at org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:366)
    at org.apache.tapestry.portlet.PortletRendererImpl.renderPage(PortletRendererImpl.java:76) 
             .......
этого лока ждут другие 74 потока:
                java.lang.Thread.State: BLOCKED (on object monitor)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:269)
    - waiting to lock <0x74d48960> (a sun.misc.Launcher$AppClassLoader)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1274)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205)
    at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:95)
    at org.hibernate.impl.SessionFactoryImpl.getImplementors(SessionFactoryImpl.java:683)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1543)
    at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
    at net.myorg.persistence.dao.GenericDao.loadByFieldsEqOrLike(GenericDao.java:187)
    at net.myorg.persistence.dao.GenericDao.loadByFields(GenericDao.java:159)
    at net.myorg.persistence.dao.GenericDao.loadByField(GenericDao.java:138)
    at net.myorg.persistence.utils.UrlUtils.getDocListUrl(UrlUtils.java:96)
    at net.myorg.persistence.utils.UrlUtils.getDocListUrl(UrlUtils.java:103)
    at net.myorg.portal.calendar.Renderer.getWeeks(Renderer.java:265)
    at net.myorg.portal.calendar.View.pageBeginRender(View.java:137)
    at org.apache.tapestry.AbstractPage.firePageBeginRender(AbstractPage.java:478)
    at org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:268)
    at org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:366)
    at org.apache.tapestry.portlet.PortletRendererImpl.renderPage(PortletRendererImpl.java:76) 
             .......
Самомум старому потоку из них - 81 секунда!

Почему первый поток выполняет так долго java.lang.ClassLoader.loadClass? Как устранить проблему?

Заранее большое спасибо!

Это сообщение отредактировал(а) Barvetal - 3.6.2008, 16:09
PM MAIL   Вверх
alexadr
Дата 3.6.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 25.9.2006

Репутация: нет
Всего: 4



Возможно поможет загрузка класслоадером определенных классов(тех что долго грузятся java.lang.ClassLoader.loadClass) на стадии инициализации приложения.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0607 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.