我从https://github.com/andrewgodwin/channels-examples/tree/master/multichat为大约50个用户运行代码。
它会在没有任何通知的情况下卡住。服务器没有关闭,访问日志没有什么特殊的内容。当我停止daphne服务器(使用Ctrl+C)时,大约需要5-10分钟才能完全关闭。有时候我得去执行杀戮指令。
当我将daphne放入监控程序中时,我每30分钟使用crontab重新启动它,websocket可以正常连接。很烦人但很管用。
我的配置: HAProxy => Daphne
daphne -b 192.168.0.6 -p 8000 yyapp.asgi:application --access-log=/home/admin/daphne.log
backend daphne
balance source
option http-server-close
option forceclose
timeout check 1000ms
reqrep ^([^\ ]*)\ /ws/(.*) \1\ /\2
server daphne 192.168.0.6:8000 check maxconn 10000 inter 5sDebian: 9.4 (原始内核)在OVH服务器上。
Python: 3.6.4
达芙妮: 2.2.1
频道: 2.1.2
Django: 1.11.15
Redis: 4.0.11


我知道这个问题可能过于笼统,但我真的对此一无所知。我试着升级python,重新安装所有的软件包,但是它没有工作。
发布于 2020-08-03 08:48:05
一般来说,web服务器和负载平衡器对于持久连接来说是非常糟糕的。您需要给how明确的指示,以便它知道何时以及如何超时未使用的隧道。
that需要跟踪四个超时:
前三个与套接字连接的初始HTTP协商阶段相关。一旦建立了连接,只有超时隧道才重要。您需要修改自己的应用程序的值,但建议的一些值是:
在您的代码中,这将是:
backend daphne
balance source
option http-server-close
option forceclose
timeout check 1000ms
timeout client 25s
timeout connect 5s
timeout server 25s
timeout tunnel 3600s
reqrep ^([^\ ]*)\ /ws/(.*) \1\ /\2
server daphne 192.168.0.6:8000 check maxconn 10000 inter 5s你可能需要修补其他超时,以获得一个好的混合。一些可能影响您的设置的超时--以及一些起始值--是:
当然,阅读并定制以满足您的需要。
https://stackoverflow.com/questions/51777924
复制相似问题