为了账号安全,请及时绑定邮箱和手机立即绑定

急求!!!!关于WebSocket推送问题万分感谢

急求!!!!关于WebSocket推送问题万分感谢

繁花如伊 2019-10-19 09:09:38
问题描述我简单描述下我遇到的问题:用户进来握手成功之后我将fd存入redis里面,用swoole_timer_tick定时1000=1秒去读取所有的fd然后用foreach推送数据server->push($fd,$data);推送的时候我走的task,我的配置是'worker_num'=>8,'task_worker_num'=>80,'task_max_request'=>10000,'task_ipc_mode'=>3,'max_request'=>1,问题出现的环境背景及自己尝试过哪些方法开始以为是读取数据的时候耗费的时间,但是redis读取的。我个人感觉是传输数据大小的问题相关代码//请把代码文本粘贴到下方(请勿用图片代替代码)你期待的结果是什么?实际看到的错误信息又是什么?有没有批量推送数据的
查看完整描述

2 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

使用协程调度吧,你用定时器会出现第一次的消息还在推送中,第二次又进来了又推送一次你可以尝试将时间设长如果恢复正常,就修改为循环协程调度就可以解决这个问题了。
                            
查看完整回答
反对 回复 2019-10-19
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

你机器有这么大20核cpu?swoole在线上多次压测进程数为cpu1-4倍最好,多了之后性能大大降级,你task进程设置80个,每次投递任务去检查task进程繁忙状态,使进程间切换多浪费。。
                            
查看完整回答
反对 回复 2019-10-19
  • 2 回答
  • 0 关注
  • 218 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信