页面加载60秒后,我收到504 GATEWAY_TIMEOUT
http响应。
这不是一个正在加载的实际页面,而是一个正在执行的进程。我预计它需要超过60秒的时间,我已经尝试增加超时值,但没有帮助。
我正在使用express framework进行路由,并在EB(AWS Elastic Beanstalk)上托管作业。由于我已经增加了所有可能在AWS控制台中的EB和负载均衡器上找到的超时值,因此我假设一定是应用程序本身将超时设置为60s。然而,我可能错了。
我的代码:
/* GET home page. */
router.get('/main',function(req, res, next) {
req.connection.setTimeout(600000);
mainProcess(res);
//res.send("mainProcess() called");
});
更新日期:
除此之外,我还尝试了一种不同的方法。我在app.js
中添加了以下代码:
var connectTimeout = require('connect-timeout');
var longTimeout = connectTimeout({ time: 600000 });
app.use(longTimeout);
也没什么用。
**UPDATE2:**我也尝试过像这样增加/bin/www
中的超时:
var server = http.createServer(app);
server.timeout=600000;
**UPDATE3:**我注意到超时与nginx配置有关,正如我的日志所示:upstream timed out (110: Connection timed out) while reading response header
然而,我找不到一种方法来编辑弹性beanstalk上的nginx配置。我做了一些研究,但它似乎对我来说都是非标准的,太僵化了这么简单的事情。
5条答案
按热度按时间i34xakig1#
根据您的Update3信息,我认为您应该配置您的nginx配置文件,如:
代理读取超时和代理发送超时与您的问题有关。
yjghlzjz2#
在.ebextensions配置文件中,添加以下代码:
pgky5nke3#
通常,当一个作业花费超过30秒或40秒时,我通常会通知正在执行的用户,然后创建一个进程来处理数据库,而不是向服务器发送正常请求,以避免用户等待请求并避免超时问题,例如,当您设置服务器侦听指定端口时,可以尝试以下操作:
qojgxg4l4#
我遇到了同样的问题,所以我尝试将timeout设置为120000,如下所示:
fkaflof65#
有时候,您会在应用程序中的结束url后错过
/
,例如app.use("/customer/login",callback());
使用
app.use("/customer/login/",callback())