Amazon web services 弹性豆茎工人';s SQS守护进程在1分钟后获得504网关超时

Amazon web services 弹性豆茎工人';s SQS守护进程在1分钟后获得504网关超时,amazon-web-services,nginx,amazon-elastic-beanstalk,amazon-sqs,worker,Amazon Web Services,Nginx,Amazon Elastic Beanstalk,Amazon Sqs,Worker,我有一个弹性Beanstalk worker,它一次只能运行一个任务,而且需要一些时间(从几分钟到,希望不到30分钟),所以我在SQS上排队 在我的工作配置上,我有: HTTP connections: 1 Visibility timeout: 3600 Error visibility timeout: 300 (On "Advanced") Inactivity timeout: 1800 问题在于,似乎有一个1分钟的超时(在nginx上?)覆盖了“非活动超时”,返回504(网关超时)

我有一个弹性Beanstalk worker,它一次只能运行一个任务,而且需要一些时间(从几分钟到,希望不到30分钟),所以我在SQS上排队

在我的工作配置上,我有:

HTTP connections: 1
Visibility timeout: 3600
Error visibility timeout: 300

(On "Advanced")
Inactivity timeout: 1800
问题在于,似乎有一个1分钟的超时(在nginx上?)覆盖了“非活动超时”,返回504(网关超时)

这是我可以在aws-sqsd.log文件中找到的内容:

2016-02-03T16:16:27Z init: initializing aws-sqsd 2.0 (2015-02-18)
2016-02-03T16:16:27Z start: polling https://sqs.eu-central-1.amazonaws.com/855381918026/jitt-publisher-queue
2016-02-03T16:23:36Z message: sent to %[http://localhost:80]
2016-02-03T16:24:36Z http-err: 1444d1ba-ecb5-46f8-82d6-d0bf19b91fad (1) 504 - 60.006
2016-02-03T16:28:54Z message: sent to %[http://localhost:80]
2016-02-03T16:29:54Z http-err: 1b7514d3-689a-4e8b-a569-5ef1ac32ed0c (1) 504 - 60.029
2016-02-03T16:29:54Z message: sent to %[http://localhost:80]
2016-02-03T16:29:54Z http-err: 1444d1ba-ecb5-46f8-82d6-d0bf19b91fad (2) 500 - 0.006
2016-02-03T16:33:49Z message: sent to %[http://localhost:80]
2016-02-03T16:34:49Z http-err: 3a43e80f-a8d3-46b2-b2a0-9d898ad4f2a6 (1) 504 - 60.023
2016-02-03T16:34:54Z message: sent to %[http://localhost:80]
2016-02-03T16:34:54Z http-err: 1b7514d3-689a-4e8b-a569-5ef1ac32ed0c (2) 500 - 0.004
2016-02-03T16:34:54Z message: sent to %[http://localhost:80]
2016-02-03T16:34:54Z http-err: 1444d1ba-ecb5-46f8-82d6-d0bf19b91fad (3) 500 - 0.003
2016-02-03T16:39:49Z message: sent to %[http://localhost:80]
2016-02-03T16:40:49Z http-err: 3a43e80f-a8d3-46b2-b2a0-9d898ad4f2a6 (2) 504 - 60.019
有些事情在这里是有意义的,比如从504/500发送到再次将任务重新发送给工作者(这与“错误可见性超时”的300秒配置相匹配),每条消息都需要5分钟的延迟

这500个代码符合我当前的逻辑:如果仍有一些东西在运行,工作人员会抛出500个代码来拒绝任务

我已经看到了很多关于设置负载平衡器连接超时设置的答案,但是,由于这是一个从SQS队列提取消息的工作者,因此没有负载平衡器


知道我应该怎么做来覆盖1分钟超时设置吗?

因为我有时间更好地研究这个问题,解决方案是添加一个配置代理超时设置的ebextension:

files:
    "/etc/nginx/sites-available/elasticbeanstalk-nginx-docker-proxy-timeout.conf":
        mode: "000644"
        owner: root
        group: root
        content: |
            proxy_connect_timeout       3600;
            proxy_send_timeout          3600;
            proxy_read_timeout          3600;
            send_timeout                3600;
commands:
    "00nginx-create-proxy-timeout":
        command: "if [[ ! -h /etc/nginx/sites-enabled/elasticbeanstalk-nginx-docker-proxy-timeout.conf ]] ; then ln -s /etc/nginx/sites-available/elasticbeanstalk-nginx-docker-proxy-timeout.conf /etc/nginx/sites-enabled/elasticbeanstalk-nginx-docker-proxy-timeout.conf ; fi"
资料来源: