GRIZZLY0023 Предупреждение о стеклянной филе
Я развернул 2 веб-приложения в java на сервере GlassFish. Я использую Glassfish Server 3.1.2.2. У них обоих есть страницы сервлета Java, откуда они получают HTTP-запросы, а также код идентичен, только разные параметры (для разных клиентов). Первый работает хорошо, а другой процесс HTTP-запроса очень длинный. После этого я заметил следующее:
Я постоянно получаю это предупреждение на выходе Glassfish в Netbeans.
WARNING: GRIZZLY0023: Interrupting idle Thread: http-thread-pool-9990
Может ли кто-нибудь объяснить мне, почему я получил это предупреждение и как его решить.
Ответы
Ответ 1
Это предупреждение возникает, если запрос HTTP истекает. Тайм-аут по умолчанию для Glassfish составляет 15 минут.
Это может произойти в разных ситуациях, например. когда запрос вызывает долговременное действие, которое не возвращает никакого ответа в период ожидания, если запрос на ваш сервер был сделан через HTTPS, и он поддерживает только HTTP (или наоборот) или если больше нет доступных подключений в пуле соединений HTTP.
Конкретную причину в вашем случае можно только угадать, но в целом одно решение этой проблемы - увеличить тайм-аут запроса HTTP по умолчанию. Вы можете установить это значение в GUI Glassfish Admin (http://localhost:4848
) в:
server-config
→ Network Config
→ Network Listeners
→ <your listener>
По умолчанию для поля Request Timeout
установлено значение 900
(15 минут), просто увеличьте это значение. К сожалению, вы не можете установить его на -1
, чтобы не иметь ограничений, поскольку Glassfish 3.1.2.
Вы также можете установить его с помощью инструмента asadmin
, например:
asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.request-timeout-seconds=x
Ответ 2
Это произошло, когда сервер простаивает. Когда сервер некоторое время простаивает, он начинает генерировать
GRIZZLY0023: Прерывание простоя:
в файле журнала, и мы должны перезапустить сервер. Мы наблюдали это в Glassfish 3.1.2.2 build 5. Мы никогда не наблюдали это в старых Glassfish.
Это указывает на наличие ошибки в версии GF 3.1.2.2.
Ответ 3
Я не думаю, что рекомендую просто отключить переключение потоков в целом. Собственно, эта ошибка, вероятно, связана с ошибкой в Glassfish 3.1.2.2, которая приводит к тому, что потоки не будут должным образом перепутаны. Это можно увидеть через несколько interupt-log для одного и того же идентификатора потока. Исправлена ошибка, поместив исправленную версию grizzly-http.jar
на путь класса Glassfish.
Для получения дополнительной информации см. https://www3.wipo.int/confluence/display/wipoimd/3.3.2.1.-+GlassFish+3.1.2.2+%28build+5%29+patches
Ответ 4
Вам необходимо увеличить или отключить Тайм-аут запроса в Admin:
server-config -> Network Config -> Network Listeners -> <LISTENER> -> HTTP
Значение -1 отключит его.
Протестировано: GlassFish Server Open Source Edition 3.1.2.2