【问题标题】:File download speed from Amazon S3 drops to <2 kb/s = very slow download (on the machine it has been uploaded from)从 Amazon S3 下载文件的速度降至 <2 kb/s = 下载速度非常慢(在上传文件的机器上)
【发布时间】:2014-07-31 15:05:08
【问题描述】:

基本问题:

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

  • 如果文件是从上传文件的同一 IP/机器下载的,则从 Amazon S3 下载文件的速度会降至
  • 在我们的其他机器上,我们可以下载文件几千次,但看不到这种行为

其他细节:

  • 机器使用 puppet 设置相同
  • 它们都是在 KVM 上运行 ubuntu 12.04.4 并在 ubuntu 12.04.4 和 13.04 主机上运行 libvirtd 的虚拟机
  • 每个虚拟机都有自己的公共 IP,流量来自该 IP
  • 几分钟后,可以以 >5 mb/s 的速度再次下载文件几次(似乎是 10 次)
  • 使用雾宝石从 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

它在 68m 内保持这种状态! (不过在那之后它确实完成了下载)

这是由其他人托管在亚马逊 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

我们当前的解决方法

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

这意味着我们定义了一个前端“cloud.example.com”,一个后端首先将请求主机替换为“s3-eu-west-1.amazonaws.com”,然后使用 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

【问题讨论】:

  • 听起来有点像你的 ISP 的一些邪恶:/
  • 我们在:Hetzner(德国的一家大供应商)我会问他们是否可以解释这种行为。到目前为止,我们的机器还没有出现过这种问题。
  • 好的,我已经和我们的供应商核实过了。他们排除了,这是他们这边的问题。我想这一定与我们的服务器(ubuntu)设置有关。禁用 ufw 并没有解决任何问题。如果我终于找到这个奇怪问题的原因,我会发布。

标签: ubuntu amazon-web-services amazon-s3 kvm libvirt


【解决方案1】:

好的,解决了。

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

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

在我们有奇怪的

  • Linux 3.8.0-44-通用

在 S3 下载速度 >5 MB/s 的 KVM 客户机上,我们正在使用:

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

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

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

【讨论】:

    猜你喜欢
    • 2016-12-28
    • 2016-05-21
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多