游戏服务端性能测试实战总结

导语:近期经历了一系列的性能测试,涵盖了Web服务器和游戏服务器的领域。在这篇文章中,我将会对游戏服务端所做的测试进行详细整理和记录。需要注意的是,本文着重于记录,而并非深入的编程讨论。在这里,我将与您分享这段时光的见闻,希望能够为您呈现一个全面而有趣的视角,谢谢您的关注。

性能测试教程:2023最新的大厂jmeter性能测试全过程项目实战详解,悄悄收藏,后面就看不到了_哔哩哔哩_bilibiliicon-default.png?t=N6B9https://www.bilibili.com/video/BV1Vu411L77o/?spm_id_from=333.999.0.0

 

 

引言

为什么要做游戏服务器的性能测试?想想平时有没碰到哪些宕机卡顿场景,说不定就是服务器引起的。

用户体验保障: 游戏服务器性能直接影响玩家的体验。如果服务器性能不足,游戏可能会出现延迟、卡顿、掉线等问题,影响玩家的乐趣,甚至可能导致玩家流失。

稳定性验证: 在高并发情况下,游戏服务器可能会面临各种挑战,如峰值负载、请求堆积等。性能测试可以验证服务器在不同负载情况下的稳定性和可靠性,帮助开发人员发现潜在的问题并加以解决。

服务器容量规划: 通过性能测试,开发团队可以了解服务器在不同负载下的性能表现,从而做出合理的容量规划。这有助于避免服务器过剩或不足的情况,提高资源利用效率。

性能优化: 通过性能测试,可以识别服务器性能瓶颈和瓶颈原因。开发人员可以根据测试结果进行针对性的优化,提升服务器的性能和响应速度。

应对突发情况: 在游戏发布或活动期间,服务器可能会面临突发的用户激增,如推出新内容、举办活动等。性能测试可以模拟这种情况,帮助开发团队准备应对措施,保证服务器在压力下仍能正常运行。

节省成本: 通过性能测试,可以有效地发现并解决问题,减少后期维护成本。同时,避免了因服务器性能问题引起的用户流失,有助于提高游戏的盈利能力。

技术框架剖析

主要是下面这些,还有进程,线程这些,就不一一列出

编译语言:Python 3.10.9

Python一直以其简洁和强大而闻名,版本3.10.9带来了一系列令人兴奋的特性。我们将在这个框架中体验到这些特性的魅力,从而更高效地实现我们的目标。

强大的库支持

  • Ray:这个库为我们提供了分布式执行的能力,让我们的任务可以在多个进程和线程中并行执行,从而极大地提高了效率。
  • Pykka:作为一个轻量级的Python库,Pykka为我们提供了优雅的多线程编程方式,使得线程间的通信和协调变得更加简单。
  • Flask:作为一个微型的Web框架,Flask不仅简化了我们构建Web应用的过程,还为我们提供了扩展性强的组件。
  • Sproto:这个库让我们能够更加便捷地进行数据的序列化和反序列化,从而在通信过程中更加高效地传递数据。
  • Redis:作为一个高性能的缓存数据库,Redis将为我们的应用提供快速的数据访问能力,从而提升整体性能。

施压环境:Ubuntu Docker 容器

在技术的道路上,一个稳定且可控的环境是不可或缺的。我们将在Ubuntu Docker容器中搭建我们的实验环境,这将确保我们的测试和分析更加准确可靠。

新手测试场景模拟:探寻导量的奥秘

模拟导量负载,以云服务器为舞台

云服务器A上承载了众多游戏服,而云服务器B则承载多个中心服和跨服。这里,我们会模拟不同负载情况,为了更好地探索,将以批次的形式进入N个游戏服,紧随其后是新手测试,我们将一直持续到特定任务ID的终结。

 性能测试教程:2023最新的大厂jmeter性能测试全过程项目实战详解,悄悄收藏,后面就看不到了_哔哩哔哩_bilibiliicon-default.png?t=N6B9https://www.bilibili.com/video/BV1Vu411L77o/?spm_id_from=333.999.0.0

 

注册、创角、登录,一气呵成

我们的目标是验证注册、创角和登录的表现,按需求,在1分钟内承受2000的导量,这是我们的挑战。令人欣慰的是,注册、创角和登录的数据显示没有问题,成功率竟然高达100%!

