после миграции с Resin на Glassfish v3.0.1 приложение периодически зависает и показывает пустую страницу в браузере - PullRequest
1 голос
/ 27 сентября 2010

Я столкнулся с проблемой при переходе веб-приложения с Resin на GlassFish v3.0.1. Уже во время регрессионных тестов (с Selenium) он начинает зависать. Браузер показывает пустую страницу без источников - и без мета, без заголовка и без тела (Firefox и IE).

Я думал, что это проблема Selenium. Но проблема воспроизводилась вручную, а также в IE8, FireFox 4, Chrome 6. Использовались разные клиентские машины, включая Windows и UBuntu 10.01 (исключая влияние антивируса);

Во время аварии я сделал несколько снимков (THREAD и даже HEAP) с jvisualvm поверх JMX. Анализ потока показывает, что на сервере существует поток, который запрашивает браузер серверов и имеет состояние «WAIT». Отслеживать ожидание экземпляра объекта # 123456, который не существует в дампе HEAP (запросы с использованием OQL в NetBeans).

Исследован также DB-пул (разрешено точное ведение журнала, а затем через JMX-монитор JDBC-POOL-MON). Oracle 11g Enterprise используется как БД. Драйвер 11.2.0.1ga используется. JDK 1.6.0_21 x64 серверный режим. Максимально допустимый размер пула JDBC был: 50 конн. Максимальный контролируемый размер JDBC составлял 10 (количество подключений при запуске), а пик использованных подключений был только 7. Утечка подключений также активирована. За 2 часа регрессионного теста не обнаружено.

Пул HTTP-потоков позволяет 200 потоков, где в пике было 181 активный поток и обычно 114 потоков демонов.

Grizly используется как WEB-сервис со статическим кэшированием текста и сжатием gzip. NIO активен, и я попробовал как java, так и родные буферы для tcp.

Некоторые мои друзья говорили, что я не использую Grizly напрямую, но поставил предварительный веб-сервер Apache и использую mod_proxy. Еще не пробовал, но я хотел бы использовать только GlassFish v3 без веб-сервера Apache. Я надеюсь, что это может показать тогда лучшую производительность броска.

Во всяком случае, у меня нет никаких идей, что может быть причиной этого странного поведения. Любая идея может сильно помочь!

p.s .: Под Resin приложение отлично работает на том же JDK с той же БД, и используется драйвер и тот же регрессионный тест. И даже в производстве у нас нет таких проблем.

Спасибо, Макс.

...