此问题已在AWS论坛上提出,未作任何回复.以下是原始问题
嗨!
我们正在对ELB背后的API实例进行滚动升级,并且在等待连接耗尽完成时会看到令人震惊的很长时间.方案如下:
我们运行两个相同的系统,4个c3.large在ELB后面,一个系统用于开发,一个系统用于生产.两个系统之间的唯一区别是生产系统持续提供请求.
当没有流量时,对于所有4个实例,dev系统的滚动升级大约需要3分钟.在生产系统中,这些时间在6到17分钟之间波动.出于原因,我们需要平均每小时进行2次滚动升级,然后滚动升级的17+分钟开始成为问题.
我们所有的API调用都是<100ms,因此没有长时间运行的请求应该保持连接耗尽这么长时间.我们一直在改变ELB上的空闲时间和连接耗尽时间的值,没有很好的结果.
当降低连接耗尽超时时,我们看到来自API的502响应,因为它强制地断开连接并且降低空闲超时似乎没有效果.
总而言之,我们想知道如何减少这些时间.由于我们的请求都是<100ms,理论上不应该花费一两秒钟来消耗实例的连接.我们在这里缺少什么?
最后一点:我们尝试关闭连接排放,这似乎比降低连接耗尽时间更好.平均每次测试运行只有1或2个错误,有些运行没有错误.这是因为响应时间如此之快?我们的响应也相对较小,因此TCP响应可能保存在OS输出缓冲区中,因此即使关闭连接耗尽也可以响应?将连接耗尽超时设置为0并关闭后有什么区别?
附加信息:
谢谢!
我正在尝试使用Ansible从Codeship构建连接到AWS EC2实例.这已经在另一个AWS区域(eu-west-1)中完美地工作了,但是现在我想在us-east-1中设置服务器并且我收到以下错误:
<ec2-52-11-9-45.compute-1.amazonaws.com> ESTABLISH SSH CONNECTION FOR USER: ec2-user
<ec2-52-11-9-45.compute-1.amazonaws.com> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ec2-user -o ConnectTimeout=10 -o ControlPath=/home/rof/.ansible/cp/ansible-ssh-%h-%p-%r -tt ec2-52-11-9-45.compute-1.amazonaws.com '( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1461915330.37-230126286487108 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1461915330.37-230126286487108 )" )'
fatal: [ec2-52-11-9-45.compute-1.amazonaws.com]: UNREACHABLE! => {"changed": false, "msg": "ERROR! SSH encountered an unknown error. The output was:\nOpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /home/rof/.ssh/config
debug1: Reading …Run Code Online (Sandbox Code Playgroud) 我希望我的python脚本(连接到aws)使用来自〜/ .aws/credentials的aws配置文件
所以,我有〜/ .aws/credentials文件:
[default]
aws_access_key_id = XXX
aws_secret_access_key = AAA
region = eu-west-1
[test]
aws_access_key_id = WWW
aws_secret_access_key = ZZZ
region = eu-west-1
Run Code Online (Sandbox Code Playgroud)
我的python代码
import boto.ec2
conn = boto.ec2.EC2Connection(profile_name='test')
print conn
print conn.get_all_instances()
Run Code Online (Sandbox Code Playgroud)
输出是
EC2Connection:ec2.us-east-1.amazonaws.com
[]
Run Code Online (Sandbox Code Playgroud)
所以,它似乎没有从配置中获取配置文件.该地区是错误的.
env | grep -i aws <- returns nothing
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
谢谢.
=====更新=====
我有一个〜/ .aws/config文件,看起来像
? cat config
[default]
output = text
region = eu-west-1
[profile test]
output = text
region = eu-west-1
Run Code Online (Sandbox Code Playgroud)
=====更新=====
显然,它需要连接细节..但不是区域.所以,如果我这样做
reg = next(x for x in boto.ec2.regions() if x.name=='eu-west-1') …Run Code Online (Sandbox Code Playgroud) 我正在EC2实例上运行节点脚本.我正在使用forever.js来运行它,因为即使我断开SSH连接,我也想运行它.
我跑:
forever start app.js
Run Code Online (Sandbox Code Playgroud)
然后列出正在运行的进程:
forever list
Run Code Online (Sandbox Code Playgroud)
并且无论我做什么uptime都说STOPPED.
ubuntu@ip-xx-xxx-xxx-xxx:~$ forever list
info: Forever processes running
data: uid command script forever pid id logfile uptime
data: [0] 79f1 /usr/local/bin/node app.js 17099 17100 /home/ubuntu/.forever/79f1.log STOPPED
Run Code Online (Sandbox Code Playgroud) 我已经在AWS Elastic Bean Stalk服务器上部署了我的Django 应用程序。现在我从不同的 IP 地址(包括 localhost 和 http)收到太多无效的 http 主机错误,如下所示
SuspiciousOperation: Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): 172.31.0.67
SuspiciousOperation: Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): 172.31.22.203
SuspiciousOperation: Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): check.proxyradar.com
SuspiciousOperation: Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): testp2.czar.bielawa.pl
'PATH_TRANSLATED': '/opt/python/current/app/coinn/coinn/wsgi.py/testproxy.php',
Run Code Online (Sandbox Code Playgroud)
在 Elastic BeanStalk 安全组中,我提供了以下访问权限
Type | Protocol | Port | Source
HTTP | TCP | 80 | Anywhere …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用.NET中的AWS SDK过滤EC2实例,虽然我已经在SO和其他解决此问题的网站上看到了无数线程,但我在我的最终工作中没有尝试过.
所以,作为最后一个资源,我来找你们帮忙.任何人都可以了解我所缺少的东西吗?我知道我很可能做了一些愚蠢的事,但我不能浪费太多时间来解决这个问题.
这是我用来通过它的标签名称过滤EC2实例(获取它的元数据)的代码块:
DescribeInstanceStatusRequest req = new DescribeInstanceStatusRequest ();
req.Filters.Add (new Filter() { Name = "tag:Name", Values = new List <string> () { "some_random_name" } });
// Executing request & fetching response
DescribeInstanceStatusResponse resp = m_ec2Client.DescribeInstanceStatus (req);
Run Code Online (Sandbox Code Playgroud)
但我继续遇到这个例外:
过滤器'标记:名称'无效
我已经通过文档中列出的几个过滤器(例如"tag-key","tag-value","tag:key = value")替换了过滤器名称(示例中的"tag:Name"),但没有任何效果.
谢谢大家 :)
我正在获取EC2实例的列表,然后尝试遍历它们,但是由于某种原因,我无法使该循环正常工作。
output="$(aws ec2 describe-instances --filters 'Name=tag:Environment,Values=development' --query '[Reservations[*].Instances[*].PublicDnsName]' --output text)"
echo $output 显示如下:
ec2-55-55-555-555.eu-west-1.compute.amazonaws.com
ec2-66-66-666-666.eu-west-1.compute.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
然后我创建一个像这样的数组:
instances=(${output//'\n'/ })
Run Code Online (Sandbox Code Playgroud)
echo ${instances[0]}并echo ${instances[1]}给出正确的输出。
然后尝试遍历数组:
for i in $instances; do echo instance: "$i"; done
但是我得到:
实例:ec2-55-55-555-555.eu-west-1.compute.amazonaws.com ec2-66-66-66-666-666.eu-west-1.compute.amazonaws.com
代替:
instance: ec2-55-55-555-555.eu-west-1.compute.amazonaws.com
instance: ec2-66-66-666-666.eu-west-1.compute.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?是否有更好的方法遍历结果,也许使用json输出格式?
我无法从文档和源代码中找出如何定义根设备的大小.
您可以使用BlockDeviceMappings部分指定N个附加块设备,您可以在其中声明其大小.但是没有办法设置根卷的大小.因此,它始终创建一个根卷大小为8GB的实例,这是默认值.
我使用 Docker Hub 来存储私有 Docker 镜像,存储库有一个 webhook,一旦镜像更新,它就会调用我构建的服务:
该服务正在相应地运行。运行 ECS 后,使用新任务定义创建新任务,停止使用旧任务定义的任务,然后服务使用新定义返回。
关键是 Docker 映像不会更新,一旦服务在新任务定义中启动,它就会保留旧映像。
难道我做错了什么?如何确保更新 docker 镜像?
我有一个数据集,它是一个代表网络的 csv/txt 文件。文件中的每一行都包含两个以逗号分隔的节点名称。我的数据文件联系了大约 330k 个节点和大约 550k 个边。我正在尝试使用以下代码创建一个非常基本的图形(是的,我知道它会非常混乱):
import networkx as nx
import matplotlib.pyplot as plt
import sys
import numpy as np
f = open('dataFile.txt', 'rb')
G = nx.read_edgelist(f, delimiter=',', nodetype=str)
f.close()
print(nx.number_of_nodes(G))
print(nx.number_of_edges(G))
plt.figure(1)
nx.draw(G)
plt.savefig("graph.pdf")
Run Code Online (Sandbox Code Playgroud)
我在 AWS EC2 m4.4xlarge 实例上运行它,它与 100% 的 CPU 和仅 1% 的内存挂钩。
我对此持怀疑态度,因为我认为 networkx 是内存密集型的,而不是 CPU 猪。现在,它正在 nx.draw 命令上旋转。有什么方法可以监控图形生成的深度?