问题描述:
接近300个gamesvr,一个国战master server。新版本的国战服务器上线后在高峰期比较卡,cpu60%,但是查看网络流量还没有到之前的峰值。
分析问题:
在新版本单包数据有增加的情况下,网络流量没有之前的高,说明包处理量没有之前多;跟同事讨论发现新逻辑中redis操作有增加,查看日志发现redis操作占比的确比老版本高了很多,而且看到redis操作日志有个别超时错误(程序中设置redis操作500ms超时)。
备注:半小时单线程1300万包处理量
第一期优化:
控制client的协议调用频率,定时将redis操作累积定时统一提交
优化后效果:
优化redis之后,协议处理量上来了,cpu也飙起来90%,半小时2500万消息处理量,处理能力提高一倍,但是仍有消息堆积,发现95%的消息都是同一个消息
第二期优化:gamesvr做cache,不将高频的单一请求传导到后端server
1.尽量控制好redis操作频率,复杂的redis操作比较耗时
2.控制好协议发送频率,做好cache
3.每个环节最好是做安全策略,要有处理能力的阈值,要有统计,做业务分级,非关键业务降级以保证核心业务安全