

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

# 設定 Auto Scaling 群組的預設執行個體暖機期
<a name="ec2-auto-scaling-default-instance-warmup"></a>

CloudWatch 在您的 Auto Scaling 執行個體中收集和彙總使用資料，例如 CPU 和網路輸入/輸出。您可以使用這些指標來建立擴展政策，而這些政策會根據所選指標值的增加和減少來調整 Auto Scaling 群組中的執行個體數量。

您可以指定執行個體達到其在將用量資料提供給彙總指標之前等待`InService`狀態的時間。此指定時間稱為*預設執行個體暖機期*。這可避免動態擴展受到尚未處理應用程式流量之個別執行個體的指標影響，並且可能暫時遇到高使用量的運算資源。

為了最佳化目標追蹤和步進擴展政策的效能，強烈建議您啟用和設定預設執行個體暖機期。預設不會啟用或設定。

當您啟用預設執行個體暖機期時，請記住，如果您的 Auto Scaling 群組設定為使用執行個體維護政策，或者您使用執行個體重新整理來取代執行個體，您可以防止執行個體在完成初始化之前計入運作狀態最低百分比。

**Topics**
+ [擴展效能考量](#scaling-performance-considerations)
+ [選擇預設執行個體暖機時間](#choose-the-default-instance-warmup)
+ [為群組啟用預設執行個體暖機期](enable-default-instance-warmup.md)
+ [驗證群組的預設執行個體暖機期](verify-default-instance-warmup.md)
+ [尋找具有先前設定之執行個體暖機時間的擴展政策](find-policies-with-a-previously-set-instance-warmup.md)
+ [清除先前為擴展政策設定的執行個體暖機期](clearing-the-previously-set-instance-warmup.md)

## 擴展效能考量
<a name="scaling-performance-considerations"></a>

對於大多數應用程式來說，有一個預設的執行個體暖機時間適用於所有功能，而不是不同功能的不同暖機時間是有用的。例如，如果您未設定預設執行個體暖機期，執行個體重新整理功能會使用運作狀態檢查寬限期做為預設暖機期。如果您有任何目標追蹤和步進擴展政策，它們會使用為預設冷卻時間設定的值作為預設暖機時間。如果您有任何預測擴展政策，則沒有預設的暖機時間。

當執行個體暖機時，只有在未暖機的執行個體指標值大於政策的警示高閾值 （或目標追蹤擴展政策的目標使用率） 時，您的動態擴展政策才會向外擴展。如果需求減少，動態擴展會變得更保守，以保護應用程式的可用性。這會封鎖動態擴展的縮減活動，直到新的執行個體完成暖機。

向外擴展時，Amazon EC2 Auto Scaling 會在決定要新增至群組的執行個體數量時，將暖機的執行個體視為群組容量的一部分。因此，需要新增類似容量的多個警示違規會導致單一擴展活動。目的是持續向外擴展，而不會過度擴展。

如果未啟用預設執行個體暖機期，則執行個體在將指標傳送至 CloudWatch 並將其計入目前容量之前等待的時間會因執行個體而異。因此，與實際發生的工作負載相比，擴展政策有可能無法預測地執行。

例如，可以假設一個具有重複間歇工作負載模式的應用程式。預測擴展政策可用於針對是否增加執行個體數量做出週期性決策。由於預測擴展政策沒有預設的暖機時間，執行個體會立即開始對彙總指標做出貢獻。如果這些執行個體在啟動時有較高的資源使用量，則新增執行個體可能會導致彙總指標激增。這可能會影響使用這些指標的任何動態擴展政策，視使用量穩定下來所需的時間而定。如果違反動態擴展政策的高警示閾值，則群組的大小會再次增加。當新的執行個體暖機時，縮減活動將會遭到封鎖。

## 選擇預設執行個體暖機時間
<a name="choose-the-default-instance-warmup"></a>

設定預設執行個體暖機期的關鍵在於確定執行個體完成初始化所需的時間，以及在執行個體達到 `InService` 狀態後資源消耗穩定下來所需的時間。選擇執行個體暖機時間時，請嘗試在收集合法流量的用量資料，以及將與啟動時臨時用量峰值相關聯的資料收集降到最低之間保持最佳平衡。

假設您有一個 Auto Scaling 群組連接到 Elastic Load Balancing 負載平衡器。新的執行個體完成啟動後，它們會註冊到負載平衡器，然後再進入 `InService` 狀態。在執行個體進入 `InService` 狀態後，資源耗用仍然會遇到暫時峰值，並需要時間來穩定。例如，相較於無需下載大型資產的輕量型 Web 伺服器，必須下載和快取大型資產的應用程式伺服器的資源耗用需要更長的穩定時間。執行個體暖機期提供了穩定資源耗用所需的時間延遲。

**重要**  
如果您不確定需要多少時間進行暖機，可以從 300 秒開始。然後逐漸減少或增加，直到您取得應用程式的最佳擴展效能為止。您可能需要這樣做幾次才能正確完成。或者，如果您有任何具有自己的暖機時間 (`EstimatedInstanceWarmup`) 的擴展政策，您可以使用此值開始。如需詳細資訊，請參閱[尋找具有先前設定之執行個體暖機時間的擴展政策](find-policies-with-a-previously-set-instance-warmup.md)。

可以考慮將生命週期關聯用於在啟動時要執行組態任務或指令碼的使用案例。生命週期關聯可以延遲新的執行個體投入使用，直到其完成初始化。它們特別適用於您的自舉指令碼需要一段時間才能完成的情況。如果您新增 lifecycle hook，則可以減少預設執行個體暖機期的值。如需有關 lifecycle hook 的詳細資訊，請參閱 [Amazon EC2 Auto Scaling lifecycle hook](lifecycle-hooks.md)。

# 為群組啟用預設執行個體暖機期
<a name="enable-default-instance-warmup"></a>

您可以在建立 Auto Scaling 群組時啟用預設執行個體暖機期。您也可以為現有的群組啟用此功能。

透過啟用預設執行個體暖機功能，您不再需要為下列功能的暖機參數指定值：
+ [執行個體重新整理](instance-refresh-overview.md#instance-refresh-core-concepts)
+ [目標追蹤擴展](as-scaling-target-tracking.md#as-target-tracking-scaling-warmup)
+ [步進擴展](as-scaling-simple-step.md#as-step-scaling-warmup)

------
#### [ Console ]

**為新群組啟用預設執行個體暖機期 (主控台)**  
當您建立 Auto Scaling 群組時，於 **Configure advanced options** (設定進階選項) 頁面的 **Additional settings** (其他設定) 中，選取 **Enable default instance warmup** (啟用預設執行個體暖機期) 選項。選擇應用程式所需的暖機時間。

------
#### [ AWS CLI ]

**為新群組啟用預設執行個體暖機期 (AWS CLI)**  
要為 Auto Scaling 群組啟用預設執行個體暖機期，請新增 `--default-instance-warmup` 選項並指定一個值 (以秒為單位)，範圍從 0 到 3600。啟用後，`-1` 的值將關閉此設定。

以下 [create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html) 命令會建立一個名為 *my-asg* 的 Auto Scaling 群組，並啟用值為 *120* 秒的預設執行個體暖機期。

```
aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg --default-instance-warmup 120 ...
```

**提示**  
如果此命令擲回錯誤，請確定您已在 AWS CLI 本機將 更新為最新版本。

------

------
#### [ Console ]

**為現有群組啟用預設執行個體暖機期 (主控台)**

1. 前往網址 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台，然後從導覽窗格中選擇 **Auto Scaling 群組**。

1. 在螢幕上方的導覽列中，選擇您在建立 Auto Scaling 群組時所在的 AWS 區域 。

1. 選取 Auto Scaling 群組旁的核取方塊。

   頁面底部會開啟一個分割窗格。

1. 在 **Details** (詳細資訊) 索引標籤上，選擇 **Advanced configurations** (進階組態)、**Edit** (編輯)。

1. 針對**預設執行個體暖機**期，選擇應用程式所需的暖機期。

1. 選擇**更新**。

------
#### [ AWS CLI ]

**為現有群組啟用預設執行個體暖機期 (AWS CLI)**  
以下範例使用 [update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html) 命令名為 *my-asg* 的現有 Auto Scaling 群組啟用預設執行個體暖機期，且其值為 *120* 秒。

```
aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --default-instance-warmup 120
```

**提示**  
如果此命令擲回錯誤，請確定您已在 AWS CLI 本機將 更新為最新版本。

------

# 驗證群組的預設執行個體暖機期
<a name="verify-default-instance-warmup"></a>

使用以下程序，使用 驗證 Auto Scaling 群組的預設執行個體暖機期 AWS CLI。

**驗證 Auto Scaling 群組的預設執行個體暖機期**  
使用以下 [describe-auto-scaling-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html) 命令。將 *my-asg* 取代為您的 Auto Scaling 群組名稱。

```
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
```

以下是回應範例。

```
{
    "AutoScalingGroups": [
        {
            "AutoScalingGroupName": "my-asg",
            "AutoScalingGroupARN": "arn",
            ...
            "DefaultInstanceWarmup": 120
        }
    ]
}
```

# 尋找具有先前設定之執行個體暖機時間的擴展政策
<a name="find-policies-with-a-previously-set-instance-warmup"></a>

若要識別您的政策是否有自己的 暖機時間`EstimatedInstanceWarmup`，請使用 執行下列 [describe-policies](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-policies.html) 命令 AWS CLI。將 *my-asg* 取代為您的 Auto Scaling 群組名稱。

```
aws autoscaling describe-policies --auto-scaling-group-name my-asg
  --query 'ScalingPolicies[?EstimatedInstanceWarmup!=`null`]'
```

以下為範例輸出。

```
[
  {
    "AutoScalingGroupName":"my-asg",
    "PolicyName":"cpu50-target-tracking-scaling-policy",
    "PolicyARN":"arn",
    "PolicyType":"TargetTrackingScaling",
    "StepAdjustments":[],
    "EstimatedInstanceWarmup":120,
    "Alarms":[{
        "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e",
        "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e"
      },
      {
            "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2",
            "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2"
    }],
    "TargetTrackingConfiguration":{
      "PredefinedMetricSpecification":{
        "PredefinedMetricType":"ASGAverageCPUUtilization"
      },
      "TargetValue":50.0,
      "DisableScaleIn":false
    },
    "Enabled":true
  },
  
    ... additional policies ...
                        
]
```

# 清除先前為擴展政策設定的執行個體暖機期
<a name="clearing-the-previously-set-instance-warmup"></a>

啟用預設執行個體暖機後，請更新任何仍有自己的暖機時間的擴展政策，以清除先前設定的值。否則，它將覆寫預設的執行個體暖機期。

您可以使用 主控台 AWS CLI或 AWS SDKs更新擴展政策。本章節介紹使用主控台的步驟。如果您使用 AWS CLI AWS SDKs，請確定您保留現有的政策組態，但移除 `EstimatedInstanceWarmup` 屬性。當您更新現有的擴展政策時，政策將被您以程式設計方式呼叫 [PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_PutScalingPolicy.html) 時指定的內容取代。不會保留原始值。

**清除先前為擴展政策設定的執行個體暖機期 (主控台)**

1. 前往網址 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台，然後從導覽窗格中選擇 **Auto Scaling 群組**。

1. 選取 Auto Scaling 群組旁的核取方塊。

   頁面底部會開啟一個分割窗格。

1. 在**自動擴展**索引標籤的**動態擴展政策**中，選擇您感興趣的政策，然後選擇**動作**、**編輯**。

1. 對於**執行個體暖機**期，請清除執行個體暖機期值，以改用預設執行個體暖機期值。

1. 選擇**更新**。