Daphne 使用通道 2 和 Redis 层的 CPU 使用率高
Posted
技术标签:
【中文标题】Daphne 使用通道 2 和 Redis 层的 CPU 使用率高【英文标题】:Daphne High CPU Usage with Channel 2 and Redis Layer 【发布时间】:2018-07-18 10:41:59 【问题描述】:我是一名 Django 开发人员,我最近使用 Channels 2 和 Redis 构建了一个消息传递应用程序。对于每个对话,我都会创建一个组,并在每次重新连接时将所有参与者添加到组中。
我还在 Daphne 的生产频道中使用工人
问题是,在为用户创建 10 个组后,消息传递变得非常缓慢,因为 daphne 使用了几乎 100 % 的 CPU 使用率,从而导致所有站点变慢。
我附上了 CPU 使用率的截图。
非常感谢您能建议减少 CPU 使用率
问候, 萨杜拉·纳伊姆
【问题讨论】:
请将额外信息作为编辑添加到问题中,而不是作为评论发布。 【参考方案1】:就我而言,tasks.py(celery) 中的一些错误使 daphne cpu 的使用率达到 100%。
错误日志可以在asgi日志文件中查看。
【讨论】:
【参考方案2】:我也有同样的问题。我看到 Uvicorn 和 Gunicorn 的表现最好。
gunicorn -b 0.0.0.0 -p 8000 mysite.asgi:application -k uvicorn.workers.UvicornWorker --workers 4
在这种情况下,我预计 4 个工作人员,它使用服务器的 4 个核心,并分配 CPU 的使用。
【讨论】:
以上是关于Daphne 使用通道 2 和 Redis 层的 CPU 使用率高的主要内容,如果未能解决你的问题,请参考以下文章
使用 SSL 使用 Daphne + NGINX 部署 Django 通道
使用 nginx 和 daphne 部署 django、channels 和 websockets
WebSocket wss:// 在 SSL 上与 Nginx Gunicorn Daphne Channels Redis