GRIZZLY0023 Glassfish警告

我在GlassFish服务器上的java中部署了2个Web应用程序。 我正在使用Glassfish Server 3.1.2.2。 它们都有来自接收http请求的java servlet页面,代码也是相同的,只有不同的参数(针对不同的客户端)。 第一个工作正常,另一个处理http请求很长。 之后我注意到了下一件事:

我经常在Netbeans的Glassfish输出中收到此警告。

WARNING: GRIZZLY0023: Interrupting idle Thread: http-thread-pool-9990 

任何人都可以解释我为什么会得到这个警告,以及如何解决它。

如果HTTP请求超时,则会发出此警告。 Glassfish默认超时为15分钟

这可能发生在不同的情况下,例如,当请求调用长时间运行的操作时,如果通过HTTPS向服务器发出请求并且仅支持HTTP(反之亦然),则在超时期限内不返回任何响应或者如果HTTP连接池中没有可用的连接。

您的情况下的具体原因只能被猜到,但通常一个解决此问题的方法是增加默认的HTTP请求超时。 您可以在Glassfish Admin GUI( http://localhost:4848 )中的下面设置此值:

server-config – > Network Config – > Network Listeners – >

默认情况下, Request Timeout字段设置为900 (15分钟),只需增加此值即可。 不幸的是,自Glassfish 3.1.2起,你无法将其设置为-1 ,没有任何限制。

您也可以使用asadmin工具进行设置,如下所示:

 asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.request-timeout-seconds=x 

这在服务器空闲时发生。 当服务器空闲一段时间后,它就开始生成

GRIZZLY0023:中断空闲线程:

日志文件中的警告,我们必须重新启动服务器。 我们在Glassfish 3.1.2.2 build 5中观察到了这一点。我们从未在旧的Glassfish中观察到这一点。

这表明GF 3.1.2.2版本中存在一些错误。

我不认为我会建议完全禁用线程的中断。 实际上,这个错误可能是由于Glassfish 3.1.2.2中的一个错误导致线程没有正确中断。 这可以通过相同thread-id的多个中断日志来看出。 通过在Glassfish的类路径上放置一个修补版本的grizzly-http.jar来修复该错误。

有关更多信息,请参阅https://www3.wipo.int/confluence/display/wipoimd/3.3.2.1.-+GlassFish+3.1.2.2+%28build+5%29+patches

您需要在Glassfish管理员中增加或禁用请求超时

 server-config -> Network Config -> Network Listeners ->  -> HTTP 

值-1将禁用它。

测试:GlassFish Server开源版3.1.2.2