记一次请求响应超时15分钟org.apache.catalina.connector.ClientAbortException: java.net.SocketException: Connectio

目录

1、问题

2、排查问题

3、原因

4、解决问题

1、问题

公司一个很老的servlet项目,突然出现问题504。报错org.apache.catalina.connector.ClientAbortException: java.net.SocketException: Connection reset。

2、排查问题

刚开始以为是网络问题或者接口性能问题。排查代码和日志发现一个现象,每次请求超时都是假死十五分钟,并且都是执行sql语句的时候。

 查看代码发现只是简单地sql,并且数据库的慢查询日志没有慢查询。翻查日志上下文发现,并没有高并发访问。并在尝试压测此接口时,也远远达不到十五分钟。

网络上查找问题,发现了相关内容。

3、原因 

我们的网络通信过程如下:

Java服务器 <-> 防火墙 <-> 数据库服务器

java服务器会建立连接池,经过防火墙和数据库进行三次握手,正常情况防火墙会转发请求。如果防火墙删除这连接,就不会发送ASK包。java服务器再次使用这个连接发送请求,防火墙发现连接失效,就会丢弃网络包。java服务器没收到SDK,就会重新发包,如此循环。时间随着重发次数增加。

linux默认是十五次。

 和客户确认了防火墙策略,长链接限制三十分钟。

4、解决问题

可以通过修改重试次数来减少重试次数或者配置一个连接在池中最大生存的时间

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值