我在我的deticated linux服务器上托管了一个50MB的文件,每天有近50万用户下载这个文件(每天2.5GB)。
有很多崩溃和用户报告,有时甚至文件因服务器过载而无法下载。
我想知道是否有人可以帮助我如何计算我需要处理的服务器/带宽/任何内容?
是否有任何解决方案可以托管文件并按下载付费?
我的服务器上是否有任何可以改进或做的设置或任何有助于解决此问题的设置?
我当前的服务器规范是:
我很感激你们的任何帮助。
非常感谢。
答案 0 :(得分:2)
您的硬件配置应该没问题。至少如果下载在一天中或多或少地均匀分布。
用于提供静态内容的最有效的http服务器之一是nginx。请查看本指南:Serving static content。
如果这没有帮助,您应该考虑Amazon S3,这可能是最受欢迎的文件托管解决方案,价格合理。
答案 1 :(得分:0)
这是不使文件可供下载的方式:
data = read_file(filename)
echo data
您希望使用sendfile(2)
让内核直接将文件流传输到套接字而不是在用户空间中进行。
每个服务器都有自己的机制来调用sendfile(2)
;使用httpd,这是mod_xsendfile及其关联的响应头(X-SENDFILE
)。您会发现,移动到此将不仅可以处理您当前的用户群,还可以无需担心地添加更多用户。