

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 最佳化受管 上的遊戲伺服器執行期組態 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。組建中的所有遊戲伺服器都必須在相同的平台上執行，並使用適用於 的伺服器 SDKAmazon GameLift Servers。
+ 使用一或多個伺服器程序組態建立執行時間組態和多個並行程序。
+ 將遊戲用戶端與 AWS 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.aws.amazon.com/general/latest/gr/gamelift.html#limits_gamelift)。機群伺服器程序組態的所有並行程序總和不得超過此配額。
+ 為了維持可接受的效能層級，Amazon EC2 執行個體類型可能會限制可同時執行的程序數量。測試遊戲的不同組態，找出適合您偏好執行個體類型的正確程序數量。
+ Amazon GameLift Servers 執行的並行程序不會超過設定的總數。這表示從先前的執行時間組態轉換到新組態可能會逐漸發生。