Django性能调优技巧?

时间:2011-09-25 19:47:43

标签: django performance django-models mod-wsgi

你如何调整Django以获得更好的性能?有指导吗?我有以下问题:

  • mod_wsgi是最好的解决方案吗?
  • 是否有像PHP一样的操作码缓存?
  • 我该如何调整Apache?
  • 如何设置我的模型,因此我的查询次数更少/更快?
  • 我可以使用Memcache吗?

1 个答案:

答案 0 :(得分:5)

对您的一些问题发表评论:

mod_wsgi是最佳解决方案吗?

Apache / mod_wsgi对大多数人来说已经足够了,因为即使没有正确设置Apache,他们也不会有足够的流量来引发问题。 Web服务器通常不是瓶颈。

是否有像PHP一样的操作码缓存?

Python将已编译的代码缓存在内存中,并且这些进程会在请求中保持不变。因此,您不需要像PHP那样的单独操作码缓存产品,因为这是Python默认执行的操作。您只需要确保您没有使用托管机制或配置,这些机制或配置会导致每个请求或过于频繁地丢弃进程。例如,不要使用CGI。

我应该如何调整Apache?

在不了解您的应用程序或系统的情况下,您无法提供有关如何设置Apache的简单指导。这是因为吞吐量,请求持续时间,使用的内存量,可用内存量,处理器数量以及更多内容都会发挥作用。如果您还没有编写应用程序,那么您只需在此处进行操作即可,因为在您了解应用程序和生产负载之前,您无法对Apache进行最佳调整。

虽然有一些简单的建议。

  • 不要在同一个Apache中托管PHP。
  • 使用Apache worker MPM。
  • 使用mod_wsgi守护程序模式而非嵌入模式。

仅此一项就可以帮助你免于为自己造成太多的悲伤。

如果您真的需要更好地调整完整堆栈,即应用程序和Web服务器,而不仅仅是过早优化,因为您认为即使您还没有真正编写任何代码,您也将拥有下一个FaceBook然后,您需要开始查看性能监视工具,以确定您的应用程序正在执行的操作。您的应用程序和数据库将成为问题的真正来源,而不是Web服务器。

我所说的那种性能监控工具就像New Relic。即便如此,如果你还很早,甚至没有任何部署,那么这本身就是浪费时间。换句话说,只需先让代码工作,然后再担心如何以最佳方式运行它。