
如何分析和优化Unreal Engine的游戏服务器与服务器分析
在 Unreal Engine 中什么是服务器分析?
服务器分析是收集和分析性能数据的过程,目的是了解它如何消耗关键资源,如 CPU、内存和网络带宽。
在 Unreal Engine 中,服务器分析提供对系统的可见性,如物理、AI 对手和复制在真实多人负载下的行为方式。目标是识别性能瓶颈和限制,以及在它们影响玩家或生产基础设施之前发现稳定性风险。
服务器分析过程通常帮助开发者回答以下问题:
哪些角色消耗最多的内存,内存随着角色实例数量的变化、时间或每个玩家的变化进行扩展,什么条件可能导致内存不足(OOM)崩溃?
哪些功能或特性消耗最多的 CPU 周期,以及为什么(例如,玩家数量、刻率、AI、物理或复制)?
哪些特性占用了每刻的资源成本,刻率的变化如何影响游戏质量、模拟稳定性和网络使用?
是什么导致网络抖动、延迟峰值或服务器端去同步?
如何在 Unreal Engine 中分析服务器及最佳的服务器分析工具?
Epic Games 为任何 Unreal Engine 用户提供了可以与 Edgegap 一起使用的分析工具:
Unreal Trace Server
Unreal Trace Server 是服务器分析数据的“收集器”。
它是一个轻量级服务,用于收集、存储和可选地流式传输由 Unreal Engine 应用程序在运行时生成的追踪数据。
它允许工具如 Unreal Insights 连接到运行中的服务器或记录的会话,以实时或离线分析 CPU、内存、网络和资产加载行为。
如何与 Edgegap 一起使用:
配置您的 Unreal Engine 服务器中的追踪(内置和自定义事件)。
将追踪保存到服务器磁盘上使用 -tracefile,上传到第三方存储并进行离线分析;
或者,在开发测试期间通过 UDP 协议在内部端口 1981 上使用 Edgegap 的部署流式传输追踪数据。
Unreal Insights
Unreal Insights 是服务器分析数据的“查看器”。
详细而言,它是 Unreal Engine 的性能分析和可视化工具,用于检查从运行的应用程序和服务器捕获的追踪数据。
它允许开发者分析 CPU 执行、线程化、内存使用、资产加载和网络行为,以识别瓶颈和可扩展性问题。
如何与 Edgegap 一起使用:
Edgegap 的容器日志
可在您的游戏服务器部署的详细页面内使用,阅读 Unreal Engine 日志以寻找和排查服务器错误,并使用 Unreal Engine 调试符号跟踪堆栈跟踪以识别问题代码。

警告:一旦部署停止,容器日志将被删除。 设置第三方 S3 日志存储以保存日志。
查看容器指标(处理器、内存、网络)以:
在故障排除时识别常见连接问题;
检测导致资源使用峰值的低效实现模式;
在特定情况下找到低效的资源使用;
在优化期间验证服务器资源使用的变化;
基准测试您的服务器初始化资源消耗和持续时间。
Edgegap 创建了每个部署的唯一标识符,使您能准确跟踪性能使用情况并将玩家和测试人员报告链接到部署并跟踪资源(实时或比赛后)
Edgegap 的容器指标
也可在您的游戏服务器部署的详细页面内使用,容器指标(顾名思义)提供容器在处理器、内存、网络方面的性能数据。

注意:历史指标显示值平均值时间段为 1 分钟,可在免费阶层中使用。升级到按使用付费并以 1 秒的报告间隔解锁原始的非聚合的实时指标。
Edgegap 的仪表板监控
Edgegap 的仪表板为您提供通过深入分析来监控服务器可扩展性的能力。
提供给升级到按使用付费的用户(只需将信用卡添加到您的免费账户中,无需支出)它提供以下见解:
常规洞察:实时监控每个版本的服务器数量和资源使用概况。
CPU 洞察:排查由于处理器密集操作导致的服务器延迟问题。
内存洞察:缓解因超出分配内存而导致的服务器重启。
网络洞察:检测效率低下的网络模式并优化网络代码。
服务器分析中应评估什么资源及其原因
最终,减少您专用游戏服务器的资源使用意味着 1. 提高稳定性和玩家体验,2. 降低您的云计算成本。
关键是评估以下每个元素,并根据您的测试和独特情况审查,您应该花费时间优化的内容。
注意:显然还有更多,但以下检查清单可帮助您开始服务器分析过程。
如何进行 A/B 测试
设置两个或多个游戏变体以解决特定性能问题。
使用您的游戏后端细分将新变体提供给游戏的小部分人群。
比较规范化的指标和统计显著性以量化每个变体的改进。
迭代优化,准备新变体,并根据性能目标进行验证。
CPU 洞察
目标:减少 CPU 使用量以允许更高的玩家数量、更高的刻率或更小的实例大小。
需要审查的内容:
识别每刻的高成本子系统(AI、物理、复制、游戏逻辑)。
调整服务器刻率以平衡模拟保真度与 CPU 负载。
检查线程竞争或任务图中的停滞任务。
优化繁重的循环或每刻事件。
内存洞察
目标:最小化内存占用并防止 OOM 崩溃,允许更密集的服务器打包。
需要审查的内容:
监控持久性分配(UObjects、大数组)。
优化对象池:
跟踪临时分配并减少临时对象动荡。
评估垃圾回收频率和持续时间。
确保内存使用量随着玩家数量线性扩展。
减少对远离或无关紧要的角色的模型和纹理保真度。
考虑使用层级静态实例网格以减少人群模拟资源使用。
将纹理和动画烘焙成一个单一材质以减少内存占用。
网络使用洞察
目标:减少出口使用,消除延迟,并提高稳定性以支持更多的并发玩家。
分析复制角色和属性的数据量;删除不必要的更新。
优化数据类型以在可能的情况下减少数据包大小。
实现增量复制和压缩,使用快照复制作为在去同步情况下的备用措施。
通过结合不能单独发生的多个动作在一个参数化的远程过程调用中,减少玩家加入或执行动作时的带宽峰值。
刻时间和帧稳定性
目标:保持稳定的刻率以避免 CPU 峰值和网络去同步。
资产和 I/O 使用
目标:减少影响 CPU 和网络性能的运行时 I/O 峰值。
需要审查的内容:
分析资产流式传输和运行时加载。
监控序列化成本以进行复制和保存/加载操作。
减少可能影响 CPU/网络的磁盘 I/O 峰值。
书写者
Edgegap团队








