如何加快使用Apache或其他解决scheme的请求/响应Django的?

我主要是一个开发人员,但是我一次又一次地跳入系统pipe理员的位置。 大多数情况下,我已经使用apache部署了php和python应用程序。

我今天写的是因为我开始研究更快的apache替代品,但仍然具有我需要的一些核心function,如放置和删除方法以及通过apache连接到套接字的能力。 (这个我还没有尝试,但如果我在我的应用程序中使用过彗星,可能会是一个不错的哨子。)正如你可能已经猜到的那样,我专门为我的所有网站使用javascript,利用深层链接来支持search引擎优化。

我正在寻求提高性能的主要领域是django应用程序和Web服务器之间的连接到客户端的响应。 我每天尽最大努力保持尽可能小的记忆足迹,但是当涉及到使用apache的时候,我正在走到我的绳索的尽头。

一般来说,请记住,我刚开始这项研究,所以我现在正在寻找更多的材料来阅读解决scheme。

我的主要问题:

  • 我是否错过了一些关于apache的东西,使其变得更快一些呢?
  • 什么是一个好的服务器环境部署静态文件之一?
  • 什么是一些领先的开源和付费替代品?

你如何主办WSGI应用程序? 假设你正在使用mod_wsgi,下面的注释适用。

你使用nginx的静态文件和代理通过Apache / mod_wsgi? 这是一个好的开始,因为它带来了各种好处,除了更好的静态文件服务。 具体而言,nginx将Apache从慢速HTTP客户机中分离出来,并允许Apache在来自客户机的完整请求准备就绪时才进入画面。 代理安排中的额外缓冲function使得Apache可以更快地卸载响应。 总而言之,允许Apache以更less的进程/线程运行,并且执行更有效率。

除此之外,对于mod_wsgi,你应该真的解释你的configuration。 你正在使用embedded式模式还是守护进程模式? 你使用的是什么Apache MPM? 你使用mod_php在相同的Apache中运行PHP吗? 你确定你还没有加载mod_python到Apache?

虽然我不是Python mod_wsgi的专家,但是我想我特别了解一些关于web架构和PHP的知识。

但是,当前正在查看的IME,即networking服务器/模块接口应该对网页的整体处理几乎没有影响。 如果你正在运行一个服务器场,那么通过一个不同的平台(nginx,tux)来提供静态内容可能会有一些好处,甚至更好 – 使用一个CDN。 但是有一些weservers或更less – 运行额外的networking服务器将使您的资源使用效率降低 – 不是更多。

如何使您的网站更快的具体方向将需要大量关于您的网站目前的行为和用户在哪里的数据 – 超出了这里的职位范围。

我推荐Steve Souder的高性能网站的书。