怎么在百度制作自己的网站,网页设计与制作模板,上海比较好的服装外贸公司,软件商店最新版下载背景
日常运维过程中#xff0c;收到“应用A”突然挂起没有处理请求的告警#xff0c;然后触发“存活检查”不通过#xff0c;自动重启了。
问题
为什么“应用A”突然挂起#xff1f;
分析
排查过程很长#xff0c;走了很多弯路#xff0c;这里只列出本案例有效行动…背景
日常运维过程中收到“应用A”突然挂起没有处理请求的告警然后触发“存活检查”不通过自动重启了。
问题
为什么“应用A”突然挂起
分析
排查过程很长走了很多弯路这里只列出本案例有效行动
jstack 1 /tmp/1.log 反复dump 出多个java线程文件进行分析。netstat -anp | grep CLOSE_WAIT 统计CLOSE_WAIT
发现一个规律端口8085 CLOSE_WAIT 出现的次数与java线程文件的“http-nio-8085-exec-7 #109 daemon prio5 os prio0 tid0x00007f90ced37000 nid0x77 in Object.wait() [0x00007f9074965000]” 次数一致 进一步分析java出现Object.wait()是一个对象锁让线程进入“等待状态”
行动
与开发沟通通过检查代码没有显式声明object.wait() 经过反复排查最后怀疑是okhttp的bug开发同学查阅后发现果然是bug
“https://github.com/square/okhttp/issues/7942 这个是okhttp3.8.1的版本问题升级一下到3.14.9”
结论
升级okhttp到3.14.9 经过复核后没有在发现类似的情况。 备注
okhttp的超时间设置
private static final int CONNECT_TIMEOUT 10; private static final int READ_TIMEOUT 3; private static final Int WRITE_TIMEOUT 10;