我的技术堆栈是Redis作为通道后端,Postgresql作为数据库,Daphne作为ASGI服务器,Nginx作为整个应用程序的前端。所有的东西都是使用Docker Swarm部署的,只有Redis和Database在外面。我有大约20个虚拟主机,有20个接口服务器,40个http工作进程和20个websocket工作进程。负载均衡是使用Ingress Docker网络完成的。
问题是,有时性能方面会发生非常奇怪的事情。大多数请求在400ms内得到处理,但有时请求可能需要2-3秒,即使在非常小的负载期间。使用Django Debug Toolbar或基于中间件的分析器的分析器没有显示任何内容(计时0.01秒左右)
我的问题是:有没有什么好方法可以用django-channel来分析整个请求路径?我想知道每个阶段需要多少时间,例如,当请求被Daphne处理时,当工人开始处理时,当它完成时,当接口服务器向客户端发送响应时。目前,我不知道如何解决这个问题。
发布于 2018-10-17 21:58:43
Django-silk可能会在分析请求和数据库搜索时间方面对您有所帮助,原因如下:
只需在项目的settings.py
上添加配置,就可以很容易地进行设置。可以定制
正如文档所述:
Django Silk是
框架的实时分析和检查工具。Silk拦截并存储超文本传输协议请求和数据库查询,然后将它们呈现在用户界面中,以便进一步检查
注释:silk可能会使您的数据库搜索时间加倍,因此如果您在生产环境中设置它,它可能会带来一些问题。但是,丝绸的增加将在仪表板上单独显示。
发布于 2017-10-16 22:49:03
为什么不使用像Kibana或New Relic这样的监控工具,监控小负载响应花费这么长时间的原因和原因。它可以告诉你花在Python,PostgreSQL和Memcache (Redis)上的时间。
https://stackoverflow.com/questions/41331567
复制相似问题