【游戏】服务器性能测试(三) 性能指标
一、引言
在做游戏服务器性能测试的时候,我们需要通过一些指标来判断服务端是否存在性能问题,由于绝大多数的服务端都是架设在Linux服务器上,因此本篇是以Linux系统为前提,简单介绍常用的性能指标。
二、服务器指标
现如今的游戏服务器一般为分布式架构如图1。一个区的服务端由多个节点组成,通过这些节点来完成复杂的业务功能交互以及扩大人数承载。并不是每个节点都会占用一台物理机,通常是一个区的节点都放在一台物理机上(多区公用的除外)。这样每个节点进程就不能完全独占CPU,内存,网络等资源。而进行服务器性能测试也就是确保这些节点能够在一台机器上满足预定的设计要求。以下这些指标都可以通过外部的工具或者系统自带的指令进行数据收集和监控。
图片源自网络
1. CPU性能指标
CPU性能指标包括CPU的使用率和CPU load,是判断系统处理能力以及应用运行是否稳定的重要参数,可以通过top指令进行查看。
# 查看全部进程的CPU使用情况 -d1 表示刷新间隔1秒 top -d1 # 查看某个进程的使用情况 top -d1 -p<pid> # 查看某个进程的每个线程的使用情况 top -d1 -H -p<pid>
对于单个节点来说,通常CPU使用率不要超过70%。但这不是绝对值,还需要根据服务器上运行的进程节点数来进行合理的分配,假设一台4核机器上面运行着8个服务器节点进程,那么按照单节点70%的CPU占用标准就不合理了,因为在峰值下会有超负荷运行风险。这个时候我们可以根据CPU load来判定服务器是否处于超负荷运行状态。
2. 内存
每个节点运行过程中都会占用系统内存,因此也需要关注进程内存的使用情况。另外还有一个更重要的问题就是内存泄漏,节点如果出现内存泄漏就会有宕机的风险。节点运行中的数据并不都是实时入库,如果宕机就会丢失这部分没有保存的数据,从而造成损失。在进行性能测试的时候需关注进程的内存增长情况,并提前发现内存泄漏问题。下面展示了两种内存泄漏的曲线图,在性能测试中都可能会遇到。
3. 网络
网络带宽也是性能测试需要关注的地方,它即受到网卡流量影响,同时也受到网络传输的影响。例如比较熟悉的世界聊天,某个玩家发送聊天信息后服务器需要广播给在线的全部玩家。这样就会产生很大的网络流量,如果带宽不够就会造成数据延迟。
4. 磁盘io
磁盘io主要在文件读写,数据库存储等方面产生,出现io过载会使整个服务器都变的缓慢,因此io的负载也是需要在性能压测的时候进行关注。
三、事务指标
服务器为用户提供业务服务时,如何评估业务的处理能力,是否存在瓶颈,这就是性能测试需要找出的。以下这些指标需要性能测试工具进行收集统计计算得出。
1.事务响应时间
用户发起一个事务请求,服务器多久可以响应这个请求是判断业务处理能力的一个重要指标。事务响应时间包含客户端发出请求,网络传输,服务器处理三部分组成。
2.事务并发数
每秒同时发出的事务请求数量即并发数,通过不断的增大并发数,来观察服务器的性能数据表现以及响应时间,可以获得在指定条件下服务器能够承受的最大并发数。注意有些业务承受的最大并发数与用户数量有关。例如上面说的世界聊天,在线的用户数不同,服务器所能承受的最大并发数也有所不同。
3.事务TPS
TPS=并发数/平均响应时间,游戏服务器的TPS要求一般在80~120左右,当然越高越好。给定要求的TPS后,我们就可以通过并发数和响应时间压测出服务器的人数承载。
四、最后
以上就是服务器性能测试需要关注的相关性能指标,大家如果有疑问或者是有不同的见解,欢迎留言给我,互相学习共同进步!
欢迎微信搜索"游戏测试开发"关注一起沟通交流。