记一次httpclient Connection reset问题定位
问题:某业务系统在运行一段时间后,某个API一定概率偶现Connection reset现象。
问题定位:
首先想到的是要本地复现出这个问题,但一直复现不出来。

8、但考虑服务端有设置60s的超时时间,不会出现那么大概率的问题
9、可以通过在返回header头中加入timeout时间,强制给客户端设置一个长连接超时时间。如
10、去掉默认策略。(因为特殊原因不能让客户端改)仍然不能解决问题。
11、修改测试任务发送的时间,发现sleep时间在30S内不会出现该问题,sleep时间在30-60s会50%概率出现。
12、查询所有链路上的(客户端、lvs、nginx)的相关系统参数超时配置,修改均无效。
13、在设置为32S sleep的场景抓包分析。客户端抓包如下,发现在32S用同一个连接去发送数据后,服务端返回了一个RST(重置连接)信号。但对比服务端nginx日志,并未发现收到该包。怀疑问题出现在LVS
14、LVS上抓包,发现是LVS上回复了RST重置连接的包。检查LVS配置
15、发现有个如下设置:
ipvsadm --set 30 6 60
看说明,应该不会影响功能。在抓包的结果中也发现,客户端会重新换个连接,重新发一次请求。
16、思考良久,在测试代码中加入了catch,发现catch后就不会进行重新选取连接重试。导致BUG。
17、查看LVS官方文档,发现三个参数和baidu搜出来的结果不一致。该参数会使TCP连接超时。
18、修改参数为set 60 6 60,(加上参数的目的是为了缓解长连接 的四层tcp耗尽攻击)。问题解决。
至此,问题定位完成。要保证lvs的tcp established超时时间大于nginx的keepalive超时时间。
参考:http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.ipvsadm.html
https://dongliboyqq.iteye.com/blog/2409122
https://blog.csdn.net/qq_35440040/article/details/83543954
记一次httpclient Connection reset问题定位的更多相关文章
- 记一次压测问题定位:connection reset by peer,TCP三次握手后服务端发送RST_网络_c359719435的专栏-CSDN博客 https://blog.csdn.net/c359719435/article/details/80300433
记一次压测问题定位:connection reset by peer,TCP三次握手后服务端发送RST_网络_c359719435的专栏-CSDN博客 https://blog.csdn.net/c3 ...
- HttpClient : java.net.SocketException: Connection reset
1. 问题排查 httpclient : 4.5.5 排查过程 : 一次SocketException:Connection reset 异常排查 主要原因 : 调用 http 请求时发生了 Sock ...
- HttpClient遭遇Connection Reset异常,如何正确配置?
最近工作中使用的HttpClient工具遇到的Connection Reset异常.在客户端和服务端配置不对的时候容易出现问题,下面就是记录一下如何解决这个问题的过程. 出现Connection Re ...
- Java socket 说明 以及web 出现java.net.SocketException:(Connection reset或者Connectreset by peer:Socket write error)的解释
另外http://www.cnblogs.com/fengmk2/archive/2007/01/15/using-Socket.html可供参考 一Java socket 说明 所谓socket ...
- JDBC Connection Reset问题分析
2014年7月13日 半年前開始.项目组測试MM在验证功能时.常常报怨讲測试环境上的应用在启动时非常慢,偶尔会报失败,遇到类似问题多数情况下又一次启动一次就能够启动成功,但少数时候也有重复启动不成功的 ...
- 一次SocketException:Connection reset 异常排查
问题描述 上一期的需求上线之后,线上多了一个异常:Connection reset.如下: [2017-03-22 00:45:00 ERROR] [creativeAuditTaskSchedule ...
- connection reset 分析解决(转载)
文章转自:https://my.oschina.net/xionghui/blog/508758;记录下来以便以后复习查阅; 在使用HttpClient调用后台resetful服务时,“Connect ...
- Connection reset原因分析和解决方案
在使用HttpClient调用后台resetful服务时,“Connection reset”是一个比较常见的问题,有同学跟我私信说被这个问题困扰很久了,今天就来分析下,希望能帮到大家.例如我们线上的 ...
- 令人头疼的Connection Reset
背景: 要爬取某网站的数据,数据每页10条,有很多页(形式如同table表格).使用HttpClient 逐行逐页爬取数据,但在循环爬取多次时,总会在不确定的位置报错 在检查代码逻辑无果之后,开始疯狂 ...
随机推荐
- java 获取config 配置文件
static ResourceBundle PropertiesUtil = ResourceBundle.getBundle("config"); public static S ...
- redis搭建与安装2
第一步redis安装:1.首先确认下载包为64位的还是32位的2.下载http://code.google.com/p/servicestack/downloads3.解压下载包得到以下文件:cygw ...
- svn文件管理器的使用
服务器端: 客户端 使用SVN的注意事项 做任何操作之前,先update一下 不要修改其他人的文件 不要在SVN里直接打开.编辑文件 不要在打开.编辑文件的时候,进行操作 SVN客户端的安装,非常简单 ...
- List Slider
http://www.jssor.com/download-jssor-slider-development-kit.html
- nested exception is java.lang.NoClassDefFoundError: org/codehaus/jettison/json/JSONObject异常的解决办法
解决办法:你可以尝试添加一个jar包,因为我加入了一个jar包后错误问题成功解决. 将所需要的jettison-1.2.jar包复制到lib文件夹里面,重启项目,问题搞定.
- 使用java源代码生成Kettle 4.4
kettle作为ETL工具.其功能日趋完好,已得到广大数据挖掘爱好者的青睐.又由于他是java开源项目.为适应项目需求.有必要研究其源代码,最好可以集成到Java项目中.作为项目执行流程的一个重要环节 ...
- 大浪淘沙,JSP终将死去
首先讲明,我不是标题党. 这纯属我个人的意见.勿喷. 先来讲讲JSP是怎么出现的吧. 在早期的WEB中,JS.CSS远未成熟,技术慷慨向并不明白!因为前端语言的匮乏.各家大公司都推出基于后端的模板语言 ...
- Android Studio生成apk
1.菜单Build->Generate Signed APK 2.生成android.keystore,能够依据弹框去Create new一个,也可使用命令来生成android.keystore ...
- echarts 地图 动态 展示 结合css+js
echarts地图展示功能非常强大,官网上静态展示的样例非常多了,动态的资料少.研究了下.我眼下实现的通过ajax从server获取数据动态展示地图. 另外,我们有时候希望在地图之上做些自己定义的东西 ...
- Strings are immutable
It is tempting to use the [] operator on the left side of an assignment, with the intention of chang ...