淘宝免费ip地址查询导致服务堵死的坑
1、业务中因为想根据用户ip来做一些友好的提示,所以在网上找了个免费的ip查询地址http://ip.taobao.com/service/getIpInfo.php?ip=
虽然说淘宝的这个地址会限制频率,但是也还勉强可以用
但是今天线上几个服务突然全部被堵死了
主要现象如下:
本地curl "127.0.0.1:port"没反应,外部也进不来
ss -s发现 TCP也是达到1W+
项目日志有的时候刷的很快,有的时候就暂停了
top查看,发现cpu并不高,内存占用也一般
因此看不出来问题究竟出在哪里
-------------------------------------------------------------------------------------------------------------------------------
使用jstack dump出停止时的线程信息
发现线程信息基本都是TIME_WAITED,WAITED,而且每个线程都各自等待着不同的线程
本地经过仔细的看,发现了点蛛丝马迹,代码定位到请求淘宝的接口上
接着再用https://jstack.review/#tda_1_dump分析了一下,结果如图,也基本确定了问题出在这里
查看代码,最后发现,一个很高频的接口,因为请求淘宝接口的http工具(历史工具),没做超时显示,返回时间最高的甚至达到900多s
至此,问题解决,项目http工具不统一,留下的炸弹,而api接口未做熔断,也是一大纰漏
文档来源:51CTO技术博客https://blog.51cto.com/lxw1844912514/3057233
页:
[1]