2012-10-31 60 views
1

我的内部使用的小型项目就像“sharerapid”这样的文件共享门户网站,它将用于大约100人。我在下载大文件时遇到问题。小文件(< 200 MB)正在快速下载,但最大的文件会阻止我的服务器2-5分钟。也许问题是RAM,我有2 GB RAM。我的代码来下载文件:使用Ruby on Rails下载大文件

def custom_send(userfile) 
    file = userfile.attachment.file.url.to_s.split("?").slice(0..-2).join("?") 
    send_file "#{Rails.root.to_s}/public#{file}" , filename: userfile.name, x_sendfile: true 
end 

我不知道哪里是问题,在发展模式在我的本地机器是好的,但问题是公共虚拟服务器上(Ubuntu的12)。

回答

0

您使用的是什么Web服务器?最可能的原因是请求在单线程环境中阻止了进一步的请求。

你的问题的最佳解决方案将是在亚马逊s3上托管文件并链接到那里。如果文件必须保留的地方,你可以尝试更多的东西是这样的:

http://www.therailsway.com/2009/2/22/file-downloads-done-right/

+0

阿帕奇与passenger.I需要存储数据localy(安全原因)。我在创建这个问题之前尝试了它,但不工作,但我认为我不激活模块。我用apt-get安装它,重启apache。我在哪里添加“XSendFileAllowAbove on”?我将它添加到http.conf(不工作)和myapp_apache_virtualhost_conf(不工作)。 – quatermain