如何使用 apache 或其他解决方案加快对 django 的请求/响应?

如何使用 apache 或其他解决方案加快对 django 的请求/响应?

我主要是一名开发人员,但偶尔也会担任系统管理员。大多数情况下,我使用 apache 部署 php 和 python 应用程序。

我今天写这篇文章是因为我开始研究 apache 的更快替代品,但仍然保留一些我需要的核心功能,如 put 和 delete 方法以及通过 apache 连接套接字的能力。(我还没有尝试过,但如果我在我的应用程序上使用 comet,这可能是一个不错的选择。)正如您可能已经猜到的那样,我为所有网站专门使用 javascript,利用深度链接来支持 SEO。

我希望提高性能的主要领域是 Django 应用程序和 Web 服务器与客户端响应之间的连接。我每天都尽最大努力保持最小的内存占用,但在使用 Apache 时我已经筋疲力尽了。

总的来说,请记住我才刚刚开始这项研究,所以我现在正在寻找更多的阅读材料而不是解决方案。

我的主要问题是:

  • 我是否错过了一些有关 Apache 的、使其比其他任何东西都更快的东西?
  • 什么样的服务器环境适合部署静态文件?
  • 有哪些领先的开源和付费替代品?

答案1

您如何托管 WSGI 应用程序?假设您使用 mod_wsgi,则以下注释适用。

您是否将 nginx 用于静态文件并作为 Apache/mod_wsgi 的代理?这是一个很好的开始,因为它带来了各种好处,而不仅仅是更好的静态文件服务。具体来说,nginx 将 Apache 与慢速 HTTP 客户端隔离开来,并允许 Apache 仅在客户端的完整请求准备就绪时才进入画面。代理安排中的额外缓冲也允许 Apache 更快地卸载响应。总之,允许 Apache 以更少的进程/线程运行并更高效地执行。

除此之外,对于 mod_wsgi,您应该真正解释您的配置。您使用的是嵌入式模式还是守护进程模式?您使用的是哪种 Apache MPM?您是否使用 mod_php 在同一个 Apache 中运行 PHP?您是否确保您没有将 mod_python 加载到 Apache 中?

答案2

虽然我不是 Python mod_wsgi 方面的专家,但我认为我对 Web 架构,尤其是 PHP 有所了解。

但是 IME,您当前正在查看的 Web 服务器/模块接口对网页的整体处理应该影响很小。如果您正在运行一组服务器,那么通过不同的平台(nginx、tux)或更好的方式(使用 CDN)提供静态内容可能会有一些好处。但是,如果只有几个或更少的 Web 服务器,运行额外的 Web 服务器将降低您的资源使用效率,而不是提高。

有关如何使您的网站运行更快的具体方向将需要大量有关您的网站当前运行方式和用户所在位置的数据 - 这超出了此处帖子的范围。

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

相关内容