调试 Amazon GameLift Servers 队组问题
本主题提供了有关如何解决 Amazon GameLift Servers 托管式 EC2 实例集问题的指导。
实例集创建问题
当您创建托管式 EC2 实例集时,Amazon GameLift Servers 服务会启动一个工作流程,用于创建实例集,部署安装了游戏服务器生成包的 EC2 实例,以及在每个实例上启动游戏服务器进程。有关详细说明,请参阅。实例集在进入活动状态之前无法托管游戏会话和玩家。
您可以通过确定出现问题的实例集创建阶段并查看实例集创建事件和日志,来调试阻止实例集激活的问题。如果日志未提供有用信息,则问题可能是由内部服务错误造成的。在这种情况下,请再次尝试创建实例集。如果问题仍然存在,请尝试重新上传游戏生成包,以解决可能的文件损坏问题。您还可以联系 Amazon GameLift Servers 支持或在论坛上发布问题。
- 下载和验证生成包
-
在此阶段,Amazon GameLift Servers 会获取您上传的游戏服务器生成包,提取文件并运行所有安装脚本。如果实例集创建在这些阶段失败,请查看实例集事件和日志以查明问题。可能的原因包括:
-
Amazon GameLift Servers 无法获取压缩的生成包文件(事件
FLEET_BINARY_DOWNLOAD_FAILED)。请验证是否可以访问生成包的存储位置、您是否在与生成包相同的 Amazon Web Services 区域中创建实例集,以及 Amazon GameLift Servers 是否具有访问它的正确权限。 -
Amazon GameLift Servers 无法提取生成包文件(事件
FLEET_CREATION_EXTRACTING_BUILD)。 -
生成包文件中的安装脚本未能成功完成(事件
FLEET_CREATION_FAILED_INSTALLER)。
-
- 构建实例集资源
-
此阶段的问题通常涉及实例集资源的分配和部署。可能的原因包括:
-
请求的实例类型不可用。
-
请求的实例集类型(竞价型或按需型)不可用。
-
- 激活游戏服务器进程
-
在此阶段,Amazon GameLift Servers 会尝试执行大量任务和测试关键元素,包括游戏服务器的可行性、运行时配置设置以及游戏服务器使用服务器 SDK 与 Amazon GameLift Servers 服务连接的能力。
注意
在此阶段,您可以远程访问实例集实例以进一步调查问题。请参阅远程连接到 Amazon GameLift Servers 实例集实例。
可能的问题包括:
服务器进程未开始运行。这表明实例集的运行时配置设置有问题(事件
FLEET_VALIDATION_LAUNCH_PATH_NOT_FOUND或FLEET_VALIDATION_EXECUTABLE_RUNTIME_FAILURE)。请验证您是否正确设置了启动路径和可选启动参数。-
服务器进程开始运行,但实例集无法激活。如果服务器进程启动并成功运行,但实例集未变为活动状态,可能的原因是服务器进程无法与 Amazon GameLift Servers 服务通信。请验证您的游戏服务器是否正在进行以下正确的服务器 SDK 调用(请参阅初始化服务器进程):
-
服务器进程无法初始化(事件
SERVER_PROCESS_SDK_INITIALIZATION_TIMEOUT)。服务器进程调用InitSdk()失败。 -
服务器进程在准备好托管游戏会话时无法通知 Amazon GameLift Servers(事件
SERVER_PROCESS_PROCESS_READY_TIMEOUT)。服务器进程已初始化,但没有及时调用ProcessReady()。
-
-
VPC 对等连接请求失败。对于使用 VPC 对等连接创建的实例集(请参阅使用新实例集设置 VPC 对等连接),VPC 对等连接在此激活阶段中完成。如果 VPC 对等连接由于任何原因失败,新实例集将无法转入激活状态。通过调用 describe-vpc-peering-connections,您可以跟踪对等请求的成功或失败。请务必检查存在有效的 VPC 对等连接授权 (describe-vpc-peering-authorizations,因为授权仅在 24 小时内有效。
服务器进程问题
- 服务器进程启动但快速失败或者报告运行状况不佳。
-
不同于游戏构建中的问题,同时在实例上尝试运行了过多服务器进程时可能会发生这种情况。并发进程的最佳数目取决于实例类型和您的游戏服务器的资源要求。请尝试减少并发进程数量,该值在实例集的运行时配置中设置,以查看性能是否有所改进。您可以使用 Amazon GameLift Servers 控制台(编辑队组的容量分配设置)或者调用 Amazon CLI 命令 update-runtime-configuration 来更改队组的运行时配置。
实例集删除问题
- 由于最大实例计数而无法终止实例集。
-
错误消息指示正在删除的实例集仍有活动的实例,这种情况是不允许的。您必须首先将实例集缩减到零个活动实例。要执行此操作,可以手动将实例集所需的实例计数设置为“0”,然后等待缩减生效。请务必关闭自动扩缩,否则会抵消手动设置。
- VPC 操作未获授权。
-
此问题仅适用于您专门为其创建 VPC 对等连接的实例集(请参阅为 Amazon GameLift Servers 设置 VPC 对等连接)。之所以出现这种情况,是因为删除实例集的过程还包括删除实例集的 VPC 和所有 VPC 对等连接。必须首先通过调用 Amazon GameLift Servers CreateVpcPeeringAuthorization() 服务 API 或使用 Amazon CLI 命令
create-vpc-peering-authorization来获得授权。获得授权之后,您就可以删除该实例集。