许多 PDF 作为每个 PDF 文件的 BLOB 字段存储在 MySQL 中。每个文件的平均大小为 500K。
Rails 应用程序将 :binary 数据作为文件下载流式传输,用户单击下载链接。
假设最多有 5 个用户同时下载 5 个 PDF,我应该注意哪些部署设置参数?例如对于薄的情况:
瘦启动——服务器 3
--servers 3 对于上述示例是否足够好(或者需要 5 个或更多)?
第二个问题是“瘦”是否是一个有能力的解决方案?
谢谢!
许多 PDF 作为每个 PDF 文件的 BLOB 字段存储在 MySQL 中。每个文件的平均大小为 500K。
Rails 应用程序将 :binary 数据作为文件下载流式传输,用户单击下载链接。
假设最多有 5 个用户同时下载 5 个 PDF,我应该注意哪些部署设置参数?例如对于薄的情况:
瘦启动——服务器 3
--servers 3 对于上述示例是否足够好(或者需要 5 个或更多)?
第二个问题是“瘦”是否是一个有能力的解决方案?
谢谢!
首先,我认为您不应该将文件存储在数据库中。更好的地方是文件系统,或者像 S3 这样的云存储。如果您要使用回形针之类的附件插件,这很容易设置。
但是,假设您想将文件存储在数据库中。
您当前设置的问题是,当您发送文件时,您的瘦实例在客户端下载数据时被阻塞。这意味着如果您有 3 个精简实例和 3 个人下载 pdf,那么您的站点将不会响应任何请求。
值得庆幸的是,这个问题有一个解决方案,它涉及到x-sendfile
标题。它的工作方式是您的瘦实例将文件发送到您的网络服务器,例如 nginx,然后直接提供文件。
这是关于如何使用 nginx 进行设置的关于 stackoverflow 的一篇很棒的文章。
您使用的是哪个网络服务器?
您可以定义一个或两个瘦专用于您的下载。在您的网络服务器中,您可以在 Rails 应用程序和下载 url 中进行不同的代理分发