has_attached_file :local,:styles => { :large => "800x800>",:medium => "300x300>",:thumb => "100x100#",:small => "60x60#" }
在我的gallerIEs_controller中,我执行了以下 *** 作以使用jQuery-File-Upload插件.从而Json响应.
def add_image gallery = gallery.find params[:ID] image = gallery.images.new({:local => params[:local]}) if image.save render :Json => {:thumb => image.url(:thumb),:original => image.url} else render :Json => { :result => 'error'} endend
对我来说,这是相当直接的.但问题来了.在Mongrel下的开发中,任何类型的上传都可以正常工作,大约500-1000ms /上传.
然而,当我将它推向生产时,我不断地让我的独角兽工作人员超时,当它发送图像时,一个文件需要30-55秒.
我上传的文件大小约为100k
我已经对我的VPS和我的开发计算机之间的带宽进行了一些测试,并且平均速度大约为77kbps,因此上传应该不是问题.
注意我还使用具有头像的用户模型的相同应用程序进行了非AJAX文件上载测试.
发展=>完成302发现在693ms
生产=>完成302发现在21618ms
任何人都遇到类似的问题(rails3,unicorn)文件上传?
解决方法 所以在挖掘之后,我设法确定在我的VPS上,ImageMagick中的OpenMP选项导致了非常慢的 *** 作.所以我的第一次尝试是重建原生Ubuntu 10.04包,并添加了–disable-openmp标志.由于某种原因,这失败了,虽然我不确定为什么打包出来的openMP仍然有效.我现在的解决方案现在改为从Ubuntu 10.10向后移植ImageMagick.下面是我采取的步骤:步骤1下载以下文件:
> imagemagick_6.6.2.6-1ubuntu1.1.dsc
> imagemagick_6.6.2.6.orig.tar.bz2
> imagemagick_6.6.2.6-1ubuntu1.1.debian.tar.bz2
从here
第2步打开包装
$dpkg-source -x imagemagick_6.6.2.6-1ubuntu1.1.dsc
第3步编辑规则
$cd imagemagick-6.6.2.6$vim debian/rules
将以下行添加到第25-39行的./configure语句中.我在第34行添加了我的.
34: --disable-openmp \
第4步添加依赖项和构建(我需要这些依赖项)
$sudo apt-get install liblqr-1-0-dev librsvg2-dev$dpkg-buildpackage -b
步骤5用旧的,用新的
$sudo apt-get remove --purge imagemagick$sudo dpkg -i libmagickcore3_6.6.2.6-1ubuntu1.1_amd64.deb$sudo dpkg -i libmagickwand3_6.6.2.6-1ubuntu1.1_amd64.deb$sudo dpkg -i imagemagick_6.6.2.6-1ubuntu1.1_amd64.deb
第6步再次进行快速图像转换
_before_ (with openmp)$time utilitIEs/convert 'image.jpg' -resize "x60" -crop "60x60+10+0" +repage 'thumb'real 0m11.602suser 0m11.414ssys 0m0.069s_after_$time utilitIEs/convert 'image.jpg' -resize "x60" -crop "60x60+10+0" +repage 'thumb'real 0m0.077suser 0m0.058ssys 0m0.019s总结
以上是内存溢出为你收集整理的ruby-on-rails-3 – 上传回形针非常慢(独角兽)全部内容,希望文章能够帮你解决ruby-on-rails-3 – 上传回形针非常慢(独角兽)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)