【游戏】服务器性能测试(一)阈值

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
密钥管理服务KMS,1000个密钥,100个凭据,1个月
性能测试 PTS,5000VUM额度
简介: 游戏服务器性能测试中会遇到很多的知识点,我也是在努力学习中,在这里把工作中学习到的知识进行一下总结。本篇介绍一下服务器性能测试过程中的一些阀值问题。后续的文章中将持续介绍服务器架构相关,压测工具相关的内容。网络层的阀值和安全问题 玩网络游戏打本、组队、交流、体验各种交互玩法,都是建立在网络通信之上的。因此有一个稳定服务器是必要前提,而网络层作为最基础、最核心的模块往往需要经过层层考验。下面就是一些网络层会涉及到的问题和阀值相关内容。

【游戏】服务器性能测试(一)阈值


一、前言


   游戏服务器性能测试中会遇到很多的知识点,我也是在努力学习中,在这里把工作中学习到的知识进行一下总结。本篇介绍一下服务器性能测试过程中的一些阀值问题。后续的文章中将持续介绍服务器架构相关,压测工具相关的内容。


二、网络层的阀值和安全问题


   玩网络游戏打本、组队、交流、体验各种交互玩法,都是建立在网络通信之上的。因此有一个稳定服务器是必要前提,而网络层作为最基础、最核心的模块往往需要经过层层考验。下面就是一些网络层会涉及到的问题和阀值相关内容。


   1. 最大TCP连接数

       Linux系统对用户单一进程同时可打开文件数量是有限制的,网络通信中每个建立的链接都需要一个文件句柄,因此单个进程可接受客户端的连接数量是有上限,默认值一般为1024(可以ulimit -n查询)。如果在压测过程遇到服务器只能与特定数量的客户端建立连接时,可以看看这个值是否正常。


    2. 网络协议包大小限制


       在进行网络通信时,协议包的长度限制也是需要注意的。客户端与服务器通信的单个包一般需要设置一个阀值,当收到客户端过大的协议包就可以断开连接,并记录相应的异常日志。


微信截图_20220423225415.png


       另外,如今服务器很多都是分布式的,内部会有多个节点进行网络数据通信,这些节点之间的数据通信往往可以不与客户端使用相同大小的包限制(并非绝对如此),内部节点可以适当放大协议包的大小。


   3. 网络协议包接收队列阀值


       服务器处理每条协议需要消耗时间和资源,针对每个连接设置最大待处理协议包接收阀值也是一种保护手段。当某个连接发送的数据包过多时,则可以断开这个连接(一般这种属于恶意攻击或者业务设计问题)。


微信截图_20220423225435.png


   4. 协议包最好添加包头包尾


       这不是必须的,但增加包头和包尾可以使协议交互更加安全稳定。


微信截图_20220423225450.png


 5. 协议加密


       外挂是游戏不得不面对的问题,协议安全就是其中一个课题。协议加密并不是越复杂越好。每条协议都需要服务器解密和加密操作,过于复杂的算法会消耗CPU,导致服务器的业务处理能力上不去。在压测的时候会使用加密模式进行,以便可以将服务器这块的消耗也统计在内。


  三、功能业务阀值


   1. 最大注册人数


       最大注册人数一般用来限制单个区的注册上限,让用户可以分流到更新的区。特别是有些游戏由于特殊的需求,是必须限制注册上限的。这个就需要我们在压测业务时考虑进去。


微信截图_20220423225504.png


   2. 最大在线人数


       设置最大在线人数首先可以保证不超过上面说的最大连接数,再者可以保证服务器能在稳定的环境下处理业务。假设服务器承载为1万,设置为5000最大在线,这样可以减少服务器的负荷,也可以确保在线的玩家都可以顺畅的体验游戏。


   3. 用户排队机制


       在游戏登陆中排队我相信大家都遇到过,尤其是比较火的游戏刚开服会进入大量玩家的时候。虽然有最大在线人数做保障,增加用户排队也可以很好的减少服务器在短时间的高负荷,让进入游戏的玩家体验顺畅。


   4. 可用内存大小


       我相信内存泄露这种问题每个开发人员都有经历过。对服务器需要做内存监控,防止业务出现内存泄露导致服务器异常崩溃。在进行压测的之前可以对服务器进行编译时加入内存监控的模块,尽早发现泄露问题并解决它。有些时候也需要通过打印内存快照对比来分析。


   5. 定时器数量


       服务器的业务使用定时器是很平常的事情,但是滥用定时器可能就会导致定时器泄露。定时器中往往会保存一些数据,泄露的定时不仅会导致内存消耗,也会消耗轮训带来的CPU消耗。增加定时器数量监控,可以很好的发现泄露和不合理的业务设计。


   6. 日志文件大小


       一般很少有游戏服务器会将全部日志写入单个文件,即使是按小时存储日志,也需要考虑大小,否则超出单文件大小限制后就会出现写入失败的情况。尤其是可以通过日志恢复游戏数据的设计方式。


   7. 交互玩法的上限


       游戏中会有各种各样的玩法,能产生性能问题的玩法绝大多数为多人交互型,因此这些玩法都需要考虑是否需要加入上限限制。当然这个限制绝对必须是能够支撑整个玩法后的一个安全值。以下简单举例:


  • 同时战斗的副本场数 如果副本战斗比较消耗性能,就需要设定同时最大创建副本的数量。


  • 单场景容纳的人数上限 如果一个场景的人数过多,服务器广播的压力就很高,性能消耗也会很高。


四、总结


   上限阀值很多时候是为了服务器的稳定和安全做的,正常情况下是达不到这个值的。但如果没有这些上限阀值,意外情况或不法分子就可能会导致服务器问题,从而危及游戏数据安全。另外,应该还有很多其他的会对服务器性能产生影响的点,以上是我暂时想到的一些内容,希望可以对大家有用。


欢迎微信搜索"游戏测试开发"关注一起沟通交流。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
6天前
|
运维 Prometheus 监控
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
|
1月前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
109 32
|
1月前
|
缓存 监控 测试技术
服务器压力测试
【10月更文挑战第11天】服务器压力测试
82 31
|
30天前
|
机器学习/深度学习 人工智能 自然语言处理
软件测试中的人工智能:改变游戏规则的革新
在这篇技术性文章中,我们将深入探讨人工智能(AI)如何彻底改变了软件测试领域。从自动化测试到智能缺陷检测,AI不仅提高了测试的效率和准确性,还为软件开发团队提供了前所未有的洞察力。通过具体案例,本文揭示了AI在软件测试中应用的现状、挑战及未来趋势,强调了技术创新在提升软件质量与开发效率中的关键作用。
|
1月前
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
41 4
|
1月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
69 4
|
1月前
|
缓存 NoSQL Ubuntu
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
55 3
|
1月前
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
39 1
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
44 1
|
1月前
|
弹性计算 安全 测试技术
阿里云国际服务器与游戏出海业务结合,九河云助推企业快速运营
阿里云国际服务器与游戏出海业务结合,九河云助推企业快速运营