English 中文(简体)
Django部署:减少Apache的开销
原标题:
  • 时间:2009-01-28 18:56:44
  •  标签:

我有一個小的VPS服務器,具有Nginx前端,可提供靜態媒體文件並將Django請求傳回運行mod_wsgi的Apache 2.2 prefork MPM服務器。

有一个(非常)小的网站正在加载和运行,当前正在使用256MB内存中的143MB。

使用top命令,我可以看到Apache正在使用可用RAM的52.9%,第二位是使用2.1%的memcache。

考虑到我计划在这个服务器上放置相当多的Django项目,我想知道有没有什么办法可以减少Apache使用的内存量?

最佳回答

如果你想坚持使用Apache,以下是一些建议,按照难易程度大致排列:

  • use the Apache worker MPM instead of prefork. Real memory used per client connection will be lower, but be aware that the virtual memory allocated for Apache on Linux can appear very high, due to the 8MB Linux allocates for each thread s stack. This doesn t actually matter, unless your VPS is brain-dead and caps virtual memory rather than actual RSS (resident set size) memory. In that case you can learn how to lower the thread stack size here (under the Memory-constrained VPS section).
  • edit your Apache config file and reduce the StartServers, MaxClients, MinSpareThreads, and MaxSpareThreads settings roughly in proportion. The appropriate levels will be a balance between your desired memory usage and the number of concurrent clients you need to be able to serve.
  • switch to mod_wsgi (in daemon mode) instead of mod_python.
问题回答

值得记录的是,OP 对 MPM 术语的使用是没有意义的。在 Apache 中,MPM 不是一个选项,使用 Apache 时,您总是在使用 MPM。选择使用哪个 MPM。在 UNIX 上,两个主要的 MPM 或多处理模块是 prefork 和 worker。在 Windows 上,始终使用 winnt MPM。有关不同 MPM 的详细信息可以在 Apache 网站上的 Apache 文档中找到。但在 mod_wsgi 的上下文中,你最好阅读:

将此翻译成中文:http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading

简而言之:

  • prefork MPM is multi process/single threaded.
  • worker MPM is multi process/multi threaded.
  • winnt MPM in single process/multi threaded.

您可以考虑使用Spawning进行部署。

你可以在FastCGI上运行Django。然后,nginx可以直接驱动它,而不必经过Apache。





相关问题
热门标签