我们遇到了一个 502 错误不一致的问题,追踪原因是一件非常令人沮丧的事情。我们可以通过快速发送多个同时的请求来重现该问题。问题是,5 秒内发送的请求数只有 10 到 20 个(不是拼写错误)。所以显然这种类型的负载应该很容易处理。
我们非常喜欢 Nginx + Tornado 方法,但正在考虑采用更传统的方法(例如线程),因为这个问题很难解决。我想知道您是否 a) 知道如何修复此问题以及 b) 我们如何找到罪魁祸首。
日志文件只是简单地标识出存在被拒绝的连接。我们遇到了与此帖子相同的问题: https://stackoverflow.com/questions/2962439/how-do-i-debug-a-http-502-error
但是没有提供如何解决问题的答案,所以我希望你能帮忙,因为这可能是此类设置的常见问题。
提前致谢,
保罗
答案1
默认情况下,nginx 未配置为在其中一个上游返回 502 错误时重试与另一个上游的连接。您基本上需要添加以下内容:
proxy_next_upstream error timeout http_502;
根据您的配置。这将防止 502 错误直接发送回客户端,而是导致 nginx 尝试寻找更好的上游。根据此帖子,它将尝试所有上游,然后故障回复到客户端:
http://forum.nginx.org/read.php?2,152071,152212
以下是有关配置指令的更多详细信息: