一、stress 工具介紹
tress 是一種工具,可以對符合 POSIX 標準的操作系統施加可配置數量的 CPU、內存、I/O 或磁盤壓力,并報告其檢測到的任何錯誤。
stress 不是一個基準測試。它是由系統管理員用來評估其系統擴展性的工具,由內核程序員用來評估感知性能特征,以及由系統程序員用來暴露只有在系統負載高時才會出現或更頻繁出現的錯誤類別。
二、安裝stress
stress項目 git地址:https://github.com/resurrecting-open-source-projects/stress.git
在ubuntu22.04上安裝stress
stress目前沒有提供安裝包,需要下載源碼編譯安裝
-
下載編譯環境
root@stress:~# apt-get install gcc g++ make
-
將stress源碼克隆下來
github項目拉取不下來可以考慮使用gitee倉庫地址:https://gitee.com/cyhjf/stress.git
root@stress:~# git clone https://gitee.com/cyhjf/stress.git
-
編譯安裝
root@stress:~# cd stress/ root@stress:~/stress# ./autogen.sh ./autogen.sh: 51: autoreconf: not found We have a problem...
缺少autoreconf命令,下載后繼續編譯
autoreconf 是一個用于重新配置源代碼樹的工具,主要用于基于 autotools(autoconf、automake
等)構建系統的項目。它會自動運行 autoconf、automake、aclocal 等命令,重新生成 configure
腳本和相關的構建文件,確保項目的構建系統是完整和正確的。這在項目源代碼有更新后,需要重新生成構建配置文件時非常有用。root@stress:~/stress# apt -y install autoconf root@stress:~/stress# ./autogen.sh root@stress:~/stress# ./configure root@stress:~/stress# make && make install root@stress:~/stress# stress --version stress 1.0.7
三、壓力測試
stress不提供測試報告,只是壓測工具,讓服務器處理高壓狀態暴露出可能出現的錯誤。
stress參數介紹
OPTIONS-?, --help顯示此幫助說明。--version顯示版本聲明。-v, --verbose詳細展示-q, --quiet安靜模式-n, --dry-run查看執行效果,并非已經執行-t, --timeout <N>超時時間--backoff <N>在開始工作前先等待微秒級的時間。-c, --cpu <N>啟動 N 個線程,這些線程會持續執行 sqrt() 函數。-i, --io <N>啟動 N 個工作進程,讓它們在“sync()”函數上進行運行。-m, --vm <N>啟動若干個工作進程,它們會持續執行內存分配(malloc)和釋放(free)操作。--vm-bytes <B>每個虛擬機工作進程分配字節內存(默認值為 256MB)。--vm-stride <B>每個字節操作一次(默認值為 4096)--vm-hang <N>在釋放資源前先睡眠 N 秒(默認情況為無延遲,即 0 秒)。--vm-keep重新使用已損壞的內存,而非進行釋放和重新分配操作。-d, --hdd <N>啟動若干個工作進程,它們將執行寫入/刪除操作。--hdd-bytes <B>每個 HDD 工作進程寫入 B 字節的數據(默認值為 1GB)。該文件將在當前目錄中通過 mkstemp() 函數創建。Note: 數字可能后綴有“s”(秒)、“m”(分鐘)、“h”(小時)、“d”(天)、“y”(年)(表示時間)或“B”(字節)、“K”(千字節)、
-
測試cpu負載
查看本機cpu核心數root@stress:~/stress# lscpu | grep "On-line" On-line CPU(s) list: 0,1
開啟8個線程,開另一個窗口執行
top -id 1
查看cpu負載情況默認每個進程都在執行數學運算(計算質數)通過這種方式來模擬 CPU 的高負載,用于測試 CPU 的性能以及在高負載情況下的穩定性等。
stress --cpu 8 --timeout 60s
-
測試磁盤 io
創建 4 個io進程,2個寫并刪除進程,指定每個進程寫入100MB 文件并刪除,開啟另一個窗口使用
vmstat -n 1
持續監控stress --io 4 --hdd 2 --hdd-bytes 100M --timeout 60s
-
測試內存
啟動2個進程它們會持續執行內存分配(malloc)和釋放(free)操作,每個進程分配1G,持續60s
stress --vm 2 --vm-bytes 1G --vm-keep -t 60s