

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在托管式 Amazon GameLift Servers 上优化游戏服务器运行时配置
<a name="fleets-multiprocess"></a>

您可以设置托管 EC2 实例集的运行时配置，以便对每个实例运行多个游戏服务器进程。这样可以更有效地使用您的托管资源。

## 实例集如何管理多个进程
<a name="fleets-multiprocess-howitworks"></a>

Amazon GameLift Servers 使用实例集的运行时配置来确定要在每个实例上运行的进程的类型和数量。运行时配置至少包含一个代表一个游戏服务器可执行文件的服务器进程配置。您可以定义其他服务器进程配置，以运行与您的游戏相关的其他类型的进程。每个服务器进程配置都包含以下信息：
+ 游戏构建中可执行文件的文件名和路径。
+ （可选）要在启动时传递给进程的参数。
+ 要同时运行的进程的数量。

当实例集中的实例激活时，它会启动在运行时配置中定义的服务器进程。对于多个进程，Amazon GameLift Servers 会错开每个进程的启动。服务器进程具有有限的生命周期。当它们结束时，Amazon GameLift Servers 会启动新的进程，以保持运行时配置中定义的服务器进程的数量和类型。

您可以随时通过添加、更改或删除服务器进程配置来更改运行时配置。每个实例都会定期检查对实例集运行时配置的更新，以实施更改。以下介绍 Amazon GameLift Servers 如何采纳运行时配置更改：

1. 该实例向 Amazon GameLift Servers 发送请求以获取最新版本的运行时配置。

1. 该实例将其活动进程与最新的运行时配置进行比较，然后执行以下操作：
   + 如果更新的运行时配置删除了某个服务器进程类型，此类型的活动服务器进程将继续运行直到结束。该实例不会取代这些服务器进程。
   + 如果更新的运行时配置减少了某个服务器进程类型的并发进程数，此类型的多余服务器进程将继续运行直到结束。该实例不会取代这些多余服务器进程。
   + 如果更新的运行时配置添加了新的服务器进程类型或增加了现有类型的并发进程，该实例将启动新的服务器进程，直至达到 Amazon GameLift Servers 的上限。在这种情况下，该实例在现有进程结束时启动新的服务器进程。

## 针对多个进程优化实例集
<a name="fleets-multiprocess-changes"></a>

要在实例集上使用多个进程，请执行以下操作：
+ [创建生成包](gamelift-build-intro.md)，其中包含您要部署到实例集的游戏服务器可执行文件，然后将生成包上传到 Amazon GameLift Servers。生成包中的所有游戏服务器都必须在同一个平台上运行并使用 Amazon GameLift Servers 的服务器软件开发工具包。
+ 使用一个或多个服务器进程配置和多个并发进程创建运行时配置。
+ 将游戏客户端与 Amazon SDK 版本 2016-08-04 或更高版本集成。

要优化实例集性能，建议您执行以下操作：
+ 处理服务器进程关闭方案，以确保 Amazon GameLift Servers 可以高效率地回收进程。例如：
  + 向调用服务器 API `ProcessEnding()` 的游戏服务器代码添加关闭程序。
  + 在您的游戏服务器代码中实现回调函数 `OnProcessTerminate()` 以处理来自 Amazon GameLift Servers 的终止请求。
+ 确保 Amazon GameLift Servers 已关闭并重新启动运行状况不正常的服务器进程。您可以通过在游戏服务器代码中实现 `OnHealthCheck()` 回调函数来将该运行状况回报给 Amazon GameLift Servers。Amazon GameLift Servers 自动关闭连续三次均报告为运行状况不正常的服务器进程。如果不实现 `OnHealthCheck()`，Amazon GameLift Servers 会假定服务器进程正常运行，除非该进程无法响应通信。

## 选择每个实例的进程数
<a name="fleets-multiprocess-number"></a>

在决定要在实例上运行的并发进程数时，需要记住以下内容：
+ Amazon GameLift Servers 限制每个实例的[最大并发进程数](https://docs.amazonaws.cn/general/latest/gr/gamelift.html#limits_gamelift)。实例集服务器进程配置的所有并发进程的总和不能超过此限额。
+ 为维持可接受的性能水平，Amazon EC2 实例类型可能会限制可并发运行的进程数。测试游戏的不同配置以找出您首选实例类型的合适进程数。
+ Amazon GameLift Servers 运行的并发进程数不会超过配置的总数。这意味着从以前的运行时配置到新配置的过渡可能会逐渐发生。