如果nginx发送499错误,请求是否“丢失”?

时间:2017-06-15 20:39:02

标签: nginx timeout

这是架构

客户端---->负载均衡器---> nginx ----->申请

应用程序是单线程的,并且是同步的(没有async-io花哨的东西)

负载均衡器和nginx都有60秒超时

应用程序只有一个需要10秒才能处理的端点(直接调用应用程序时),当没有流量时,通过Loadbalancer的卷曲也需要10秒(这是正常的)

现在在高负荷期间,我们在nginx日志中看到很多499与60~esh响应时间相关

我目前的假设是

  1. 10个请求到达负载均衡器前面
  2. LB将10个请求转发给nginx并为10
  3. 启动其计时器
  4. Nginx确认10个请求启动10的定时器,代理1启动应用程序,其他9个等待
  5. 第一个请求完成,nginx转发200响应,nginx和LB的时间为10秒
  6. nginx现在向应用程序发送第二个请求需要10秒
  7. nginx接收200响应,所需时间:nginx和LB
  8. 为20秒
  9. 第3次请求=> 30秒,第4次请求=> 40秒
  10. 第6个请求是由应用程序收到的但是晚了,LB关闭了连接,超时
  11. nginx查看已关闭的连接并回复499
  12. 与第7,第8和第9个请求相同,所有请求都显示为60秒响应时间
  13. 现在我的问题:

    1. 我对正在发生的事情的理解是正确的吗?
    2. 应用程序是否完全处理了第6个请求?
    3. 上述第7个请求是否会被应用程序处理,或者应用程序永远不会知道有第7个以上的请求?

0 个答案:

没有答案