【发布时间】: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