为HTTP文件共享优化我的Apache2/PHP5/MySQL服务器的最佳方式是什么?

问题描述:

我想知道我可以对我的服务器进行哪些优化,以更好地处理文件上传/下载的性能。为HTTP文件共享优化我的Apache2/PHP5/MySQL服务器的最佳方式是什么?

目前我在想Apache2可能不是最好的HTTP服务器吗?

我可以在我的服务器上做出任何建议或优化?

我目前的设置是一个Apache2 HTTP服务器,PHP处理文件上传,目前存储在Web根目录下的一个文件夹中,随机分配一个存储在MySQL数据库中的名称(以及更多的文件/用户信息)。

当用户想要下载文件时,我使用header()函数强制下载和readfile()输出文件内容。

你是对的,这是低效的,但这不是Apache的错。用PHP提供文件将成为你的瓶颈。您应该查看X-Sendfile,它允许您告诉Apache(通过PHP插入的头文件)要发送的文件(即使它不在DocRoot中)。

随着更大的文件和更重的负载,速度的增加将更加明显。当然,提高速度的更好方法是使用CDN,但这对我们大多数人来说都是过度的。

Using X-Sendfile with Apache/PHP

http://www.jasny.net/articles/how-i-php-x-sendfile/

至于与上传提高性能,我没有特别的知识。但是,总的来说,我相信每个文件上传都会“阻塞”你的Apache工作人员很长一段时间,这意味着Apache必须为其他请求产生更多的工作进程。随着足够的工人产生,服务器可以显着减缓。你可以看看Nginx,它是基于事件的,而不是基于进程的服务器。这可能会增加您的吞吐量,但我承认我从来没有在Nginx下尝试过上传。

注意:Nginx使用X-Accel-Redirect而不是X-Sendfile。

http://wiki.nginx.org/XSendfile

+0

感谢您的帮助信息。 – Muggles