【问题标题】:Ruby on Rails deployment, on "thin" server with lot of attachmentsRuby on Rails 部署,在带有大量附件的“瘦”服务器上
【发布时间】:2011-01-24 21:07:25
【问题描述】:

很多 PDF 存储在 MySQL 中,作为每个 PDF 文件的 BLOB 字段。每个文件的平均大小为 500K。

Rails 应用会将 :binary 数据流式传输为文件下载,用户点击下载链接。

假设最多有 5 个用户同时下载 5 个 PDF,我应该注意哪些部署设置参数?例如对于瘦的情况:

thin start --servers 3

对于上述示例,--servers 3 是否足够好(或者需要 5 个或更多)?

第二个问题是“瘦”是否是一个有效的解决方案?

谢谢!

【问题讨论】:

    标签: ruby-on-rails deployment thin


    【解决方案1】:

    首先,我认为您不应该将文件存储在数据库中。更好的地方是文件系统,或者像 S3 这样的云存储。如果您要使用 paperclip 之类的附件插件,这非常容易设置。

    但是,假设您希望将文件存储在数据库中。

    您当前设置的问题在于,当您发送文件时,您的瘦实例在客户端下载数据时被阻塞。这意味着如果您有 3 个精简实例和 3 个人下载 pdf,那么您的站点将不会响应任何请求。

    谢天谢地,这个问题有一个解决方案,它涉及到x-sendfile 标头。它的工作方式是您的瘦实例将文件发送到您的网络服务器,例如 nginx,然后直接提供文件。

    Here's a great post on stackoverflow on how to set this up with nginx.

    您使用的是哪个网络服务器?

    【讨论】:

    • 现在thin是服务器本身(尚未部署):thin start -e test -p 8000 -s 5 -d
    【解决方案2】:

    您可以定义一两个瘦身专用于您的下载。在您的网络服务器中,您可以在 Rails 应用程序和下载 url 中进行不同的代理分发

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 2013-07-28
      相关资源
      最近更新 更多