转载

springboot运行突然假死

线上java项目运行两分钟突然进入假死状态

1. netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

发现有大量的CLOSEWAIT端口占用,继续调用该服务的api,等待超时之后发现CLOSEWAIT的数量上升,也就是说服务几乎完全僵死。

2.查看gc日志,GC正常

root@app-2:/# jstat -gcutil 1 2000 10
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 58.10 12.21 21.50 93.86 90.84 843 16.835 5 1.653 18.489
0.00 58.10 38.02 21.50 93.86 90.84 843 16.835 5 1.653 18.489
0.00 58.10 75.09 21.50 93.86 90.84 843 16.835 5 1.653 18.489
0.00 58.10 94.79 21.50 93.86 90.84 843 16.835 5 1.653 18.489
79.04 0.00 15.52 21.50 93.86 90.84 844 16.844 5 1.653 18.497
79.04 0.00 46.05 21.50 93.86 90.84 844 16.844 5 1.653 18.497
79.04 0.00 66.68 21.50 93.86 90.84 844 16.844 5 1.653 18.497
79.04 0.00 84.37 21.50 93.86 90.84 844 16.844 5 1.653 18.497
0.00 67.13 3.09 21.50 93.86 90.84 845 16.852 5 1.653 18.505
0.00 67.13 17.27 21.50 93.86 90.84 845 16.852 5 1.653 18.505

3.查看错误日志发现出现大量的连接超时(连接第三方服务器进行数据推送)

4.结合报错场景,暂时取消这个无法连接的服务器推送

5.CLOSEWAIT迅速减少,几乎没有,这时服务正常访问


正文到此结束
该篇文章的评论功能已被站长关闭
Loading...