Linux系統壓力測試工具(命令列工具)

海布里Simple發表於2024-11-04

Linux的命令列壓力測試工具在做基準測試時很有用,透過基準測試對了解一個系統所能達到的最大效能指標,這些指標可以作為後續效能比較、最佳化評估的參考依據。

模擬CPU壓力:

可以使用stress命令使CPU處於高負載狀態。例如,透過stress -c 4命令(-c選項用於指定CPU核心數),會讓系統的4個CPU核心都處於高負載運算狀態。這對於測試CPU的效能極限以及系統在CPU高負載下的響應能力很有幫助。比如,在測試伺服器效能時,透過這種方式可以確定伺服器在高CPU負載下是否會出現卡頓或者崩潰的情況。

模擬CPU打滿:

#-v 顯示版本號
-v, --verbose be verbose
#-q 不顯示執行資訊
-q, --quiet be quiet
#-n 顯示已完成的指令情況
-n, --dry-run show what would have been done
#-t --timeout N 指定執行N秒後停止
#--backoff N 等待N微妙後開始執行
-t, --timeout N timeout after N seconds
--backoff N wait factor of N microseconds before
work starts
#-c 產生n個程序 每個程序都反覆不停的計算隨機數的
平方根
-c, --cpu N spawn N workers spinning on sqrt()
#-i 產生n個程序 每個程序反覆呼叫sync(),sync()用於
將記憶體上的內容寫到硬碟上

模擬io瓶頸:

fio是一個靈活且功能強大的 Linux I/O(輸入 / 輸出)效能測試工具。它可以對磁碟、固態硬碟(SSD)、網路儲存等各種儲存裝置進行多種型別的 I/O 操作測試,包括但不限於順序讀寫、隨機讀寫、混合讀寫等,並且能夠模擬不同的 I/O 負載場景。

隨機讀 #fio -name=randread -direct=1 -iodepth=64 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 - runtime=1000 -group_reporting -filename=/dev/sdb

隨機寫 #fio -name=randwrite -direct=1 -iodepth=64 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 - runtime=1000 -group_reporting -filename=/dev/sdb

順序讀 #fio -name=read -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=4k -size=1G -numjobs=1 - runtime=1000 -group_reporting -filename=/dev/sdb

順序寫 # fio -name=write -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=4k -size=1G

建立初始化fileio檔案:
# sysbench --test=fileio --file-num=16 --file-totalsize=2G prepare
接下來開始對這些檔案進行測試,使用16個執行緒隨機讀
進行測試結果如下:
# sysbench --test=fileio --file-total-size=2G --file-testmode=rndrd --max-time=180 --maxrequests=100000000 --num-threads=16 --init-rng=on --
file-num=16 --file-extra-flags=direct --file-fsync-freq=0 -
-file-block-size=16384 run
測試結束後,記得執行cleanup,以確保測試所產生的檔案都已刪除:
#sysbench --test=fileio --file-num=16 --file-totalsize=2G cleanup

模擬大流量:

iperf3是一個用於網路吞吐量測量的工具,可以測試 TCP、UDP 或 SCTP 的吞吐量。

客戶端
向目的地址10.20.81.33、5002號TCP埠,發一條
TCP流,列印間隔為2s,發包時間為1000s
#iperf3 -c 10.20.81.33 -p 5002 -i 2 -t 1000

服務端 
#iperf3 -s -p 5002 -i 2

模擬埠禁用:

檢視禁用列表
#iptables -L -n --line-number
禁用出口埠
#iptables -A OUTPUT -p tcp --sport 18004 -j DROP
禁用入口埠
#iptables -A INPUT -p tcp --dport 18004 -j DROP
刪除入口埠編號
#iptables -D INPUT 1
刪除出口埠編號
#iptables -D OUTPUT 1

Stress工具還提供了對記憶體,磁碟I/O做壓力測試的命令。

Stress-ng是stress的增強版。

Sysbench主要用於資料庫伺服器(如MySQL)的效能測試,但也可以用於測試系統的CPU、記憶體和磁碟I/O效能。

相關文章