【问题标题】:How to profile django channels?如何配置 django 频道?
【发布时间】:2017-05-10 22:30:00
【问题描述】:

我的技术栈是 Redis 作为通道后端,Postgresql 作为数据库,Daphne 作为 ASGI 服务器,Nginx 在整个应用程序的前面。一切都使用 Docker Swarm 部署,外部只有 Redis 和数据库。我有大约 20 个虚拟主机,20 个接口服务器,40 个 http worker 和 20 个 websocket worker。负载平衡是使用 Ingress 覆盖 Docker 网络完成的。

问题是,有时在性能方面会发生非常奇怪的事情。大多数请求在 400 毫秒内处理,但有时请求可能需要 2-3 秒,即使在非常小的负载下也是如此。使用 Django 调试工具栏或基于中间件的分析器分析工作人员没有显示任何内容(时间 0.01 秒左右)

我的问题:有没有什么好的方法可以用 django-channels 分析整个请求路径?我想每个阶段需要多少时间,即 Daphne 处理请求的时间、worker 开始处理的时间、完成的时间、接口服务器向客户端发送响应的时间。目前,我不知道如何解决这个问题。

【问题讨论】:

  • 如果有人好奇,看来这篇文章的作者去问了谷歌群组:groups.google.com/forum/#!topic/django-users/_aG8Py_r2QY
  • 是的,这是我的问题。我发现了一些有用的方法,其中之一就是redis监控。我很快就会在这里发布详细的描述。
  • 期待听到什么对您有用。

标签: python django profiling django-channels daphne


【解决方案1】:

Django-silk 可能有助于您分析请求和数据库搜索时间,原因如下:

  1. 只需在 Django 项目的settings.py 上添加配置即可轻松设置。
  2. 可以自定义:通过使用提供的装饰器,您可以分析函数或方法并获取它们的运行性能。
  3. 动态设置:您可以选择为方法动态分配丝绸,还可以在运行期间设置您想要的分析速率。

如文档所述:

Silk 是 Django 框架的实时分析和检查工具。 Silk 拦截并存储 HTTP 请求和数据库查询,然后将它们呈现在用户界面中以供进一步检查

注意:silk可能会使你的数据库搜索时间加倍,所以如果你在生产环境中设置它可能会造成一些麻烦。但是,丝绸的增加将单独显示在仪表板上。

https://github.com/jazzband/django-silk

【讨论】:

  • 虽然这可能会回答问题,但提供有关如何和/或为什么解决问题的更多背景信息将提高答案的长期价值。
【解决方案2】:

为什么不使用 Kibana 或 New Relic 之类的监控工具,并监控小型有效负载响应的原因和原因。它可以告诉你在 Python、PostgreSQL 和 Memcache (Redis) 上花费的时间。

【讨论】:

  • 据我所知newrelic还不支持asgi
猜你喜欢
  • 2019-04-17
  • 2018-08-01
  • 1970-01-01
  • 2018-03-20
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多