内部代理服务器单点故障导致后端服务概率性失败
问题现象:下载外部文件功能接口,后端服务通过代理请求外网接口,概率性报错404
排查:由于服务日志打印不详细,只抛出了UncaughtException
借助阿尔萨斯工具arthas,打印出方法执行的堆栈链路及其耗时情况,大小在调用外部接口下载读取文件信息时,抛出了SocketTimeoutException: read timeout,这个异常未被捕获,最后转成了UncaughtException。
到这里,只是第一步,最终原因未确定
后端服务是分布式集群,有数十个节点,经过观察分析,有数个节点请求外部接口,百分之百请求下载成功,而请求走的是内网代理。最后定位发现,后端服务有问题的节点均走到了有问题的代理节点上了(代理本身也是个集群)。
重点是观察分析到数个节点的百分百成功情况,否则这个问题无解