服务端的性能测试(一)

本文聚焦服务端性能测试,区别于 APP 性能测试。介绍了服务端性能测试基本概念,强调功能正确性、并发性及关注服务器性能数值。着重讲解硬件资源指标获取方式,如通过 vmstat 命令获取 CPU 状态数据,还提及内存的可用内存和页面交换等指标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说起性能测试,许多移动端测试的人员可能会比较陌生,性能测试不是涉及到APP的启动时间、流量、大小、耗电量等的相关指标么。本文所讲的是一个与APP的性能测试完全不同的领域:服务端的性能测试。我们会针对服务端有一些不同的指标。

     那么究竟什么是服务端的性能测试?

     我们从最基本的功能测试说起吧。比如,我们要测试一个接口的返回,那么我们测试的时候,会有一个输入的参数,服务端接收到了后会返回一些数据,然后客户端会利用这些数据展示一些相应的结果,如果符合最开始的预期则功能正确。

 

    那么,我们如何对该接口进行性能测试呢?

    我们会模拟多个人同时进行访问这个接口,在保证返回数据正确的前提下,去监管服务端的程序下的各项性能指标和该服务器处理这些请求的时候服务器的硬件使用情况。

     好吧,这个比喻比较粗犷,但是涵盖了性能测试的基本注意点:

     1.功能首先要保证接口处理数据的正确性

     2.对并发性是有要求的

     3.服务器在并发压力的时候一些性能数值

 

     那么我们性能测试都要注意那些数值呢?我们主要应该关注两方面的性能指标:

     功能业务指标:响应时间(RT)、并发数、接口成功率、吞吐量(QPS/TPS)等等

     硬件资源指标:内存、CPU、Nerwork I/O等资源消耗情况

     今天我们先说一下我们的硬件资源指标的获取方式。

CPU:

     我们可以在linux系统上通过vmstat命令来获取一些关于CPU状态的数据:

 

 

     对操作系统了解的同学知道在系统中,进程通常处于三种状态:Running(运行)、Waiting(等待)、Blocked(阻塞)。

     CPU使用率:一些进程处于Running状态的时间对比总时间。在上面的主要通过sy、us、id三种数据来体现:

        sy  系统(中断和内核)占用CPU的百分比

  us  即是占用CPU的百分比

  id   CPU可用的百分比

  性能测试指标中,CPU使用率通常用sy + us来计算,我们接受上限一般在60%~85%。另外需要关注的是,在我们测试过程中,如果sy的值过于长的时间大于25%的状态,应该关注系统中断和上下文切换的数值,并根据具体的功能和实现来判断是否合理。

  运行进程队列数:运行状态+等待状态的进程数,展示了正在运行和等待CPU资源的进程任务数,可以看作CPU的运行清单,可以作为判断CPU是否成为上限瓶颈的重要依据。vmstat通过r的数值来体现:

  r: 可运行进程数,包括正在运行和已就绪等待运行的。

  如果r的值等于系统CPU总核数,则说明CPU已经满负荷。

Memory:

     可用内存:内存占用的数据,上述数值中free的值,可用内存过小将影响整个系统的运行效率,对于稳定运行的系统,free可控制的范围一般应该大于物理内存的25%,也就是说内存占用应该不大于物理内存的75%。

  页面交换:页面交换其中包括SWAP交换到内存中和内存中交换到SWAP,如果系统页面交换过多,需要引起注意。可以从vmstat的si和so获取:

  si   每秒从交换区读取到内存的数据大小

  so  每秒从内存写入到交换区的数据大小

     剩下的指标Nerwork I/O等通常可以通过一些工具来监控,如果同学们对此感兴趣可以在底下留言,后续我们会在性能测试工具的分享里一一为大家说明~

     今天主要为大家讲解了硬件资源的一些指标,如果大家感兴趣的话,下次的分享我们可以针对一些功能业务上的指标测试方法和获得数据上做一些说明。就酱,希望对大家有一些帮助

 

游戏服务端性能测试是确保游戏在高并发、复杂交互和持续运行情况下保持稳定和高效的关键环节。与通用服务端测试相比,游戏服务端对实时性、网络延迟、玩家互动机制和资源调度有更高的要求。 ### 游戏服务端性能测试方法 游戏服务端性能测试通常包括以下几种方法: - **负载测试(Load Testing)**:通过模拟大量玩家同时在线的行为,测试系统在预期负载下的表现。例如,模拟数千名玩家同时登录、战斗、交易等操作,观察服务器响应时间、吞吐量等指标[^2]。 - **压力测试(Stress Testing)**:逐步增加系统负载,直至系统崩溃或响应时间不可接受,用于识别系统瓶颈和极限处理能力。例如,不断增加玩家数量,直到服务器无法处理新请求[^3]。 - **并发测试(Concurrency Testing)**:测试系统在多个玩家同时进行关键操作(如战斗、副本进入、排行榜更新)时的表现,确保数据致性与同步机制正常[^1]。 - **稳定性测试(Soak Testing)**:长时间运行系统,观察内存泄漏、资源耗尽等问题,确保系统可以稳定运行数天甚至数周[^2]。 - **故障恢复测试(Failover Testing)**:模拟服务器宕机、网络中断等异常情况,验证系统是否具备自动切换、数据恢复和玩家状态保持的能力[^3]。 ### 游戏服务端性能测试工具 以下是些常用的游戏服务端性能测试工具和技术栈: - **JMeter**:Apache JMeter 是个开源的性能测试工具,支持模拟 HTTP、WebSocket、TCP 等多种协议,适用于测试游戏服务端 API 和接口性能[^2]。 - **Locust**:基于 Python 的分布式负载测试工具,支持编写自定义测试脚本,适合模拟玩家行为,如登录、移动、战斗等操作。其并发模型更贴近游戏场景。 ```python from locust import HttpUser, task class GamePlayer(HttpUser): @task def login(self): self.client.post("/login", json={"username": "test", "password": "test"}) @task(3) def move(self): self.client.post("/move", json={"x": 100, "y": 200}) ``` - **Gatling**:个基于 Scala 的高性能负载测试工具,支持高并发模拟和详细的性能报告生成,适合需要复杂场景模拟的游戏服务端测试[^2]。 - **Tsung**:支持多种协议(HTTP、WebSocket、XMPP 等)的分布式压力测试工具,适用于 MMO(大型多人在线)游戏的性能测试。 - **自研工具**:对于高度定制化的游戏服务端,团队可能需要开发专用测试工具,结合游戏逻辑模拟真实玩家行为,例如使用 Python + asyncio 实现高并发异步请求模拟[^4]。 ### 性能监控与优化 在进行性能测试的同时,还需要结合性能监控工具来实时采集系统指标,如 CPU、内存、网络延迟、数据库响应时间等。常用监控工具包括: - **Prometheus + Grafana**:用于实时监控服务器资源使用情况和可视化展示。 - **New Relic / Datadog**:提供应用性能监控(APM)功能,可深入分析服务端函数调用、数据库查询等性能瓶颈。 - **ELK Stack(Elasticsearch, Logstash, Kibana)**:用于日志收集与分析,帮助识别错误模式和性能问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值