我有一个运行 Ubuntu 8.10 的 Xen 虚拟专用服务器 (VPS),配备 128M RAM。
我通过 Google 找到了几个“如何针对低内存 VPS 优化 Apache 和 MySQL”页面,但它们提供的信息相互矛盾。所以我问 Server Fault:如何针对低内存 VPS 配置优化 Apache 和 MySQL?
有几个人建议使用nginx而不是 Apache。我会研究一下,但如果可能的话,我更愿意坚持使用 Apache,这样就不必学习在陌生的(对我来说) Web 服务器上配置应用程序堆栈的所有知识。
答案1
Nginx 很棒,但是如果你想坚持使用 Apache,可以从默认设置中精简很多:
- 使用 worker MPM 而不是 prefork(使用 worker MPM Apache 不再具有“每个连接一个进程”模型)。
- 查看您正在加载的所有共享模块,删除不需要的模块。
- 如果可以的话,请避免在 Apache 中嵌入应用服务器(即 mod_python、mod_php 等)。相反,在单独的进程中运行应用服务器,并让 Apache 代理它们(即对于 Python 代码,在守护进程模式下使用 mod_wsgi)。这样,仅提供静态内容的 Apache 线程就不会不必要地膨胀。
- 在 Apache 配置中,减少 StartServers、MaxClients、MinSpareThreads 和 MaxSpareThreads 设置。根据预期负载,有时您可以将这些设置从默认设置减少五倍或更多。
答案2
如果您的内存有限,我建议您尽可能使用 nginx 作为替代方案。它比 Apache 占用的内存少得多,并且根据您的需要,它可以满足您的所有需求。
另外,nginx 的速度比 Apache 快得多。=)
答案3
抛弃 Apache,它的每个连接模型的进程不会与您的低内存 VPS 一起发挥作用。
我建议用 nginx 来替代。