游戏服务端性能测试实战总结

登录耗时:探寻根源

我们深入挖掘了玩家的登录耗时数据,发现存在一些问题,最长的耗时竟然达到了35秒。现在,让我们一起揭开这些耗时长的面纱,找出问题的源头。

游戏服务端性能测试实战总结

统计协议响应时间:优化的关键

为了针对性地优化,我开始统计各种协议的响应时间。通过这些数据,我们可以找到那些耗时较长的环节,并将其交给开发团队进行深入优化。

游戏服务端性能测试实战总结

游戏服务端性能测试实战总结

定位问题:再次登录的观察

我们对已经创角的玩家再次登录进行了观察,发现黄色和红色角色都是已创角的。这提示我们可能存在创建角色耗时长的问题。在进一步的调查中,我们发现问题出在了数据写入数据库上,导致了耗时问题。

游戏服务端性能测试实战总结

服务器的极限

我持续测试了半小时,观察了游戏服的CPU和内存表现。不同公司标准不同,而对于我司,单核CPU达到100%、内存使用3G,是服务器的承载上限。

游戏服务端性能测试实战总结

探索大型玩法场景的极限

这次,我们将进入一个充满挑战的领域,探索大型玩法场景的负载极限。

打Boss、互相PK,还有积分!

在这个玩法中,一群玩家将齐聚于同一场景,迎接着Boss的挑战,彼此间展开激烈的战斗,不仅能够互相击杀,还有机会获得积分。直至时间结束,他们会走出场景,留下属于战斗的记忆。这次,我们要测试的是在这样的场景中,服务器和客户端的性能表现。

探索极限:玩家人数的挑战

我们的目标是找到这个场景能够支持的最大玩家人数,让他们在同一场景中展开战斗。接下来,我们将分析性能数据,从中得出场景的负载极限。这将为我们后续的优化和规划提供宝贵的信息。得出一个场景极限后,超出的则分流到多个场景。

极限挑战:从百分之百到百分之二百

这次的标准与之前的新手测试有所不同。在新手测试中,我们的服务器已经达到了百分之百的极限。而在这次的跨服测试中,我们的极限提高到了百分之二百。然而,这个标准的确立并不仅仅取决于服务器资源的分配,还与服务器整体架构紧密相连。寻找服务器和玩家数量之间的平衡点。

游戏服务端性能测试实战总结

CPU高负荷:挑战的起因

我们注意到上图CPU的异常高负荷与同场景战斗的人数和频繁的战斗逻辑运算有着密切关系。在庞大的人数和频繁的战斗计算下,CPU不堪重负,面临过载的问题。

协议数据量的统计:探寻数据症结

我们进一步研究了协议数据量,令人惊讶的是,单个机器人仅在1分钟内就接收了4万条数据。这些海量的数据传输不仅增加了网络负担,也加重了服务器的压力,进一步加剧了CPU的过载情况。

游戏服务端性能测试实战总结

挑战与解决:百人战斗的同步

百人同场景战斗所带来的全地图实时同步,确实让服务器承受难以想象的压力。为了解决这个问题,我们采取了局部广播-九宫格的策略。这种方式有效地减轻了服务器的负担,让战斗同步变得更加可控。

探索的继续

在这次的技术探索中,我们深入了解了CPU过载的原因以及其背后的数据关系。通过切换战斗同步策略,我们正在逐步找到解决之道。技术世界充满了无限的挑战和机会,让我们继续前行,一同探索未知的领域。

 性能测试教程:2023最新的大厂jmeter性能测试全过程项目实战详解,悄悄收藏,后面就看不到了_哔哩哔哩_bilibiliicon-default.png?t=N6B9https://www.bilibili.com/video/BV1Vu411L77o/?spm_id_from=333.999.0.0

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/80915.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ompl初探

在/ompl-1.x.0/build/Release/bin下有很多生成的demo可执行文件 在终端执行 ./demo_Point2DPlanning 测试程序 #include <ompl/base/SpaceInformation.h> #include <ompl/base/spaces/SE3StateSpace.h> #include <ompl/base/StateSpace.h> #include <o…

跨平台图表:ChartDirector for .NET 7.1 Crack

