Tomcat重启(OOM/双实例场景)下客户端请求的处理机制问询
Tomcat 请求处理场景解析
1. Tomcat因内存不足(OOM)重启时的未完成请求处理
当Tomcat因OOM崩溃或被强制重启时,所有正在处理的客户端请求都会被直接终止:
- 运行中的Tomcat进程突然退出,无法完成未处理的请求,客户端会收到连接重置、超时或500系列错误
- 该场景下,请求会被取消,客户端需重新发起请求(对应可选处理方式1)
2. 集群中单台Tomcat重启时的请求处理
对于两台Tomcat组成的集群场景,当其中一台被停止重启时,正在该节点处理的订单列表请求的处理逻辑如下:
- 若客户端直接直连该Tomcat节点、无负载均衡层,请求会随Tomcat进程终止而中断,客户端需重新发起请求
- 即使配置了前置负载均衡器,负载均衡仅能将新请求转发到正常节点,已经进入重启节点的请求无法被移交到另一节点继续处理——因为请求上下文(如会话状态、中间处理数据)无法在不同Tomcat实例间自动迁移
- 因此实际结果是请求会被取消,客户端需重新发起请求(对应可选处理方式1)
补充:Tomcat原生不存在请求自动移交的机制,除非业务层额外实现了分布式会话、请求状态持久化等复杂逻辑
内容的提问来源于stack exchange,提问作者user2286858
相关产品推荐
相关产品推荐

