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-configNetwork ConfigNetwork 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