Gateway::sendToAll 定时器发送消息会卡顿或卡死

CaesarTang

在全量推送时,当 ClientIdCount 1w时 会卡顿或卡死

  1. 使用了两台 16c32g 的服务做分布式
  2. 服务器内核已优化
  3. 服务没有busy情况
    请问该如何优化



462 6 1
6个回答

walkor

哪里卡顿,哪里卡死,卡顿卡死什么现象?

  • 暂无评论
CaesarTang

  • 暂无评论
CaesarTang

在第一次正在推送,然后卡住不动,之后大概7s左右一起都出现

  • walkor 2022-04-21

    服务器带宽是?

  • CaesarTang 2022-04-21

    采用的是阿里云的slb负载均衡,带宽值 5120 Mbps,截图如下

CaesarTang

全量推送仅发送消息,未有其他的操作,代码截图如上

  • 暂无评论
CaesarTang

  • walkor 2022-04-21

    1.4万连接都是你浏览器这台电脑发起的?

  • CaesarTang 2022-04-21

    不是。其他连接采用的是官方提供的压测的 workerman 脚本,并且压测的服务器已做了内核优化。本台电脑的浏览器仅充当一个B端,发起全量推送。

  • walkor 2022-04-21

    再启动一个脚本,只开一个连接,打印下数据,看下有没有问题。如果有问题那么可能是进程哪里卡了下,如果没有,就不是服务端问题,可能是浏览器网络延迟或者浏览器卡顿导致的。

CaesarTang

当前测试如下:

  1. 首先开启一个压测脚本,只开一个连接,使用B端(本地浏览器)发起全量推送,返回正常
  2. 然后再开启一个压测脚本,开多个连接,使用B端(本地浏览器)发起全量推送,返回出现卡顿扎堆的现象
  3. ws服务为同一个服务
  4. 使用不同网络的B端,上述现象均存在
  • walkor 2022-04-21

    把getAllClientCount调用去掉试下,这个调用很耗时,它要循环调用所有gateway进程,gateway进程越多越好时,可能是这个引起的。

🔝