Amazon S3的文件下载速度降至<2 kb/s =下载速度非常慢(在已上传的计算机上)

pan*_*udu 6 ubuntu kvm libvirt amazon-s3 amazon-web-services

基本问题:

我们在当前的基础架构设置中遇到了非常奇怪的行为:

  • 如果从同一IP /机器下载文件,则从Amazon S3的文件下载速度降至<2 kb/s(在下载速度完全正常的~10次之后)
  • 在我们的其他机器上,我们可以下载文件几千次而且看不到这种行为

额外细节:

  • 机器使用木偶设置相同
  • 它们都是在KVM上运行ubuntu 12.04.4的虚拟机,在ubuntu 12.04.4和13.04主机上运行libvirtd
  • 每个VM都有自己的公共IP,流量来自该公共IP
  • 几分钟后,可以再次以> 5 mb/s的速度下载文件几次(似乎是10次)
  • 使用fog gem从rails应用程序上传文件

用wget测试:

使用wget,您可以在受影响的计算机上看到我们上传的文件的输出:

--2014-07-31 16:33:38--  http://s3-eu-west-1.amazonaws.com/not_the_real_file_url
Resolving s3-eu-west-1.amazonaws.com (s3-eu-west-1.amazonaws.com)... 178.236.6.160
Connecting to s3-eu-west-1.amazonaws.com (s3-eu-west-1.amazonaws.com)|178.236.6.160|:80...      connected.
HTTP request sent, awaiting response... 200 OK
Length: 2801149 (2.7M) [text/plain]
Saving to: `/dev/null'

0% [                                ] 10,111      1.05K/s  eta 68m 26s
Run Code Online (Sandbox Code Playgroud)

68米就像这样!(它确实在那之后完成下载)

其他人在亚马逊s3上托管的随机文件输出:

--2014-07-31 16:39:21--  https://s3.amazonaws.com/Minecraft.Download/versions/14w31a/minecraft_server.14w31a.jar
Resolving s3.amazonaws.com (s3.amazonaws.com)... 72.21.211.199
Connecting to s3.amazonaws.com (s3.amazonaws.com)|72.21.211.199|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10342238 (9.9M) [application/octet-stream]
Saving to: `/dev/null'

32% [====================================>    ] 3,370,945    747K/s  eta 12s
Run Code Online (Sandbox Code Playgroud)

我们目前的解决方法

我们当前的解决方案是使用我们的HAProxy作为透明的HTTP代理.

这意味着我们定义了一个前端"cloud.example.com",并且后端首先用"s3-eu-west-1.amazonaws.com"替换HOST请求,然后使用s3-eu-west-1.amazonaws. com:80作为服务器.对于亚马逊来说,看起来请求来自我们的代理,我们可以再次下载我们存储在S3上的文件数千次.:)

[2014-07-31 16:56:57 +0200] RUN[28] AVG: '0.9612743812142854' s, LAST_RUN: '0.711118431' s
--2014-07-31 16:56:57--  https://cloud.example.com/not_the_real_file_url
Resolving cloud.example.com (cloud.example.com)... 1.2.3.4
Connecting to cloud.example.com (cloud.example.com)|1.2.3.4|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2801149 (2.7M) [text/plain]
Saving to: `/dev/null'

100%[====================>] 2,801,149   2.47M/s   in 1.1s
Run Code Online (Sandbox Code Playgroud)

pan*_*udu 3

好的,解决了。

我仍在研究为什么这可以解决这个问题,但现在解决了这个问题:

如上所述,该行为发生在 Ubuntu 12.04.4 KVM-Host 系统上运行的 Ubuntu 12.04.5 KVM-Guest 上。我今天看了一下,如果我们在来宾上使用不同的内核(linux-image-*)(这仍然可能发生,因为我们还没有为它们提供 puppet)。

在 KVM 来宾上,我们有奇怪的 <5 KB/s S3 下载行为,我们使用:

  • Linux 3.8.0-44-通用

在 S3 下载速度 >5 MB/s 的 KVM 来宾上,我们使用:

  • Linux 3.2.0-68-virtual(实际上任何 *-virtual 都可以解决这个问题)

如果您遇到同样的问题,希望这对您有所帮助。如果我真正理解为什么会发生这种情况,我会发布更多内容。

当然:我知道,您应该在 VM 来宾上使用 *-虚拟内核。为什么只有 S3 下载速度很慢,这让我有点困惑。