天天看点

记一次线上大量close_wait

背景:

一个微信的小项目。项目很简单,只有定位、投票、分享、排名、留言等功能。​

当上线开始,大量用户访问首页投票。没过1分钟项目立马崩了。

马上排查错误原因。

  1. 查看错误日志,因未打印详细日志,未查到有价值信息。
  2. 查看TCP/IP监控。输入 netstat -apn|grep 8080 看到如下信息。
记一次线上大量close_wait

大量的CLOSE_WAIT。

因为首页只有一个定位接口,获取用户位置信息。微信获取位置信息需要发送http请求获取签名。

此时检查对应代码发现,httpUtil方法finally里并未close操作。这样就很明确了。立马修改代码。

发布后验证发现close_wait消失。 

记一次线上大量close_wait

总结:网上找util方法一定要仔细检查,否则坑死你。