Amazon GameLift
开发人员指南 (版本 )
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

在队组上运行多个进程

本主题提供了关于如何设置队组的运行时配置以每个实例运行多个进程的其他信息。根据您配置队组的方式,运行多个进程可以让您更好地控制对 Amazon GameLift 资源的使用,提高效率且可能减少整体托管成本。

针对多个进程优化

您必须至少执行以下操作来启用多个进程:

  • 创建生成包,其中包含您要部署到队组并上传到 Amazon GameLift 的所有游戏服务器可执行文件。生成包中的所有游戏服务器必须运行在同一个平台上,并且使用 Amazon GameLift Server SDK for C++ 版本 3.0.7 或更高版本与 Amazon GameLift 集成。

  • 使用一个或多个服务器进程配置和多个并发进程创建运行时配置。

  • 游戏客户端连接到此队组上托管的游戏,并且必须使用 AWS SDK 版本 2016-08-04 或更高版本进行集成。

此外,在您的游戏服务器中实现以下内容优化队组性能:

  • 处理服务器进程关闭方案以确保 Amazon GameLift 可以有效回收进程。如果未执行此操作,服务器进程无法关闭,直至失败。

    • 添加关闭程序到您的游戏服务器代码,结束服务器 API 对 ProcessEnding() 的调用。

    • 在您的游戏服务器代码中实现回调函数 OnProcessTerminate() 以正常处理来自 Amazon GameLift 的终止请求。

  • 通过定义“正常”和“不正常”的意义以及将此状态报告回 Amazon GameLift,确保快速关闭和重新启动“不正常”的服务器进程。您可以通过在游戏服务器代码中实现 OnHealthCheck() 回调函数来做到这一点。Amazon GameLift 自动关闭连续三分钟报告为不正常的服务器进程。如果您未实现 OnHealthCheck(),Amazon GameLift 假定服务器进程正常,除非进程无法响应。因此,性能不佳的服务器进程可以继续存在,用尽资源,直到它们最终失败。

队组如何管理多个进程

Amazon GameLift 使用队组运行时配置管理在队组中的各个实例上维护哪些进程。运行时配置实际上由一个或多个服务器进程配置组成,每个配置标识以下内容:

  • 队组上部署的游戏生成包中服务器可执行文件的路径和文件名

  • (可选) 参数在启动时传递给服务器进程

  • 在实例上并发维护的服务器进程数

在队组中启动了实例时,实例立即开始启动在运行时配置中调用的服务器进程。服务器进程在实例上用几秒钟交替启动,因此,根据为实例配置的服务器进程总数,实现全部容量可能需要几分钟。

随着时间的推移,服务器进程由自行终止功能结束(调用服务器开发工具包 ProcessEnding())或由 Amazon GameLift 终止。实例定期检查它是否正在运行在运行时配置中指定的服务器进程的数量和类型。如果没有,实例会根据需要自动启动服务器进程以满足运行时配置要求。因此,随着服务器进程结束,其资源会持续回收以支持新的服务器进程,实例通常会维护活动服务器进程的预期补充。

您可以随时通过添加、更改或删除服务器进程配置来更改队组的运行时配置。此处介绍 Amazon GameLift 如何采用运行时配置更改。

  1. 在实例检查它是否在运行正确类型和数量的服务器进程之前,它会首先从 Amazon GameLift 服务请求队组运行时配置的最新版本。如果您已更改运行时配置,则实例获取新版本并实施它。

  2. 实例根据最新运行时配置检查其活动进程,并按如下所示处理不一致的情况:

    • 更新后的运行时配置删除了一个服务器进程类型。不再与运行时配置匹配的活动服务器进程将继续运行,直至结束。

    • 更新后的运行时配置减少了某个服务器进程类型的并发进程数。该类型的超量服务器进程将继续运行直至结束。

    • 更新后的运行时配置添加了一个新的服务器进程类型,或者增加了现有类型的并发进程数设置。新服务器进程将立即启动以匹配更新后的运行时配置,除非实例已经运行了最大数量的服务器进程。在这种情况下,新服务器进程仅在现有进程结束时启动。

选择每个实例的进程数

在确定并发进程数时,需要注意三个有效的限制:

  • Amazon GameLift 限制每个实例的最大并发进程数。不论您的运行时配置指定了一个还是多个服务器进程配置,队组的服务器进程配置的所有并发进程数总和不能超过此限制。

  • 您选择的 Amazon EC2 实例类型可能会限制可并发运行的进程数以提供可接受的性能水平。您需要测试游戏的不同配置以找出您首选实例类型的最佳进程数。影响选择的因素包括游戏服务器的资源要求、每个游戏会话中要托管的玩家数以及玩家性能预期。

  • 更改队组的运行时配置时,请记住 Amazon GameLift 从不运行超出所配置总数的并发进程。这意味着,从旧的运行时配置的转换可能会逐渐出现只有现有进程结束后才会启动新进程的情况。示例如下:您可以将队组配置为运行服务器可执行文件 myGame.exe 的 10 个并发进程,将启动参数设置为 "-loglevel=1"。您更新配置,继续运行 myGame.exe 的 10 个并发进程,但将启动参数更改为 "-loglevel=4"。由于队组中的实例已经运行 10 个进程,Amazon GameLift 将会等待,直到使用旧启动参数的进程结束,再启动使用新启动参数的进程。