某個影片處理管線使用 Auto Scaling group 中的 EC2 執行個體來處理 SQS 佇列中的影片。每個影片大約需要 30 分鐘來處理。SQS 佇列有一個 redrive policy,會將訊息重新導向至 dead-letter queue,其中 maxReceiveCount 設定為 1。佇列的 visibility timeout 為 1 小時。當訊息抵達 dead-letter queue 時,CloudWatch 警報會通知團隊。每天會發生數次訊息出現在 DLQ 中,但影片卻未被處理的情況。應用程式日誌沒有顯示任何錯誤。哪項變更可以防止這個問題?
選擇一個答案
點擊一個選項來檢查您的答案。
正確答案: 在執行個體處理影片時,為其啟用 scale-in protection。.
為什麼這是答案
當 EC2 執行個體處理影片時,啟用 scale-in protection 可以防止 Auto Scaling 在處理完成前終止該執行個體。由於每個影片處理需 30 分鐘,而 SQS 訊息的 maxReceiveCount 為 1,如果執行個體在處理中被終止,訊息將在未處理的情況下直接進入 DLQ。啟用 scale-in protection 確保執行個體有足夠時間完成工作。 增加 visibility timeout 到 3 小時沒有幫助,因為問題不在於逾時,而在於執行個體被終止。啟用 termination protection 雖然能防止手動終止,但 Auto Scaling 仍可能終止執行個體以進行縮減。將 maxReceiveCount 設定為 0 會導致訊息立即進入 DLQ,這不是解決方案。
通過考試 — 無需無休止地尋找答案
集中一處獲取此考試的所有核實題目和解釋,節省數小時的準備時間。1,000 多種認證 · 20 多種語言 · 免費開始。
更快通過您的考試 → 無需信用卡