本教程讲解以下内容:
- Node.js 中 504 网关超时是什么
- 如何解决 Node.jS 或 Express 应用程序中的 504 网关超时错误
- Express 应用程序超时
什么是 Node.js 中的 504 网关超时?
504 网关超时是一种 HTTP 响应服务器端错误,表示服务器在给定的超时时间内无法返回响应。向服务器的请求花费的时间比预期的时间长(默认为 2 分钟),并且响应包含 504 网关超时错误。
另一个原因是服务器由于许多原因(如崩溃、内存不足或任何不受控制的优雅错误)而关闭。
什么是 AWS 中的 504 网关超时?
504 网关超时错误是 AWS 云上常见的错误。向托管在 AWS 上的应用程序发出的请求无法在给定的超时时间内返回响应。
AWS 中的应用程序使用 Web 服务器或负载均衡器来启用。
因此,当应用程序无法在规定的时间内返回响应时,负载均衡器或 Web 服务器会终止请求,从而抛出此错误。
如何解决 Node.js Express APP 中的 504 网关超时错误。
Node.js 是一种 JavaScript 后端框架。ExpressJS 是一种服务器端框架,用于创建和管理用于 nodejs 应用程序的服务器。找出
那么你该如何解决这个错误?
Node.js 超时配置
Node.js 提供了内置的超时配置。
timeout
:与 HTTP 套接字超时相关 keepAliveTimeout
:非活动服务器等待传入的 API 请求的时间,默认为 5 秒。 headersTimeout
:用于解析标题的超时,默认为 60 秒(60000 毫秒) requestTimeout
:对于 Node 16 版本,HTTP 请求超时默认为 2 分钟,对于 Node 18 版本,HTTP 请求超时增加到 5 分钟(300000 毫秒)。
如何解决 Express JS 的 504 网关超时错误?
您可以在 Express 应用程序中全局或请求 API 级别设置超时。
默认超时时间为 2 分钟。
要全局设置,请在 express 对象级别设置超时,如下所示:
const app = express();
// 为所有 API 请求应用服务器响应超时
app.listen(port,host,function(err){
if(err){
console.error("Error in starting app",err);
} else {
console.info("server started")
}
})
app.timeout = 240000 // 默认为 120000
要设置特定的 API 级别,请添加 API 的请求对象,如下所示。
app.post('/api/test',function(req,res){
req.setTimeout(240000);
});