什么是新的 ChartDirector for .NET 7.0 支持跨平台使用&#xff0c;但仅限于 .NET 6。这是因为在 .NET 7 中&#xff0c;Microsoft 停止了用于非 Windows 使用的 .NET 图形库 System.Drawing.Common。由于 ChartDirector for .NET 7.0 依赖于该库&#xff0c;因此它不再支持 .…

运放的分类、运放的参数

一、运放的分类 运放按功能分为通用运放与专用运放&#xff08;高速运放、精密运放、低IB运放等&#xff09;。 1.1通用运放 除廉价外&#xff0c;没有任何最优指标的运放。 例&#xff1a;uA741&#xff0c;LM324&#xff0c;TL06X&#xff0c;TL07X、TL08X等 国外知名运放…

【Django】Task4 序列化及其高级使用、ModelViewSet

【Django】Task4 序列化及其高级使用、ModelViewSet Task4主要了解序列化及掌握其高级使用&#xff0c;了解ModelViewSet的作用&#xff0c;ModelViewSet 是 Django REST framework&#xff08;DRF&#xff09;中的一个视图集类&#xff0c;用于快速创建处理模型数据的 API 视…

如何从用户视角搭建可观测体系?阿里云ECS业务团队的设计思路

一分钟精华速览 互联网平台以业务为中心&#xff0c;以用户为中心&#xff0c;平台的功能服务、质量和用户体验等是关键的目标&#xff0c;仅仅关注后台系统的可用性是不够的&#xff0c;以传统运维的视角来解决故障、做监控会比较被动。 本文以阿里云 ECS 业务为例&#xff…

某多多商品平台数据采集

某多多商品平台数据采集 声明逆向目标寻找加密位置代码分析补环境补充内容声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者 无关,若有侵权,请私信我立即删除! 逆向目标 Anti-Content参数 寻找加密位置 先在控制台全局搜…

CCF HPC China2023 | 盛大开幕,邀您关注澎峰科技

2023年8月24日&#xff0c;以“算力互联智领未来”为主题的第十九届全国高性能计算学术年会&#xff08;CCF HPC China 2023&#xff09;在青岛红岛国际会议展览中心拉开帷幕。特邀嘉宾涵盖行业大咖&#xff0c;主持阵容同样是“重量级”——来自国家并行计算机工程技术研究中心…

设计模式之工厂模式

文章目录 一、介绍二、基本组件三、案例应用1. 代码演示2. 优缺点 四、静态工厂1. 应用 五、总结 一、介绍 工厂模式(Factory Pattern)是最常使用的设计模式之一&#xff0c;属于创建型设计模式。在该设计模式中&#xff0c;我们不再使用new来实例化对象&#xff0c;而是通过工…

Mysql-InnoDB数据页结构

一、页结构说明 大致分7部分 二、记录在页中的存储 2.1 页面记录内存结构 行格式 存储到 User Records 部分&#xff0c;每当我们插入一条记录&#xff0c;都会从 Free Space 部分申请一个记录大小的空间划分到 User Records 部分 &#xff0c;用完则申请新的页&#xff1b; …

一网打尽java注解-克隆-面向对象设计原则-设计模式

文章目录 注解内置注解元注解 对象克隆为什么要克隆&#xff1f;如何克隆浅克隆深克隆 Java设计模式什么是设计模式&#xff1f;为什么要学习设计模式&#xff1f; 建模语言类接口类之间的关系依赖关系关联关系聚合关系组合关系继承关系实现关系 面向对象设计原则单一职责开闭原…

【LeetCode-中等题】53. 最大子数组和

题目 题解一&#xff1a;暴力解法&#xff1a; //暴力解法 每个元素为都循环一次&#xff0c;持续更新最大值int maxS Integer.MIN_VALUE;for(int i 0;i<nums.length;i){int num 0;for(int j i;j<nums.length;j){num numnums[j];maxS Math.max(maxS,num);}}retur…

SQL查询结果数字转字符串,以及查询结果的的四舍五入

最近在工作中碰到了SQL进行查询&#xff0c;碰到了SQL查询结果位数字型&#xff0c;需要把数字转化为字符串来进行下一步工作&#xff0c;整理结果如下: 先看图&#xff1a; 我们需要的查询data_val的和&#xff0c;这样的查询SQL如下: select sum(data_val) from 表名 where …