我们使用 Jetty 9 作为 Java 8 VM 中的嵌入式 Web 服务器。有时,会发生以下情况:
- (Windows) 进程的线程数开始以稳定的速度增加
- 此后一段时间,Jetty 停止响应 HTTP (TLS) 请求。
- 在此之后,线程仍会增加一段时间,然后在 300 左右停止增加(进程中大约有 100 个非码头线程)。
在响应停止的同时,类似以下的消息序列开始精确地每 2 分钟重复记录一次,并且永不停止:
2018-09-22 00:00:47 调试 [Scheduler-7519289] org.eclipse.jetty.io.IdleTimeout:156 - SelectChannelEndPoint@be1c72{/192.168.37.61:12421<->444,打开,输入,输出,- ,-,120001/120000,SslConnection@16ad018}{io=0/0,kio=0,kro=1} 空闲超时检查,经过:120001 ms,剩余:-1 ms
2018-09-22 00:00:47 调试 [Scheduler-7519289] org.eclipse.jetty.io.IdleTimeout:163 - SelectChannelEndPoint@be1c72{/192.168.37.61:12421<->444,打开,输入,输出,- ,-,120002/120000,SslConnection@16ad018}{io=0/0,kio=0,kro=1} 空闲超时过期
2018-09-22 00:00:47 调试 [Scheduler-7519289] org.eclipse.jetty.io.WriteFlusher:473 - 忽略:WriteFlusher@2527cb{IDLE} {}
2018-09-22 00:00:47 调试 [Scheduler-7519289] org.eclipse.jetty.io.AbstractEndPoint:186 - 忽略空闲端点 SelectChannelEndPoint@be1c72{/192.168.37.61:12421<->444,Open,in, out,-,-,120004/120000,SslConnection@16ad018}{io=0/0,kio=0,kro=1}
...
2018-09-22 00:02:47 调试 [Scheduler-7519289] org.eclipse.jetty.io.IdleTimeout:156 - SelectChannelEndPoint@be1c72{/192.168.37.61:12421<->444,打开,输入,输出,- ,-,120002/120000,SslConnection@16ad018}{io=0/0,kio=0,kro=1} 空闲超时检查,经过:120002 ms,剩余:-2 ms
2018-09-22 00:02:47 调试 [Scheduler-7519289] org.eclipse.jetty.io.IdleTimeout:163 - SelectChannelEndPoint@be1c72{/192.168.37.61:12421<->444,打开,输入,输出,- ,-,120002/120000,SslConnection@16ad018}{io=0/0,kio=0,kro=1} 空闲超时过期
2018-09-22 00:02:47 调试 [Scheduler-7519289] org.eclipse.jetty.io.WriteFlusher:473 - 忽略:WriteFlusher@2527cb{IDLE} {}
2018-09-22 00:02:47 调试 [Scheduler-7519289] org.eclipse.jetty.io.AbstractEndPoint:186 - 忽略空闲端点 SelectChannelEndPoint@be1c72{/192.168.37.61:12421<->444,打开,在, out,-,-,120003/120000,SslConnection@16ad018}{io=0/0,kio=0,kro=1}
为大约 200 个唯一的 SelectChannelEndPoint 对象(还有大约 200 个唯一的客户端 IP:端口组合)记录了像上面这样的序列。
版本:9.3.22 和 9.3.25。这些是 TLS 连接。
我们不会更改默认线程池大小。
似乎空闲连接的清理有一个错误,有时会出现 - 而不是从一开始 - 在上述问题序列开始之前,有许多一次性清除空闲连接。
请帮忙!这是一个已知的错误(我在互联网上找不到任何东西)?
还有哪些其他诊断信息可以帮助查明问题?