这是架构
客户端---->负载均衡器---> nginx ----->申请
应用程序是单线程的,并且是同步的(没有async-io花哨的东西)
负载均衡器和nginx都有60秒超时
应用程序只有一个需要10秒才能处理的端点(直接调用应用程序时),当没有流量时,通过Loadbalancer的卷曲也需要10秒(这是正常的)
现在在高负荷期间,我们在nginx日志中看到很多499与60~esh响应时间相关
我目前的假设是
- 10个请求到达负载均衡器前面
- LB将10个请求转发给nginx并为10
启动其计时器
- Nginx确认10个请求启动10的定时器,代理1启动应用程序,其他9个等待
- 第一个请求完成,nginx转发200响应,nginx和LB的时间为10秒
- nginx现在向应用程序发送第二个请求需要10秒
- nginx接收200响应,所需时间:nginx和LB
为20秒
- 第3次请求=> 30秒,第4次请求=> 40秒
- 第6个请求是由应用程序收到的但是晚了,LB关闭了连接,超时
- nginx查看已关闭的连接并回复499
- 与第7,第8和第9个请求相同,所有请求都显示为60秒响应时间
醇>
现在我的问题:
- 我对正在发生的事情的理解是正确的吗?
- 应用程序是否完全处理了第6个请求?
- 上述第7个请求是否会被应用程序处理,或者应用程序永远不会知道有第7个以上的请求?
醇>