起因:
起初采用nginx做负载均衡,部署两个tomcat服务器,WEB端系统存在批量操作数据,把数据通过webservice接口循环一条一条传到第三方系统(第三方系统为避免自己系统并发频繁挂掉,要求我们每条数据间隔一秒后再传送下一条),由于数据量多,WEB前端从发送请求到接到响应请求需要时间至少20分钟;
分析解决过程:
1、起初,由于对nginx负载均衡原理理解不够深,以为是数据操作员批量操作,前端界面因响应时间长,响应完页面未刷新,操作员操作同一批数据到时重复上传,故对前端进行修改。
2、然后,前端修改完毕,进行测试,发现存在同样的重复发送请求问题。故增加打印请求参数日志进行追踪问题。
3、接着,再一次进行测试,查看日志,发现两次同样请求参数的日志时间间隔是10分钟,小于响应请求结束时间20分钟,如果由于页面未刷新进行二次操作则间隔时间应该大于20分钟,故判断不是由于二次操作导致重复请求。此时进行思考,想起系统用了nginx做负载均衡,会不会是一个请求响应时间超过nginx的请求超时时间,nginx再一次对另一个tomcat发起请求,查看nginx的配置,超时时间设置设置刚好也是10分钟(对应两次请求间隔时间)