诡异的Connection reset

场景:

开发反馈测试环境A应用通过httpclient连接B应用,偶发java.net.socketException: connection reset报错。

理解 Connection reset:

在我看来 Connection reset分为2种情况:

第一种Connection reset by peer:

      服务器返回了RST时,如果此时客户端正在往Socket套接字的输入流中写数据则会提示"Connection reset by peer"。

第二种java.net.socketException: connection reset:

     服务器返回了RST时,如果此时客户端正在从Socket套接字的输出流中读数据则会提示Connection reset";

那么不管那种情况 其实都是服务器返回了RST标志位,但是客户端还在进行输入输出数据,

通过以上描述,猜测Connection reset的原因是客户端连接保活机制超时回收连接,但是服务端还在使用该连接池导致报错。

排查过程:

首先肯定是自己去模拟错误,但是这个模拟错误代价有点大,毕竟是偶发现象。连续访问几十次都没模拟出问题。之后我只能放弃挣扎去看两个应用的相关日志 看能不能找到一点猫腻,比如在这里我会根据traceid跟踪整条链路,但是几乎没什么收获。之后配合开发将连接地址改成直连,这里说一下我这环境是k8环境。 然后直连模拟了大概一天。并没有出现connection reset。

那么问题肯定是出在连接svc地址的时候出现了connection reset问题。

目前该环境用的模式是ipvs

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值