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效能。