Django部署: Cutting Apache's Overhead

标签 django apache deployment mod-wsgi

我有一台小型VPS服务器,该服务器具有Nginx前端,该前端提供静态媒体文件,并将Django请求传递回运行mod_wsgi的Apache 2.2 prefork MPM服务器。

一个(非常)小的站点已加载并正常工作,它目前正在使用143MB的256MB RAM。

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

考虑到我计划在此服务器上放置许多Django项目,我想知道是否有什么办法可以减少Apache正在使用的RAM数量?

最佳答案

如果您想坚持使用Apache,请按困难程度大致列出一些建议:

  • 使用Apache worker MPM代替prefork。每个客户端连接使用的实际内存将较低,但是请注意,由于Linux为每个线程的堆栈分配了8MB内存,分配给Linux上的Apache的虚拟内存可能会很大。这实际上并不重要,除非您的VPS死了,并且限制了虚拟内存,而不是实际的RSS(驻留集大小)内存。在这种情况下,您可以学习如何降低线程堆栈大小here(在“内存受限的VPS”部分下)。
  • 编辑您的Apache配置文件,并大致按比例减少StartServers,MaxClients,MinSpareThreads和MaxSpareThreads设置。适当的级别将是您所需的内存使用量与您需要能够服务的并发客户端数量之间的平衡。
  • 切换到mod_wsgi(在守护程序模式下),而不是mod_python。
  • 关于Django部署: Cutting Apache's Overhead,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/488864/

    相关文章:

    python - 测试之间的 django 数据

    Django CBV : Easy access to url parameters in get_context_data()?

    apache - Wamp - 安装了 php5.2 插件 - 图标保持黄色

    .net - 静态 Assets 、CDN 和多服务器环境的 404 问题

    c# - 包含多个项目的解决方案的 ClickOnce 部署

    Python 错误 : name 'admin' is not defined

    django - "git push": slug compilation hangs

    php - 在动态类名的开头添加反斜杠

    apache - Docker Centos 7 镜像运行 Apache2 "DocumentRoot ... is not readable"

    C++/Tk : can we create an executable that would run with out requiering end user to have any special TcL interpriter installed?