问题描述:一个基于nginx负载均衡的系统,在进行获取图片的时候出现了奇怪的情况,使用测试工具发现只有30%的概率可以获取到图片资源。
问题分析与排查:
1,首先对于获取图片的接口不适用nginx进行测试,可以获取图片,排除了是url错误导致获取不到图片的情况。
2,nginx服务器中配置了两个tomcat服务器项目,进行负载均衡,分别进行测试,两个服务器都没有问题。此种概率性获取不到资源或者请求失败的情况有可能是负载的某个服务器的服务挂掉了。
3,检查了nginx服务器的配置,发现负载策略存在一定的问题
从上述配置中可以看到获取图片的URL和该项目访问的URL是有所冲突的,访问项目的目录配置了两个负载,而且172.18.1.39这一服务器的权重是比较高的,因此当访问/bulterApi/image/的时候会优先访问172.18.1.39这一服务器,但是实际上可以访问到图片的只有172.18.1.40这一服务器,所以当你访问图片资源时,只有百分之三十的可能性获取到图片,所以这一负载策略是有问题的。
解决方案:
1,两个服务器都配置获取图片的接口
2,将172.18.1.40服务器的权重设置高一点。
最好的是两个服务器都配置访问图片的接口。