如何测试游戏服务器性能是否符合要求?
扬州服务器非常适合中国用户做游戏,但是游戏服务器可大可小,小的网页游戏一个虚拟空间就够,超大型的游戏需要几千上万台服务器行。要做多大的游戏,会有多少用户在线,必须进行科学预算,并对游戏服务器做完整的性能测试。租用扬州cn2服务器做游戏,如果没有进行完整的性能测试,同样是百万级的游戏,有的公司需要上千台服务器,而有的公司只要几百台服务器,巨大的服务器采购运维成本差异皆因各家公司做服务器性能测试乃至性能调优的能力参差不齐。那么百万用户的游戏服务器要如何进行性能测试呢?
扬州游戏服务器性能测试主要包括以下内容:
吞吐量:固定时间间隔内的处理完毕事务个数。通常是1秒内处理完毕的请求个数,单位:事务/秒(tps)。
平均吞吐量:一段时间内吞吐量的平均值。无法体现吞吐量的瞬间变化。
峰值吞吐量:一段时间内吞吐量的最大值。是用来评估系统容量的重要指标之一。
最低吞吐量:一段时间内吞吐量的最小值。如果最小值接近0,说明系统有“卡”的现象。
70%的吞吐量集中区间:通过统计15%和85%的吞吐量边界值,计算出70%的吞吐量集中区间。区间越集中,吞吐量越稳定。
响应时间:一次事务的处理时间。通常指从一个请求发出,到服务器进行处理后返回,再到接收完毕应答数据的时间间隔,单位:毫秒。
平均响应时间:一段时间内响应时间的平均值。无法体现响应时间的波动情况。
中间响应时间:一段时间内响应时间的中间值,50%响应时间,有一半的服务器响应时间低于该值而另一半高于该值。
90%响应时间:一段时间内90%的事务响应时间比此数值要小。反应总体响应速度,和高于该值的10%超时率。是用来评估系统容量的重要指标之一。
最小响应时间:响应时间的最小值。反映服务最快处理能力。
最大响应时间:响应时间的最大值。反映服务器最慢处理能力。
CPU占用率:1-CPU空闲率,表示CPU被使用情况,反映了系统资源利用情况。
百万用户游戏服务器性能测试方法:
1、现网数据预估
现网数据预估是根据压力测试过程中的部分数据,对未来大量用户访问的情况机型预估。图中的横轴代表现网吞吐量,纵轴代表CPU压力。
图中绿色的部分代表当前的服务器压力,当收集一段时间数据之后,可以模拟一条曲线。假设对服务器的上线成本预估是80%,可以通过曲线拟合的方式推测出现网的能力是多少,也从而推断出最大上限是多少。
缺点:通常游戏服务器都是比较复杂的,这种方式只适合简单的服务器拟合,复杂服务器数据就不太准确。
2、真人压测
真人压测就是通过邀请一定数量的真实用户来玩游戏,从而对服务器达到一个测试效果。这种方式他最大特点在于用户的行为相对是最真实的,因为用户的使用完全不会受到限制,和线上一个真实用户一样。目前游戏上线过程中的“封测”,就可以被认为是一种真人压测,可以帮助开发者发现一些性能问题。
但是这种方式也存在着弊端:
暴露出的性能问题有限
许多经过封测的游戏到上线还会产生问题,原因之一就是封测人数通常还是太少,虽然有几百或者几千用户在玩,但是并发并不够,不足以暴露服务端性能问题;
不适合调优
服务器性能测试不光需要暴露服务器的问题,暴露问题之后还需要不断的回归调优,但是真人是无法完全重复这些行为方式的。
3、接口测试
服务器方面的接口测试与传统意义上的接口测试略有不同,当开发人员需要对一套服务器进行评估,但是又时间不足的情况下,我们可以考虑选择一些具有代表性的功能,以及一些高风险功能进行测试,通过以小见大的方式,来评估整套服务器性能。当然这个方法的主要问题就是无法遍历整个服务器的接口,难以避免一些微小的问题。
4、录制回放
这里面包含两部分,“录制”就是通过抓取数据包的方式,来获取游戏时的协议,比如用户登录游戏时抓取登录包;“回放”即把这些捕获的协议重新发送给服务端,这样理论上就可以通过工具放大协议量级达到性能测试的目的,比如将之前录制的登入协议扩大1w倍给服务器,这样就模拟了1w人同时登入的情况。
这个方法存在的问题是,游戏的协议交互非常复杂,如果只是单纯的放大数据包,对于服务器是产生不了多大的压力的。这类方法比较适合固定输入输出服务类型的测试。
5、机器人模拟
机器人模拟测试是对以上各种测试做了一个平衡, 通过高还原真实玩家的用户行为,模拟高并发场景,从而得到类似很多人同时游戏的测试效果。