本文从腾讯游戏服务器性能测试的经历出发,对服务器性能测试的参考标准进行了介绍,并对常见问题进行了答疑和问题溯源!
在重要场景,容量验证及稳定性方面,性能技术均要满足压测标准要求。
• 重要场景包括高频,高IO,计算密集型及核心的业务,如登入,邮件,跨服匹配等;
• 容量验证包括基准PCU下,单套服务能否满足日常及峰值服务;
• 稳定性包括服务器长期稳定地提供服务;
压测标准:
• 事务90%响应时间不应超过1秒,成功率大于99.9%
• 单线程服务单核cpu不应超过70%,多线程服务不应超过线程cpu的70%,内存无swap
• 容量应覆盖90%以上流量的协议,可承载1.5倍以上的峰值压力
• 稳定性方面,在持续十小时以上的时间中,服务无重启,内存无泄漏,吞吐量无下降
服务器瓶颈的表现:
• 开服一直登录不进去
• 服务器频频断连,不断报错
• 多人同屏释放技能卡死
• 副本里打了一半掉出游戏
• 排行榜数据一直显示不出来
• 组队队友瞬移,没有同步战斗数据
• 限时活动无法参加
• 匹配战斗一直在loading中
透视瓶颈问题,直击问题核心:
1、IO问题导致耗时高:大部分游戏都会碰到登录tps低,耗时偏高的性能问题。比较常见的
原因是:IO请求串行导致耗时高;登录逻辑太重,下发大量数据。
2、内存问题:性能相关的内存问题,C 开发中尽量使用预分配的方式,大量频繁的申请和
释放内存消耗很大;内存泄漏相关问题(在C 开发中较为常见);GC内存回收机制不合理
(在go,java语言开发中较为常见)。
3、CPU问题:计算量大,优化算法,分批计算。多出现于多人同屏战斗,拉取好友界面数据,
实时排名运算,全服消息广播等。
4、网络数据问题:大量网络包的同步导致耗时问题,同逻辑帧的合并发送;上报游戏数据处
理过慢导致游戏主进程阻塞。
5、系统参数配置问题:数据库,web服务器,中间件,系统文件描述符,缓冲区大小等相关
的参数配置不当会导致性能上不去。