我们遇到过这样的情况:某个站点开始为 502 Bad Gateway 提供服务,但在上游服务器反弹后似乎没有恢复。nginx 服务器设置为代理/负载平衡两个上游服务器的请求。看起来数据库服务器将开始获得较高的平均负载,导致 Web 服务器(上游服务器)提供内容缓慢并超时(根据 nginx 服务器)。然后,Nginx 将提供 502 服务,考虑到这种情况,这是有道理的。
但奇怪的是,当 Web 服务器恢复时,nginx 似乎没有响应,我们必须重新启动 nginx 才能让它再次开始为网站提供服务。有没有好的方法来解决这个问题?我当前正在查看代理设置,看看是否有需要设置的内容,但没有找到任何内容。
查看 nginx 日志,我们会看到类似的条目(仅在此时间范围内提取三个错误示例):
2013/06/12 13:53:40 [error] 29840#0: *258391 upstream timed out (110: Connection timed out) while reading response header from upstream, client: n.n.n.n, server: www.example.org, request: "GET / HTTP/1.1", upstream: "http://n.n.n.n:80/", host: "www.example.org"
2013/06/12 13:54:11 [error] 29840#0: *261105 no live upstreams while connecting to upstream, client: n.n.n.n, server: www.example.org, request: "GET /HTTP/1.1", upstream: "http://example_rack/", host: "www.example.org"
2013/06/12 13:54:46 [alert] 29840#0: *261470 …Run Code Online (Sandbox Code Playgroud)