【问题标题】:How to profile Django's bottlenecks for scaling?如何分析 Django 的扩展瓶颈?
【发布时间】:2015-06-25 13:26:02
【问题描述】:

我正在使用 django 和 sweetpie 作为 REST API。

对于分析,我使用的是django-silk,下面是请求摘要:

如何分析整个流程?除数据库查询外,平均花费的时间为 (382 - 147) 毫秒。如何找出瓶颈并优化/扩展?我确实为此资源使用了@silk_profile()get_object_list 方法,但即使这种方法似乎也不是瓶颈。

我使用缓存来缩短响应时间,但这并没有多大帮助,还有哪些其他选择?

使用 loader.io 进行测试时,服务器可以处理的峰值是 每 30 秒 1000 个请求(这似乎非常低)。除了缓存(我已经尝试过)还有什么帮助?

【问题讨论】:

    标签: django optimization profiling scalability tastypie


    【解决方案1】:

    这里有一堆建议:

    1. 每个请求的查询至少低于 5 个(每个请求 34 个真的很糟糕)
    2. 安装 django 工具栏,看看时间都花在了哪里
    3. 在反向代理 (NGINX) 后面使用 gunicorn 或 uwsgi

    【讨论】:

      【解决方案2】:
      • 您的查询太多,即使它们相对较快您花费 一些时间到达数据库等。另外,如果你有外部缓存 存储(例如,redis)可能需要一些时间才能连接 在那里。
      • 要调查代码的慢速部分,您有两种选择:

        • 使用分析器 - 如果您已将分布式系统部署到多台计算机上,则在本地 PC 上进行分析将毫无意义
        • 将跟踪点添加到您的代码中,以记录一些消息和当前时间(类似于https://gist.github.com/dbf256/0f1d5d7d2c9aa70bce89)。部署此修补代码并使用负载测试工具对其进行测试并检查日志。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-30
        • 2019-02-25
        • 1970-01-01
        • 2021-08-11
        • 1970-01-01
        相关资源
        最近更新 更多