苏州保洁公司电话号码,绍兴网站建设优化,html网页设计作品中国传统文化,查询域名是否备案?导语#xff1a;近期经历了一系列的性能测试#xff0c;涵盖了Web服务器和游戏服务器的领域。在这篇文章中#xff0c;我将会对游戏服务端所做的测试进行详细整理和记录。需要注意的是#xff0c;本文着重于记录#xff0c;而并非深入的编程讨论。在这里#xff0c;我将与…导语近期经历了一系列的性能测试涵盖了Web服务器和游戏服务器的领域。在这篇文章中我将会对游戏服务端所做的测试进行详细整理和记录。需要注意的是本文着重于记录而并非深入的编程讨论。在这里我将与您分享这段时光的见闻希望能够为您呈现一个全面而有趣的视角谢谢您的关注。
引言
为什么要做游戏服务器的性能测试想想平时有没碰到哪些宕机卡顿场景。说不定就是服务器引起的。 用户体验保障 游戏服务器性能直接影响玩家的体验。如果服务器性能不足游戏可能会出现延迟、卡顿、掉线等问题影响玩家的乐趣甚至可能导致玩家流失。 稳定性验证 在高并发情况下游戏服务器可能会面临各种挑战如峰值负载、请求堆积等。性能测试可以验证服务器在不同负载情况下的稳定性和可靠性帮助开发人员发现潜在的问题并加以解决。 服务器容量规划 通过性能测试开发团队可以了解服务器在不同负载下的性能表现从而做出合理的容量规划。这有助于避免服务器过剩或不足的情况提高资源利用效率。 性能优化 通过性能测试可以识别服务器性能瓶颈和瓶颈原因。开发人员可以根据测试结果进行针对性的优化提升服务器的性能和响应速度。 应对突发情况 在游戏发布或活动期间服务器可能会面临突发的用户激增如推出新内容、举办活动等。性能测试可以模拟这种情况帮助开发团队准备应对措施保证服务器在压力下仍能正常运行。 节省成本 通过性能测试可以有效地发现并解决问题减少后期维护成本。同时避免了因服务器性能问题引起的用户流失有助于提高游戏的盈利能力。
技术框架剖析
主要是下面这些还有进程线程这些就不一一列出
编译语言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的终结。
注册、创角、登录一气呵成
我们的目标是验证注册、创角和登录的表现按需求在1分钟内承受2000的导量这是我们的挑战。令人欣慰的是注册、创角和登录的数据显示没有问题成功率竟然高达100%
登录耗时探寻根源
我们深入挖掘了玩家的登录耗时数据发现存在一些问题最长的耗时竟然达到了35秒。现在让我们一起揭开这些耗时长的面纱找出问题的源头。
统计协议响应时间优化的关键
为了针对性地优化我开始统计各种协议的响应时间。通过这些数据我们可以找到那些耗时较长的环节并将其交给开发团队进行深入优化。
定位问题再次登录的观察
我们对已经创角的玩家再次登录进行了观察发现黄色和红色角色都是已创角的。这提示我们可能存在创建角色耗时长的问题。在进一步的调查中我们发现问题出在了数据写入数据库上导致了耗时问题。
服务器的极限
我持续测试了半小时观察了游戏服的CPU和内存表现。不同公司标准不同而对于我司单核CPU达到100%、内存使用3G是服务器的承载上限。
探索大型玩法场景的极限
这次我们将进入一个充满挑战的领域探索大型玩法场景的负载极限。
打Boss、互相PK还有积分
在这个玩法中一群玩家将齐聚于同一场景迎接着Boss的挑战彼此间展开激烈的战斗不仅能够互相击杀还有机会获得积分。直至时间结束他们会走出场景留下属于战斗的记忆。这次我们要测试的是在这样的场景中服务器和客户端的性能表现。
探索极限玩家人数的挑战
我们的目标是找到这个场景能够支持的最大玩家人数让他们在同一场景中展开战斗。接下来我们将分析性能数据从中得出场景的负载极限。这将为我们后续的优化和规划提供宝贵的信息。得出一个场景极限后超出的则分流到多个场景。
极限挑战从百分之百到百分之二百
这次的标准与之前的新手测试有所不同。在新手测试中我们的服务器已经达到了百分之百的极限。而在这次的跨服测试中我们的极限提高到了百分之二百。然而这个标准的确立并不仅仅取决于服务器资源的分配还与服务器整体架构紧密相连。寻找服务器和玩家数量之间的平衡点。
CPU高负荷挑战的起因
我们注意到上图CPU的异常高负荷与同场景战斗的人数和频繁的战斗逻辑运算有着密切关系。在庞大的人数和频繁的战斗计算下CPU不堪重负面临过载的问题。
协议数据量的统计探寻数据症结
我们进一步研究了协议数据量令人惊讶的是单个机器人仅在1分钟内就接收了4万条数据。这些海量的数据传输不仅增加了网络负担也加重了服务器的压力进一步加剧了CPU的过载情况。
挑战与解决百人战斗的同步
百人同场景战斗所带来的全地图实时同步确实让服务器承受难以想象的压力。为了解决这个问题我们采取了局部广播-九宫格的策略。这种方式有效地减轻了服务器的负担让战斗同步变得更加可控。
探索的继续
在这次的技术探索中我们深入了解了CPU过载的原因以及其背后的数据关系。通过切换战斗同步策略我们正在逐步找到解决之道。技术世界充满了无限的挑战和机会让我们继续前行一同探索未知的领域。