我使用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的最快调用在大约234ms完成。
我目前正在制作5个版本;每个都在不到10ms的时间内完成(用于图像处理)。源文件介于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)位于同一数据中心。
在这一点上,我几乎不知道为什么这么慢;特别是因为我有servicenet设置,容器和服务器在同一个数据中心。如果有人有任何建议或想法,我很乐意听到他们......
也许我刚刚做了一些非常愚蠢的事情或错过了配置选项?非常感谢任何帮助!
更新:一年后,这仍然是一个问题;虽然没有那么糟糕 - 也许Rackspace改变了一些东西?
谢谢你, 塞弗