Linux系統(tǒng)這些壓測(cè)工具,你用過嗎?
作為一名運(yùn)維人員,你是否遇到過這種場(chǎng)景?需要用工具測(cè)試系統(tǒng)cpu或內(nèi)存占用高來觸發(fā)告警,或者通過壓測(cè)測(cè)試服務(wù)的并發(fā)能力。作為運(yùn)維工程師,也可以通過這些命令復(fù)現(xiàn)故障場(chǎng)景。那么通過本文可以讓你掌握常用的測(cè)試命令和工具。
一、前言
部分場(chǎng)景下,定位和復(fù)現(xiàn)項(xiàng)目問題需要使用工具進(jìn)行系統(tǒng)壓測(cè),模擬和還原故障現(xiàn)場(chǎng)。那么測(cè)試或者壓測(cè)工具就派上用場(chǎng)了,下面我們分不同場(chǎng)景來模擬工具的使用
二、測(cè)試工具
2.1 網(wǎng)絡(luò)限速工具tc
tc 是 Linux 中用于配置網(wǎng)絡(luò)參數(shù)的命令行工具,通過它可以模擬不同網(wǎng)絡(luò)狀況,實(shí)現(xiàn)網(wǎng)絡(luò)限速的效果。
使用場(chǎng)景:網(wǎng)絡(luò)限速工具常用于模擬弱網(wǎng)絡(luò)環(huán)境,測(cè)試系統(tǒng)在低帶寬或高延遲情況下的性能。
用法舉例
# 設(shè)置延時(shí)30ms
sudo tc qdisc add dev eth0 root netem delay 30ms
# 范圍內(nèi)延時(shí)(10-50ms)
sudo tc qdisc add dev eth0 root netem delay 30ms 20ms
#設(shè)置丟包10%
sudo tc qdisc add dev eth0 root netem loss 10%
#刪除丟包設(shè)置
sudo tc qdisc del dev eth0 root netem loss 10%
# 顯示延時(shí)的設(shè)置 :
sudo tc qdisc show
sudo tc qdisc show dev eth0
# 修改延時(shí):
sudo tc qdisc change dev eth0 root netem delay 40ms
#隨機(jī)產(chǎn)生1%的重復(fù)數(shù)據(jù)包
sudo tc qdisc add dev eth0 root netem duplicate 1%
#設(shè)置數(shù)據(jù)包亂序
sudo tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%
# 刪除延時(shí)
sudo tc qdisc del dev eth0 root netem delay 40ms
實(shí)測(cè)效果,我們?cè)O(shè)置主機(jī)丟包延遲40ms,修改前延遲如下
設(shè)置延遲40ms
[root@knode1 ~]# sudo tc qdisc add dev ens33 root netem delay 40ms
[root@knode1 ~]# sudo tc qdisc show dev ens33
qdisc netem 8002: root refcnt 2 limit 1000 delay 40.0ms
再次ping測(cè)試,效果還是很明顯的,確實(shí)很好用,更多用法,小伙伴們自己去研究吧
2.2 CPU 內(nèi)存測(cè)試工具 - stress
stress 是一個(gè) Linux 下的壓力測(cè)試工具,可以模擬 CPU 和內(nèi)存的高負(fù)載情況,用于測(cè)試系統(tǒng)的穩(wěn)定性。
使用場(chǎng)景:CPU/內(nèi)存/磁盤測(cè)試工具常用于評(píng)估系統(tǒng)在高負(fù)載條件下的穩(wěn)定性,檢測(cè)系統(tǒng)的性能極限。此外,也可以測(cè)試告警的時(shí)候,使用stress工具來壓測(cè)
工具安裝
sudo apt-get install stress #ubuntu系統(tǒng)
yum install stress #Centos系統(tǒng)
然后進(jìn)行 CPU 和內(nèi)存的測(cè)試:
測(cè)試 CPU,持續(xù)運(yùn)行 4 個(gè)進(jìn)程
# stress --io 2 --cpu 4 --vm 2 --vm-bytes 80M --timeout 1440m
--cpu N:
生成 N 個(gè)工作進(jìn)程來施加 CPU 負(fù)載。
# stress --cpu 8 會(huì)創(chuàng)建 8 個(gè)進(jìn)程,每個(gè)都嘗試占用 100% 的 CPU 時(shí)間。
--io N:
生成 N 個(gè)工作進(jìn)程來執(zhí)行 I/O 操作,增加 I/O 負(fù)載。
# stress --io 4 會(huì)創(chuàng)建 4 個(gè) I/O 生成進(jìn)程。
--vm N:
# 生成 N 個(gè)工作進(jìn)程來分配內(nèi)存并定期寫入隨機(jī)數(shù)據(jù)。
每個(gè)進(jìn)程默認(rèn)分配 256MB 內(nèi)存。
--vm-bytes B:
#指定每個(gè) --vm 工作進(jìn)程分配的內(nèi)存量。
stress --vm 2 --vm-bytes 128M 會(huì)生成 2 個(gè)工作進(jìn)程,每個(gè)分配 128MB 內(nèi)存。
--hdd N:
# 生成 N 個(gè)工作進(jìn)程來執(zhí)行磁盤 I/O 操作。
stress --hdd 2 會(huì)創(chuàng)建 2 個(gè)磁盤 I/O 生成進(jìn)程。
--hdd-bytes B:
# 指定每個(gè) --hdd 工作進(jìn)程寫入磁盤的數(shù)據(jù)量。
stress --hdd 1 --hdd-bytes 1G 會(huì)創(chuàng)建一個(gè)工作進(jìn)程來寫入 1GB 的數(shù)據(jù)。
--timeout T:
# 指定 stress 運(yùn)行的時(shí)間,T 是時(shí)間,可以是秒(默認(rèn))、分鐘(加 m)、小時(shí)(加 h)。
stress --cpu 4 --timeout 30s 會(huì)在 30 秒后停止 CPU 負(fù)載測(cè)試
# 顯示詳細(xì)信息,包括生成的工作進(jìn)程的狀態(tài)。
--verbose:
實(shí)驗(yàn):壓測(cè)4個(gè)cpu,持續(xù)時(shí)間180s
stress --cpu 4 --timeout 180s
測(cè)試內(nèi)存,分配 1GB 內(nèi)存
stress --vm 2 --vm-bytes 20G --timeout 360s
--vm 2: 表示啟動(dòng)2個(gè)虛擬內(nèi)存壓力工作線程。
--vm-bytes 20G: 每個(gè)工作線程使用的虛擬內(nèi)存大小為20GB。
--timeout 360s: 設(shè)置壓力測(cè)試持續(xù)時(shí)間為360秒(6分鐘)
2.3 磁盤測(cè)速工具dd
dd 是一個(gè) Linux 下的命令行工具,用于復(fù)制文件并對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換。通過它,我們可以測(cè)試硬盤的讀寫速度。
使用場(chǎng)景:硬盤測(cè)速工具常用于評(píng)估磁盤性能,選擇最適合的存儲(chǔ)方案,并檢測(cè)磁盤是否存在性能瓶頸。
要測(cè)試讀取速度和寫入速度,可以使用dd命令的不同參數(shù)。例如,要測(cè)試讀取速度,可以使用if參數(shù)從文件讀取數(shù)據(jù),而要測(cè)試寫入速度,可以使用of參數(shù)將數(shù)據(jù)寫入文件。
測(cè)試寫入速度:
dd if=/dev/zero of=/data/test bs=4k count=100k
這會(huì)將零數(shù)據(jù)寫入/data/test文件中,測(cè)試寫入速度
dd if=/data/test of=/dev/null bs=4k
這會(huì)從/data/test文件中讀取數(shù)據(jù)并將其丟棄,從而測(cè)試讀取速度。
注:也可以使用fio來測(cè)磁盤速度
2.4. 流量訪問壓測(cè)工具 - ab
ab 是 Apache 自帶的一個(gè)小型工具,用于測(cè)試 HTTP 服務(wù)器的性能。
使用場(chǎng)景:流量訪問壓測(cè)工具常用于評(píng)估 Web 服務(wù)器的性能,檢測(cè)系統(tǒng)在并發(fā)訪問下的表現(xiàn)。
ab工具安裝
sudo apt-get install apache2-utils #ubuntu系統(tǒng)
sudo yum install httpd-tools #Centos系統(tǒng)
測(cè)試網(wǎng)站的并發(fā)連接數(shù)
ab -c 10 -n 100 https://example.com/
這將創(chuàng)建10個(gè)并發(fā)連接,每個(gè)連接執(zhí)行100個(gè)請(qǐng)求。
測(cè)試網(wǎng)站的請(qǐng)求速度
ab -n 1000 -c 100 https://example.com/
這將創(chuàng)建100個(gè)并發(fā)連接,總共執(zhí)行1000個(gè)請(qǐng)求`.這時(shí)可以通過監(jiān)控觀察cpu和內(nèi)存,用來初步評(píng)估平臺(tái)的并發(fā)承載能力。