node.js - 无法解释的 Node.js 504s

标签 node.js express nginx redis http-status-code-504

我们使用 Express (4.0.0) 运行 Node (v0.10.38),通过 nginx (1.2.1) 代理,通常效果很好。但是,最近我们切换到新的服务器设置。现在,在启动服务器大约 30 分钟后,服务器开始返回 504s(网关超时)。从服务器直接访问Node(绕过nginx)也超时。每隔一段时间,我们就会收到一系列来自 redis 的 ETIMEDOUT 错误,但是从服务器连接到 redis 服务器是通过命令行进行的。此外,服务器甚至在 redis 错误出现之前就开始返回 504。无论如何,将我们的redis中间件(connect-redis)更新到最新版本后,这些错误停止了,但504s仍然出现。然而,在我们的代码中禁用与redis的连接10小时后,没有出现504。我们已经尝试定期发送 redis ping 以防止错误,认为这是原因,但 504s 继续。当不连接到 redis 时,服务器不会 504,因此它可能以某种方式绑定(bind)到 redis。还有什么我们可以尝试的吗?

抱歉,如果没有太多工作要做。我们也没有那么多,急于尽快解决这个问题。如果需要更多细节,我可以更新问题。谢谢。

最佳答案

仍然不知道根本原因,但我们最终通过每分钟 ping Redis 来解决这个问题,这样连接就不会被终止。

关于node.js - 无法解释的 Node.js 504s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29545366/

相关文章:

nginx - Kubernetes Ingress 网络拒绝某些路径

amazon-web-services - Amazon Web Service ECS (SSL/HTTPS) 问题

node.js - 使用 docker 安装 nodejs

node.js - Semver 与 Bash

javascript - 等待 css_parser.getCSSFiles()

node.js - sequelize belongsToMany 给出 TypeError : undefined is not a function

node.js - 在 EC2 上使用 node.js 驱动的服务器,如何减少 TCP 连接时间?

javascript - 如何根据字符串输入更新一个Mongo文档Node.js?

javascript - Sequelize错误: column reference "id" is ambiguous.无法在文档中找到答案

ruby-on-rails - Foreman无法启动Nginx,但我可以手动启动。为什么?