如何從命令列監控 Lightsail 資源使用量?
我在 Amazon Lightsail 中託管的網站或應用程式停機或執行速度非常慢。我想從命令列監控 Lightsail 資源使用量,以便我對這些問題進行疑難排解。
簡短說明
包括高資源使用量在內,有幾個因素會影響 Lightsail 執行個體上執行的服務。使用一般工具監控 Lightsail 執行個體上的 CPU、記憶體、磁碟 I/O 以及網路使用情況等資源。您可以從命令列即時執行此操作。這些工具可以精細檢視哪些程序的 CPU、記憶體、磁碟 I/O 或網路使用率最高。
您可以使用以下資源,從命令列分析和監控 Lightsail 執行個體資源:
- ATOP 工具
- HTOP 工具
- iostat、vmstat 和 mpstat 命令
解決方法
ATOP 工具
ATOP 工具會報告所有程序的活動,即使這些程序已在指定的時間間隔內執行完成。此工具會持續記錄所有相關系統資訊。由於持續記錄,如果問題重複發生,您會有可供分析的歷史資料。大多數 Linux 發行版的官方存儲庫中都包含 ATOP 工具。執行下列命令來安裝 ATOP 工具:
Red Hat 型系統
$ sudo yum install atop
Debian 型系統
$ sudo apt install atop
依預設,ATOP 工具會在 600 秒時間間隔內記錄所有活動。若要變更 ATOP 工具的組態以便在 60 秒時間間隔內記錄活動,請執行下列命令:
Red Hat 型系統
$sudo sed 's/600/60/' /etc/atop/atop.daily -i
Debian 型系統
$ sudo sed 's/600/60/' /etc/default/atop -i
執行命令後,ATOP 會在 60 秒時間間隔內記錄所有活動。資料儲存在 /var/log/atop 的日誌檔案中。這些檔案根據以下格式命名:atop_ccyymmdd。例如,atop_20230902 是 2023 年 9 月 2 日錄製的檔案。
若要存取此日誌檔案,請執行以下命令:atop -r atologfilepath。命令和日誌檔案會顯示在下列範例中:
atop -r /var/log/atop/atop_20210902 ATOP - ip-172-20-139-91 2021/09/02 17:03:44 ---------------- 3h33m7s elapsed PRC | sys 6.51s | user 7.85s | #proc 103 | #tslpi 81 | #tslpu 0 | #zombie 0 | #exit 0 | CPU | sys 0% | user 3% | irq 0% | idle 197% | wait 0% | ipc notavail | curscal ?% | cpu | sys 0% | user 1% | irq 0% | idle 98% | cpu000 w 0% | ipc notavail | curscal ?% | cpu | sys 0% | user 1% | irq 0% | idle 98% | cpu001 w 0% | ipc notavail | curscal ?% |
在此輸出範例中,第一個錄製的快照是在 2021 年 9 月 2 日 17:03:44。若要前往下一張快照,請按鍵盤上的 "t" 鍵。若要返回上一張快照,請按 "T" (大寫 "t" ) 鍵。
以下是您可以用來啟動 ATOP 的常用選項:
依記憶體排序
$ atop -m
依磁碟詳細資料排序
$ atop -d
依網路詳細資料排序
$ atop -n
HTOP 工具
HTOP 工具是用於 Linux 的互動式即時程序監控應用程式,可顯示您每個 CPU 或核心的使用情況。此工具還提供記憶體和交換使用情況的文字圖表。
若要安裝 HTOP,請執行下列命令:
Red Hat 型系統
$ sudo yum install htop
Debian 和 Ubuntu 型系統
$ sudo apt install htop
使用下列命令在您的系統上執行 HTOP:
$ htop
HTOP 工具會列出系統上目前正在執行的所有程序,包括每個程序的 CPU 和記憶體使用率多少。其中也包括用於啟動程序的命令。
以下是輸出內容中每一欄的定義:
- **PID:**程序的程序 ID 號碼。
- **BUSER:**程序擁有者。
- **PR:**程序的優先順序。數字越低,優先順序越高。
- **NI:**程序的 Nice 值,這會影響其優先順序。
- **VIRT:**程序使用多少虛擬記憶體。
- **RES:**程序使用多少實體 RAM,以 KB 計算。
- **SHR:**程序使用多少共用記憶體。
- **S:**程序的目前狀態。
- **CPU:**程序使用的處理器時間百分比。
- **MEM:**程序使用的實體 RAM 百分比。
- **TIME+:**程序使用的處理器時間。
- **COMMAND:**啟動程序的命令名稱。
iostat、vmstat 和 mpstat 命令
iostat、vmstat 和 mpstat 命令是 sysstat 套件的一部分。使用下列命令在 Lightsail 執行個體中安裝此工具集:
Red Hat 型系統,例如 Amazon Linux、CentOS 或 RHEL
$ sudo yum install sysstat
Debian 和 Ubuntu
$ sudo apt-get install sysstat
使用下列命令來啟動並啟用 sysstat 以進行連續資料收集:
$ sudo systemctl start sysstat
$ sudo systemctl enable sysstat
iostat 命令
iostat 命令會收集並顯示系統輸入和輸出儲存設備統計資料。此工具常用於追蹤儲存設備效能問題,包括裝置和磁碟。以下是常見的 iostat 選項:
- **iostat:**取得報告和統計資料。
- **iostat -x:**顯示更詳細的統計資料。
- **iostat -c:**僅顯示 CPU 統計資料。
- **iostat -d:**僅顯示裝置報告。
- **iostat -xd:**僅顯示裝置的擴充 I/O 統計資料。
以下是 iostat 命令輸出的範例:
$ iostat Linux 4.14.246-187.474.amzn2.x86_64 10/22/2021 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 5.34 0.00 1.36 1.06 1.67 90.58 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn xvda 41.64 1496.90 890.16 502148 298612
vmstat 命令
vmstat (虛擬記憶體統計資料) 命令會收集並顯示有關系統記憶體、程序、中斷、分頁和區塊 I/O 的資訊。**vmstat ** 命令可讓您指定取樣間隔,以近乎即時的方式觀察系統活動。以下是 vmstat 命令和輸出的範例:
$ vmstat 2 5 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 0 1409320 2088 485404 0 0 568 724 232 393 4 2 93 1 1 0 0 0 1409332 2088 485404 0 0 0 67 146 261 0 0 100 0 0 0 0 0 1408916 2088 485404 0 0 0 0 157 276 0 0 100 0 0 0 0 0 1408980 2088 485408 0 0 0 0 161 259 0 0 100 0 0 0 0 0 1408984 2088 485408 0 0 0 0 105 190 0 0 100 0 0
以下是您可以搭配 vmstat 命令一起使用的常用選項:
-a 選項會顯示系統的作用中和非作用中的記憶體:
$ vmstat -a procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free inact active si so bi bo in cs us sy id wa st 2 0 0 1402016 311232 218864 0 0 60 77 74 129 0 0 99 0 0
**-d ** 選項會報告磁碟統計資料:
$ vmstat -d disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec nvme0n1 7728 25 433681 4544 3133 93 555950 4196 0 1
mpstat 命令會收集並顯示系統中所有邏輯處理器的效能統計資料。如果您在沒有選項的情況下執行 mpstat 命令,則會產生單一報告,其中包含開機時以來所有邏輯處理器的效能統計資料。
$ mpstat Linux 4.18.0-305.el8.x86_64 (ip-xxx-xx-x-xx.ec2.internal) 10/27/2021 _x86_64_ (2 CPU) 04:23:26 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 04:23:26 PM all 8.42 0.13 2.43 1.49 0.18 0.05 0.22 0.00 0.00 87.08
上述範例的第一行是一組欄標籤。第二行是每列的值:
- **%usr:**使用者層級的 % CPU 使用量。
- **%nice:**標記為「nice」的使用者程序的 % CPU 使用量。
- **%sys:**系統 (Linux 核心) 層級的 % CPU 使用量。
- **%iowait:**等待讀取/寫入磁盤的閒置 % CPU 使用量。
- **%irq:**處理硬體中斷的 % CPU 使用量。
- **%soft:**處理軟體中斷的 % CPU 使用量。
- **%steal:**遭強制等待 Hypervisor 處理其他虛擬處理器的 % CPU 使用量。
- **%guest:**耗用在虛擬處理器上的 % CPU 使用量。
- **閒置:**閒置時間的 % CPU 使用量 (沒有程序,也不等待磁碟讀取/寫入)。
使用上述命令列工具,識別資源使用量高的程序。使用此資訊以選擇具有足夠資源供您工作負載的執行個體。
相關內容
- 已提問 8 個月前lg...
- 已提問 2 年前lg...
- 已提問 2 年前lg...
- 已提問 1 年前lg...
- AWS 官方已更新 8 個月前
- AWS 官方已更新 1 年前
- AWS 官方已更新 7 個月前
- AWS 官方已更新 2 年前