Я столкнулся с проблемой при переходе веб-приложения с 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 с той же БД, и используется драйвер и тот же регрессионный тест. И даже в производстве у нас нет таких проблем.
Спасибо,
Макс.