业务逻辑:
多个探头通过柜子和服务器连接并通讯,一个柜子对应一个tcp链接,上线时初始化数据把索要数据的命令存在session里面,然后第一次调用函数后,会进入调用闭环一直同步数据
测试情况:
gateway抓包对比,发现柜子发送给gateway接收没问题,但是gateway到businessworker出现丢包,查看状态为busy
问题及分析:
负载和预期相差甚远,之前的预期是一个进程起码保证1000台柜子100%成功率的数据同步,开10个进程负担差不多10000台柜子[实际可能不是这样简单的数学计算,大概思路这样],但目前相差甚远,才20台柜子,5分钟成功率就开始掉了
已采取的优化措施:
1,因为业务负担比较重,之前剥离过业务逻辑部分,效果很差,等于把压力集中到一个地方,直接就压垮了,完全没法儿用,现在放回主进程了,后期多开进程,大家平均负担[业务剥离,试过,否定]
2,目前注释掉了触发报警和报警恢复相关的数据库全部操作3,redis限制了0.5秒上线一个柜子,避免扎堆上线
4,给每轮定时器及每个探头的定时器增加一个随机因素,避免全部一样的参数产生类似军队齐踏步一样的压力峰值
5,重试,单个探头如失败有3次重试机会,