我的技术栈是Redis作为通道后端,Postgresql作为数据库,Daphne作为ASGI服务器,Nginx在整个应用程序前面。所有内容都使用Docker Swarm部署,仅Redis和数据库位于外部。我大约有20个虚拟主机,带有20个接口服务器、40个HTTP工作进程和20个WebSocket工作进程。负载均衡使用Ingress覆盖Docker网络进行。
问题是,有时候性能方面会发生非常奇怪的事情。大部分请求在400毫秒内处理完,但有时请求可能需要2-3秒甚至在很小的负载下也是如此。使用Django Debug Toolbar或基于中间件的分析器对工作进程进行分析并未发现任何异常(时间为0.01秒左右)
我的问题是:有没有好的方法来使用django-channels分析整个请求路径?我想知道每个阶段需要多长时间,例如当请求由Daphne处理时,工作进程何时开始处理,何时完成,接口服务器何时向客户端发送响应。目前,我不知道该如何解决这个问题。