加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 上传回形针非常慢(独角兽)

发布时间:2020-12-17 02:28:42 所属栏目:百科 来源:网络整理
导读:坐在这里有一个简单的rails 3 app,我有一个简单的Gallery模型,每个画廊都有很多图像.使用回形针和以下选项扩展图像模型 has_attached_file :local,:styles = { :large = "800x800",:medium = "300x300",:thumb = "100x100#",:small = "60x60#" } 在我的galle
坐在这里有一个简单的rails 3 app,我有一个简单的Gallery模型,每个画廊都有很多图像.使用回形针和以下选项扩展图像模型

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'}
   end
end

对我来说,这是相当直接的.但问题来了.在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.602s
user    0m11.414s
sys  0m0.069s

_after_
$time utilities/convert 'image.jpg' -resize "x60" -crop "60x60+10+0" +repage 'thumb'
real    0m0.077s
user    0m0.058s
sys  0m0.019s

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读