如何配置django频道?

时间:2016-12-26 12:49:57

标签: python django profiling django-channels daphne

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

问题是,有时在性能上会发生非常奇怪的事情。大多数请求的处理时间不到400毫秒,但有时请求可能需要2-3秒,即使在非常小的负载下也是如此。使用Django调试工具栏或基于中间件的分析器的分析工作程序什么都不显示(时间0.01s左右)

我的问题:是否有任何使用django-channels分析整个请求路径的好方法?我希望每个阶段花费多少时间,即当Daphne处理请求时,当工作人员开始处理时,当它完成时,当接口服务器向客户端发送响应时。目前,我不知道如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

为什么不坚持像Kibana或New Relic这样的监控工具,并监控为什么以及为了实现小负载响应所花费的时间。它可以告诉你花在Python,PostgreSQL和Memcache(Redis)上的时间。

答案 1 :(得分:0)

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

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

文档说明:

  

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

注意:Silk可能会使数据库搜索时间加倍,因此,如果在生产环境中进行设置,可能会造成一些麻烦。但是,来自丝线的增加将在仪表板上单独显示。

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