- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的症状与 https://forums.aws.amazon.com/message.jspa?messageID=580990#580990 相同但在 EB Docker 预配置 Python 上(即不考虑可见性超时)。首先,我的队列可见性超时(在 eb 和 sqs 中配置)是 1800 秒。
我在 60 秒后收到 502,因为我的消息需要超过 60 秒才能处理(并且在 60 秒后,队列当然会尝试重试该消息,因为它收到了 502)。我尝试了 .ebextensions proxy.conf 解决方案(在 ecd_bm 的链接中提到),但没有成功。
我的/var/log/nginx/access.log给出:
127.0.0.1 - - [18/May/2015:08:56:58 +0000] "POST /scrape-emails HTTP/1.1" 502 172 "-" "aws-sqsd/2.0"
我的 nginx/var/log/nginx/error.log 给出:
2015/05/18 08:56:58 [error] 12465#0: *32 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: , request: "POST /scrape-emails HTTP/1.1", upstream: "http://172.17.0.4:8080/scrape-emails", host: "localhost"
我的/var/log/aws-sqsd/default.log 给出:
2015-05-18T08:56:58Z http-err: 8240b585-61c3-4fba-b99a-265ace312308 (1) 502 - 60.050
首先,我的/etc/nginx/nginx.conf 看起来像:
# Elastic Beanstalk Nginx Configuration File
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
我曾经在 60 秒后收到 504 秒,但将以下内容添加到/etc/nginx/sites-enabled/elasticbeanstalk-nginx-docker-proxy.conf (包含在/etc/nginx/nginx.conf 中)摆脱了它们(但被 502 取代):
map $http_upgrade $connection_upgrade {
default "upgrade";
"" "";
}
server {
listen 80;
location / {
proxy_pass http://docker;
proxy_http_version 1.1;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffers 8 16k;
proxy_buffer_size 32k;
proxy_connect_timeout 1800s;
proxy_send_timeout 1800s;
proxy_read_timeout 1800s;
}
}
我已经将每个参数设置为默认 60 秒到 1800 秒 -- http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffers
我注意到 uwsgi 日志显示:你对 worker 优雅操作的仁慈是60秒这可能是问题所在吗? ——如果是这样,我该如何解决?如果不是,我该如何停止 502。
此外,我已将以下内容添加到/etc/nginx/uwsgi_params 但无济于事:
uwsgi_read_timeout 1800s;
uwsgi_send_timeout 1800s;
uwsgi_connect_timeout 1800s;
编辑 nginx 配置文件(使用 ssh)后,我总是会在 eb Web 界面中“重新启动应用程序服务器”,然后进行测试。
关于如何摆脱 502 并在处理消息时遵守可见性超时有什么想法吗?
最佳答案
这是我迄今为止所做的工作。不知道这是否是访问队列可见性超时的“安全”方式,但它目前似乎在我的 ruby 工作环境中起作用:
packages:
yum:
jq: []
commands:
match_nginx_timeout_to_sqs_timeout:
command: |
VISIBILITY_TIMEOUT=$(
/opt/aws/bin/cfn-get-metadata --region `{"Ref": "AWS::Region"}` --stack `{"Ref": "AWS::StackName"}` \
--resource AWSEBBeanstalkMetadata --key AWS::ElasticBeanstalk::Ext |
jq -r '.Parameters.AWSEBVisibilityTimeout'
)
if [[ -n "${VISIBILITY_TIMEOUT}" ]]; then
echo "proxy_read_timeout ${VISIBILITY_TIMEOUT}s;" > /etc/nginx/conf.d/worker.conf
service nginx restart
fi
实际上,我对这些数据有二次用途,因此最终将其拆分为 properties-cache
文件。请参阅https://github.com/Safecast/ingest/pull/43/files了解详情。
我的印象是,从 beanstalk UI 更新可见性超时不会更新该值,直到下一次部署为止,但我对这种情况很满意,因为无论如何它都不会根据环境经常更改。
关于nginx 502 阻碍 eb Worker 和 SQS 导致可见性超时不被遵守,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30312479/
wait() 和 wait(timeout) 之间有什么区别。无论如何 wait() 需要等待通知调用,但为什么我们有 wait(timeout)? 那么 sleep(timeout) 和 wait(
如何向以下脚本添加超时?我希望它将文本显示为“超时”。 var bustcachevar = 1 //bust potential caching of external pages after in
我正在使用 Firebase once() 方法来检索 React Native 移动应用中的值。问题是,如果手机离线,once() 永远不会返回。文档说 ref.off() 方法应该取消回调,但这似
我在一个表中有一个大型数据集(超过 200 万行,每行超过 100 列),存储在 cassandra 中,几个月前(也许是 2 个月?)我能够执行一个简单的命令来跟踪该表中的记录数量: SELECT
我使用 jquery 开发移动应用程序,下面是我的代码,当我向包含的页面添加 5 或 6 行时,一切正常。但如果我添加多行显示错误消息:Javascript 执行超时。 function succes
我正在使用一个 javascript 确认,它将在 15 分钟后重复调用。如果用户未选择确认框中的任何选项我会在等待 1 分钟后重定向他。如何实现这一目标?我的代码是这样的 var timeo
每次我在沙箱环境中运行这段代码时,我都会超时并最终崩溃。我已经通过多个 IDE 运行它,但仍然找不到任何语法错误。如果有人看到了我没有看到的东西,我将非常感谢您的意见。 //assign variab
更新联系人后我会显示一条消息,1500 毫秒后我会转到另一个页面。我是这样做的: onSubmit() { if (this.form.valid) {
从昨天开始,我拼命尝试使用最新版本的 PHPMailer 运行一个非常简单的电子邮件脚本。 最荒谬的是,同一个脚本在两台服务器上不起作用,但在另一台服务器上却起作用。 这是我的尝试(来自 PHPMai
我已阅读以下 2 篇文章并尝试实现相同的文章。 我的代码是这样的,超时发生在这里 HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
我正在尝试连接到 wsdl 服务, 但收到此错误: wsdl 错误:获取 http://api.didww.com/api/?wsdl - HTTP 错误: header 的套接字读取超时 本地没有问
我在使用 Ansible 的 CentOs7 实例上从 Artifactory 下载 jar 文件时遇到问题。这是我第一次在 Linux 实例上这样做。 我在每个 Windows 实例上都使用了 wi
在过去的两天里,我一直在寻找原因,我在互联网上和堆栈上尝试了很多解决方案。 我有一个带有 ubuntu 16.04 和 apache2 的专用 VM -> 服务器版本:Apache/2.4.18 (U
我正处于构建 PHP 应用程序的早期阶段,其中一部分涉及使用 file_get_contents()从远程服务器获取大文件并将它们传输给用户。例如,要获取的目标文件是 200 mB。 如果下载到服务器
我正在尝试连接到本地网络内的路由器。到目前为止,我已经使用了 TcpClient。 检查我的代码: public static void RouterConnect() {
我正在尝试构建一段代码来搜索使用 Mechanize 和 Ruby 超时的页面。我的测试台包括一个专门写入超时的页面,以及 3 个正常运行的页面。这是代码: urls = ['http://examp
我是 python 的新手,也是语义网查询领域的新手。我正在使用 SPARQLWrapper 库查询 dbpedia,我搜索了库文档但未能找到从 sparqlWrapper 触发到 dbpedia 的
我正在从 GenServer 中的句柄信息功能调用 elixir genserver 以添加电话号码获取表单客户端。但是一旦调用了handle_call,所有者进程就会崩溃[超时]。请帮忙。 全局创建
假设我的 WCF 服务中有以下执行链: ServiceMethod 调用并等待 Method1,然后调用并等待 Method2,后者调用并等待 Method3。最后 ServiceMethod 在返回
目前我正在开发一个从远程服务器发送和接收文件的应用程序。为了进行网络操作,我正在使用 QNetworkAccessManager。 要上传文件,我使用 QNetworkAccessManager::p
我是一名优秀的程序员,十分优秀!