如何對因資源過度使用而無法進行狀態檢查的 EC2 Linux 執行個體進行疑難排解?

2 分的閱讀內容
0

我的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體由於其資源的過度使用而無法檢查執行個體的狀態。

簡短描述

以下是運作狀態檢查可能會因為資源過度使用而失敗的三個最常見原因:

  • 執行個體的 CPU 使用率已接近 100%,且執行個體沒有足夠的運算容量供核心執行。
  • 根設備已滿 100%,並且阻止其他程序完成或開始。
  • 在執行個體上執行的程序會使用其所有記憶體阻止核心無法執行。

解決方法

停止並啟動執行個體

警告:

  • 執行個體停止時,儲存在執行個體儲存磁碟區中的資料會遺失。在停止執行個體之前,請務必先儲存資料備份。與 EBS 支援的磁碟區不同,執行個體儲存體磁碟區是暫時的,不支援資料持續性。如需詳細資訊,請參閱 停止執行個體時會發生何種情況
  • 執行個體上的停止和啟動作業會強制核心停止任何執行中的程序。這是將資源傳回作業系統的臨時解決方案。如果您沒有解決問題的根本原因,那麼過度使用仍然存在。
  • Amazon EC2 在啟動或開始時自動指派給執行個體的靜態公用 IPv4 地址,在停止和啟動後變更。若要保留在執行個體停止時不會變更的公用 IPv4 地址,請使用彈性 IP 地址

如需詳細資訊,請參閱停止並啟動執行個體

檢查 Amazon CloudWatch CPU 使用率指標

檢視執行個體的 CloudWatch 指標。如果 CPU 使用率等於或接近 100%,請使用下列選項進行疑難排解:

**注意:**如果您在執行 AWS CLI 命令時收到錯誤訊息,請確保您使用的是最新版本的 AWS CLI

檢查執行個體的系統日誌是否有錯誤

檢查系統日誌是否存在裝置上沒有剩餘空間記憶體不足錯誤。

裝置上沒有剩餘空間錯誤

如果執行個體的系統日誌中出現類似「OSError: [Error 28] 裝置上沒有剩餘空間 /var/lib/'」的錯誤,表示包含所列資料夾的檔案系統已滿。在此範例中,/var/lib 已滿。

您可以使用下列其中一種方法釋放檔案系統上的空間:

方法 1: 使用適用於 Linux 執行個體的 EC2 序列主控台

如果您已開啟適用於 Linux 執行個體的 EC2 序列主控台,則可以將其用於對受支援的 Nitro 型執行個體類型和裸機執行個體進行疑難排解。序列主控台可協助您針對啟動問題、網路組態和 SSH 組態問題進行疑難排解。序列主控台可連接至您的執行個體,無需正常運作中的網路連線。您可以使用 Amazon EC2 主控台或 AWS CLI 存取序列主控台。

如果您之前尚未使用過 EC2 序列主控台,請務必先檢閱先決條件設定存取權,然後再嘗試連線。如果您的執行個體無法連線,而且您並未設定序列主控台的存取權,請依照方法 2 中的指示操作: 使用救援執行個體。如需有關設定 EC2 序列主控台的資訊,請參閱設定 EC2 序列主控台的存取權

方法 2: 使用救援執行個體

**警告:**下列程序需要停止執行個體。執行個體停止時,儲存在執行個體儲存磁碟區中的資料會遺失。在停止執行個體之前,請務必先儲存資料備份。與 EBS 支援的磁碟區不同,執行個體儲存體磁碟區是暫時的,不支援資料持續性。如需詳細資訊,請參閱 停止執行個體時會發生何種情況

1.    在您的虛擬私有雲端 (VPC) 中啟動新的 EC2 執行個體。使用與受損執行個體相同的 Amazon Machine Image (AMI) 和可用區域。新的執行個體會變成您的救援執行個體。

或者,使用您可以存取的現有執行個體。現有執行個體必須使用相同的 AMI,並且位於與受損執行個體相同的可用區域

2.    停止受損的執行個體

3.    將 Amazon Elastic Block Store (Amazon EBS) 根磁碟區 (/dev/xvda/dev/sda1) 從受損的執行個體中分離。請記下根磁碟區的裝置名稱(/dev/xvda/dev/sda1)。

