Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何配置django频道?_Python_Django_Profiling_Django Channels_Daphne - Fatal编程技术网

Python 如何配置django频道?

Python 如何配置django频道?,python,django,profiling,django-channels,daphne,Python,Django,Profiling,Django Channels,Daphne,我的技术堆栈是Redis作为通道后端,Postgresql作为数据库,Daphne作为ASGI服务器,Nginx作为整个应用程序的前端。一切都是使用Docker Swarm部署的,外部只有Redis和数据库。我有大约20个虚拟主机,20个接口服务器,40个http工作线程和20个websocket工作线程。使用入口覆盖Docker网络完成负载平衡 问题是,有时在性能方面会发生非常奇怪的事情。大多数请求的处理时间不超过400毫秒,但有时请求可能需要2-3秒,即使在非常小的负载情况下也是如此。使用D

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

问题是,有时在性能方面会发生非常奇怪的事情。大多数请求的处理时间不超过400毫秒,但有时请求可能需要2-3秒,即使在非常小的负载情况下也是如此。使用Django调试工具栏或基于中间件的探查器评测Worker时,什么也看不到(计时0.01秒左右)


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

为什么不使用Kibana或New Relic之类的监控工具,并监控为什么需要这么长时间才能得到一个小负载响应。它可以告诉您在Python、PostgreSQL和Memcache(Redis)上花费的时间。

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

  • 只需在Django项目的
    settings.py
    上添加配置即可轻松设置
  • 可以定制:通过使用提供的decorator,您可以分析函数或方法并获得它们的运行性能
  • 动态设置:您可以选择动态地将silk分配给方法,还可以在运行期间设置所需的分析速率 如文件所述:

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

    注意:silk可能会使数据库搜索时间加倍,因此如果在生产环境中设置,可能会造成一些问题。然而,丝绸的增加将在仪表板上单独显示


    如果有人好奇,这篇文章的作者似乎去问谷歌集团:是的,这是我的问题。我发现了一些有用的方法,其中之一就是redis监控。我很快会在这里发布详细的描述。期待听到对您有用的内容。据我所知,newrelic目前还不支持asgi,虽然这可能会回答这个问题,但提供有关如何和/或为什么解决问题的其他上下文将提高答案的长期价值。