Jetty 9.2.7高并发下报HttpConnection IllegalStateException后重启问题
Jetty 9.2.7高并发抛出IllegalStateException异常解决方案
根因说明
该异常是Jetty 9.2.7版本的已知内核bug,高并发场景下HTTP连接复用过程中,HttpChannelState的状态机处理存在逻辑缺陷,会出现DISPATCHED状态下重复触发请求处理的冲突,大量异常堆积会触发Jetty的自我保护机制导致服务重启。
解决方案
- 优先升级Jetty版本:官方已在后续9.2.x分支修复该问题,可直接升级到9.2.x系列最新稳定版,若业务兼容也可升级至长期支持的9.4.x系列版本,从根本上解决状态机处理缺陷。
- 临时规避方案(适用于暂时无法升级版本的场景):
- 调整Jetty线程池配置,适当增大
QueuedThreadPool的最大线程数,根据服务器CPU、内存配置将默认值调整为500~1000,缓解高并发下线程调度积压导致的状态冲突 - 缩短HTTP连接空闲超时时间,减少高并发下连接复用的概率,降低状态冲突触发可能
- 排查业务代码中的异步Servlet使用逻辑,禁止在
AsyncContext已调用complete()方法后再操作请求/响应对象,也不允许重复调用dispatch()方法,避免人为触发状态异常
- 调整Jetty线程池配置,适当增大
- 上线验证:调整配置或升级版本后,通过压测工具模拟高并发请求场景,确认异常不再抛出,同时持续监控Jetty线程队列长度、活跃连接数等核心指标,避免出现服务性能下降。
内容的提问来源于stack exchange,提问作者JiangNotme
相关产品推荐
相关产品推荐