4.    將 EBS 磁碟區作為次要裝置 (/dev/sdf) 連接至救援執行個體。

5.    使用 SSH 連線至您的救援執行個體

6.    為附加至救援執行個體的新磁碟區建立一個掛載點目錄 (/rescue)

$ sudo mkdir /rescue

7.    將磁碟區掛載至您在步驟 6 中建立的目錄。

$ sudo mount /dev/xvdf1 /rescue

裝置 (/dev/xvdf1) 可能會以不同的裝置名稱連接至救援執行個體。使用 lsblk 命令以檢視可用的磁碟裝置及其掛載點,以判斷正確的裝置名稱。

**注意:**您可能會收到類似於下列內容的錯誤訊息:

「...錯誤的 fs 類型、錯誤的選項、/dev/nvme2n1 上的錯誤超級塊、缺少代碼頁或幫助程式或其他錯誤。」

上述錯誤是由於與 XFS 檔案系統的 UUID 衝突所致。如果您收到此錯誤訊息,請參閱為什麼我無法掛載 Amazon EBS 磁碟區?

8.    執行 du-h 命令以檢查哪些檔案佔用最多空間。

du -shcm /rescue/var/lib/* |sort -n

9.    視需要刪除檔案以釋放額外空間。

10.    執行 unmount 命令,從救援執行個體卸載次要裝置。

$ sudo umount /rescue

如果卸載作業不成功,您可能必須停止或重新啟動救援執行個體,以啟用全新卸載。

11.    將輔助磁碟區 (/dev/sdf) 與救援執行個體分離。然後,將其作為 /dev/xvda(根磁碟區)附加至原始執行個體。

12.    啟動執行個體然後確認執行個體是否有回應。

您可以使用下列步驟調整根 EBS 磁碟區的大小:

1.    请求修改 EBS 磁碟區大小

2.    使用救援執行個體調整磁碟區大小後,延伸 Linux 檔案系統

記憶體不足錯誤

如果執行個體的系統日誌中出現「記憶體不足:終止程序」錯誤訊息,表示執行個體的記憶體已耗盡。當記憶體用盡時,核心沒有足夠的記憶體來運行,並且其他程序將終止以釋放記憶體。

如需如何解決 記憶體不足 (OOM) 問題的詳細資訊,請參閱 記憶體不足:終止程序

若要檢查記憶體錯誤日誌 (記憶體不足),請依照**方法 2 中的步驟執行。 **透過步驟 7 掛載磁碟區,使用救援執行個體。

然後,根據您的 Linux 發行版本,使用下列命令搜尋日誌中是否有記憶體不足警示:

Amazon Linux 1 和 Amazon Linux 2

sudo grep -i -r 'out of memory' /var/log/

Amazon Linux 2023

$ sudo journalctl -p err | grep -i "out of memory"

-或-

$ sudo dmesg | grep -i "out of memory"

如需如何解決 記憶體不足 (OOM) 問題的詳細資訊,請參閱 記憶體不足:終止程序

頁面配置失敗

當核心記憶體配置器無法配置請求時,就會發生頁面配置失敗。發生這種情況時,頁面配置失敗訊息會新增到系統日誌中。

若要疑難排解並解決此記憶體不足問題,請考慮將執行個體升級為較大的執行個體類型。或者,對於使用臨時執行個體儲存體磁碟區的執行個體,請將交換儲存體新增至執行個體以減輕記憶體壓力。

如需有關設定交換空間的詳細資訊,請參閱下列內容:

**注意:**RAM 容量已滿時,執行個體會使用交換空間。交換空間可用於具有少量 RAM 的執行個體,但不能取代更多 RAM。由於交換空間位於執行個體的硬碟上,因此效能比實際 RAM 更低。如需更多或更快的記憶體,請考慮增加執行個體大小。

如需有關頁面配置失敗的詳細資訊,請參閱 Red Hat 網站上的什麼是頁面配置失敗

相關資訊

為什麼我的 EC2 Linux 執行個體無法連線且無法進行狀態檢查?

在變更 EC2 Linux 執行個體的類型之前,我需要採取哪些步驟?

如何診斷 EC2 Windows 執行個體的高 CPU 使用率?

AWS 官方
AWS 官方已更新 10 個月前