如何從命令列監控我的 Lightsail 資源使用情況?

上次更新日期︰2021 年 10 月 29 日

我在 Amazon Lightsail 託管的網站或應用程式關閉或執行速度非常緩慢。如何從命令列監控 Lightsail 資源使用情況,以便解決這些問題?

簡短描述

有幾個因素會影響 Lightsail 執行個體上執行的服務,包括高資源使用率。使用常用工具,您可以從命令列即時監控 Lightsail 執行個體上的 CPU、記憶體、磁碟 I/O 和網路使用情況等資源。

從命令列分析和監控 Lightsail 執行個體資源使用情況,可提供即時的系統洞察。這還可以提供哪些程序使用最多 CPU、記憶體、磁碟 I/O 或網路的精密檢視。

以下是您可以用於從命令列分析和監控 Lightsail 執行個體資源的資源:

  • atop 工具
  • htop 工具
  • iostat、vmstat 和 mpstat 命令

解決方案

atop 工具

atop 工具會報告所有程序的活動,即使這些程序已在指定間隔內完成。該工具會持續記錄所有相關系統資訊。由於該持續記錄,如果問題再次發生,您必須分析歷程資料。atop 工具包含在大多數 Linux 發行版的官方儲存庫中。執行下列命令來安裝 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_20210902" 是 2021 年 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/09/02 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︰該程序的良好值,這會影響其優先順序。
  • VIRT:程序正在使用多少虛擬記憶體。
  • RES:程序正在使用多少實體 RAM (以千位元組為單位)。
  • SHR:程序正在使用多少共享記憶體。
  • S:程序的目前狀態 (殭屍、睡眠、執行中、不間斷睡眠或追踪)。
  • CPU:程序使用的處理器時間百分比。
  • MEM:程序使用的實體 RAM 百分比。
  • TIME+:程序使用了多少處理器時間。
  • 命令:啟動程序的命令名稱。

iostat、vmstat 和 mpstat 命令

iostatvmstatmpstat 命令是系統管理系統服務包的一部分。使用下列命令在您的 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 命令會產生單一報告,其中包含開機時間以來所有邏輯處理器的效能統計資料。

$ 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︰標記為「良好」的使用者程序 CPU 使用率 (%)。
  • %sys︰在系統 (Linux 內核) 層級的 CPU 使用率 (%)。
  • %iowait︰磁碟讀取/寫入閒置等待的 CPU 使用率 (%)。
  • %irq:處理硬體中斷的 CPU 使用率 (%)。
  • %soft︰處理軟體中斷的 CPU 使用率 (%)。
  • %盗:被迫等待 Hypervisor 處理其他虛擬程序的 CPU 使用率 (%)。
  • %Guest:執行虛擬處理器花費的 CPU 使用率 (%)。
  • idle︰閒置時間的 CPU 使用率 (%) (沒有程序,並未等待磁碟讀取/寫入)。

使用上述命令列工具,您可以識別具有高資源使用率的程序。而且,您可以使用該資訊來選擇具有充足資源供工作負載使用的執行個體。


此文章是否有幫助?


您是否需要帳單或技術支援?