Django 性能调优技巧?

标签 django performance django-models mod-wsgi

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

  • mod_wsgi 是最好的解决方案吗?
  • 是否有像 PHP 中那样的操作码缓存?
  • 我应该如何调整 Apache?
  • 如何设置我的模型,以便我有更少/更快的查询?
  • 我可以使用内存缓存吗?
  • 最佳答案

    对你的几个问题发表评论:

    mod_wsgi 是最好的解决方案吗?

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

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

    Python 将编译后的代码缓存在内存中,并且进程跨请求持续存在。因此,您不需要像 PHP 这样的单独操作码缓存产品,因为 Python 默认情况下就是这样做的。您只需要确保您没有使用会导致进程在每次请求时或过于频繁地被丢弃的托管机制或配置。例如,不要使用 CGI。

    我应该如何调整 Apache?

    在不了解您的应用程序或托管它的系统的情况下,无法就如何设置 Apache 提供简单的指导。这是因为吞吐量、请求持续时间、使用的内存量、可用内存量、处理器数量等等都在起作用。如果您甚至还没有编写过应用程序,那么您只是在这里过头了,因为除非您对应用程序和生产负载有更多的了解,否则您无法对 Apache 进行最佳调整。

    一些简单的建议虽然。

  • 不要在同一个 Apache 中托管 PHP。
  • 使用 Apache 工作 MPM。
  • 使用 mod_wsgi 守护进程模式而不是嵌入模式。

  • 仅此一项就可以避免您一开始就为自己造成太多的悲伤。

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

    我正在谈论的那种性能监控工具类似于 New Relic。尽管如此,如果您还处于早期阶段并且甚至没有部署任何东西,那么这本身就是浪费时间。换句话说,在担心如何以最佳方式运行代码之前,先让您的代码工作。

    关于Django 性能调优技巧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7548128/

    相关文章:

    python - Django 1.9 JSONField 更新行为

    css - 使用 django-bootstrap4 + django_icons + 我的自定义 css 文件

    python - 保护或许可 Django 应用程序

    django - Haystack Django一次搜索多个字段

    java - 如何从 Neo4j 调整 lucene maxClauseCount?

    php - mySQL - 一个大型查询与 Ajax 独立查询

    python - getattr() 与 __dict__ 查找,哪个更快?

    Django-reversion 和南兼容性

    python - 有没有一种聪明的方法来使用 Django ORM 获取上一个/下一个项目?

    Django 模型 __unicode__ : How to return a value containing localized datetimes?