3

我正在使用 CarrierWave 进行图像上传,使用 Rackspace Cloudfiles 作为存储,上传需要 3-5 秒(在生产中)。起初,我将其归因于我的图像处理器速度慢或笨拙,或其他原因;所以,我从 RMagick 切换到 Vips ......速度没有明显变化。

需要更多信息,我决定编写一些 New Relic 工具:

http://github.com/tehprofessor/newrelic-carrierwave

使用该工具后,New Relic 报告每个请求的大部分(平均 85%)都花费在:

::CarrierWave::Storage::Fog::File#store

#store 方法被多次调用,有时第一个很慢,有时是最后一个,有时每个都调用。平均而言,对#store 的最快调用在大约 234 毫秒内完成。

我目前正在制作 5 个版本;每个都在不到 10 毫秒内完成(用于图像处理)。源文件在 100k 到 500k 之间。

所以简而言之,这绝对是发布到 Rackspace 的东西。与图像库无关。

我的 CarrierWave 配置

CarrierWave.configure do |config|
    config.fog_credentials = {
        :provider           => 'Rackspace',
        :rackspace_username => 'SECRET_SAUCE',
        :rackspace_api_key  => 'CHEESEBURGER',
        :rackspace_servicenet => true
    }
    config.storage = :fog
end

我已经联系了 Rackspace,他们的支持建议使用 Curl。“试图”帮助我的支持代表发现使用 Curl 的云文件一直很快。我发现这特别没有帮助,并且与我的 New Relic 仪器所建议的形成鲜明对比。

此外,我使用的容器是公共的,并且与我们的云服务器 (VPS) 位于同一个数据中心。

在这一点上,我几乎不知道为什么这该死的慢;特别是因为我设置了服务网络,并且容器和服务器位于同一个数据中心。如果有人有任何建议或想法,我很想听听他们...

也许我刚刚做了一些非常愚蠢的事情或错过了配置选项?任何帮助深表感谢!

更新:一年后这仍然是一个问题;虽然没有那么糟糕——也许 Rackspace 改变了一些东西?

谢谢你,西弗

4

0 回答 0