RT,项目是一个聊天类小程序,使用的是workerman3.x的websockert,没有使用gatewayWorker。 项目存在一个问题:当多个用户同时发送数据传送较大的文件如图片,或者发送文字之类的频率过快时会出现严重的卡顿丢包现象,部分用户连接会中断,在当前发送数据的用户发送操作未执行完成之前,所有用户都无法重连上,请问产生这个问题的原因有什么呢?我该如何尝试解决呢? ps:项目服务器为windows,40核。
windows服务器最多支持250个连接。 正式环境请使用linux服务器,并严格按照手册优化好linux内核并安装event扩展。 http://doc.workerman.net/appendices/kernel-optimization.html http://doc.workerman.net/install/install.html 不要用websocket发送大的数据比如图片数据,否则会占数据传输通道导致卡顿。 比如使用同一个websocket连接发送图片数据后,再发送消息,消息会在浏览器排队等待文件发送完毕后才发送消息,导致延迟或者卡顿。 发送图片最好有http 上传到文件服务器,得到url后通过websocket发送 img 标签。这样不会影响其它消息传输
图片是使用http传输后发送图片id回到websocket再发送数据的,这个应该不是影响的原因,但是传输完图片发送id也是根据队列排的,人多时也会堵塞,这是什么原因呢?
如果业务里有阻塞的操作,比如读写数据库redis等,阻塞是正常的。推荐workerman里尽量不做存储读写,只做消息转发。workerman在windows下最多支持250个连接,如果超过这个连接数,会导致消息延迟卡顿甚至断开。
windows服务器最多支持250个连接。
正式环境请使用linux服务器,并严格按照手册优化好linux内核并安装event扩展。
http://doc.workerman.net/appendices/kernel-optimization.html
http://doc.workerman.net/install/install.html
不要用websocket发送大的数据比如图片数据,否则会占数据传输通道导致卡顿。
比如使用同一个websocket连接发送图片数据后,再发送消息,消息会在浏览器排队等待文件发送完毕后才发送消息,导致延迟或者卡顿。
发送图片最好有http 上传到文件服务器,得到url后通过websocket发送 img 标签。这样不会影响其它消息传输
图片是使用http传输后发送图片id回到websocket再发送数据的,这个应该不是影响的原因,但是传输完图片发送id也是根据队列排的,人多时也会堵塞,这是什么原因呢?
如果业务里有阻塞的操作,比如读写数据库redis等,阻塞是正常的。推荐workerman里尽量不做存储读写,只做消息转发。workerman在windows下最多支持250个连接,如果超过这个连接数,会导致消息延迟卡顿甚至断开。