溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux怎么進(jìn)行壓力測試

發(fā)布時間:2022-02-16 17:11:49 來源:億速云 閱讀:120 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“Linux怎么進(jìn)行壓力測試”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強(qiáng),希望這篇“Linux怎么進(jìn)行壓力測試”文章能幫助大家解決問題。

軟件壓力測試是一種基本的質(zhì)量保證行為,它是每個重要軟件測試工作的一部分。軟件壓力測試的基本思路很簡單: 不是在常規(guī)條件下運行手動或自動測試,而是在計算機(jī)數(shù)量較少或系統(tǒng)資源匱乏的條件下運行測試。 通常要進(jìn)行軟件壓力測試的資源包括內(nèi)部內(nèi)存、CPU 可用性、磁盤空間和網(wǎng)絡(luò)帶寬。

Linux怎么進(jìn)行壓力測試

自己動手做個循環(huán)

第一種技術(shù)是在命令行上運行一些循環(huán),觀察它們對系統(tǒng)的影響。這種方式可以大大增加 CPU 的負(fù)荷。使用 uptime 或類似的命令可以很容易地看到結(jié)果。

在下面的命令中,我們啟動了四個無盡循環(huán)。你可以通過添加數(shù)字或使用 bash 表達(dá)式,如 {1...6} 來代替 1 2 3 4 以增加循環(huán)次數(shù):

for i in 1 2 3 4; do while : ; do : ; done & done

在命令行上輸入后,將在后臺啟動四個無盡循環(huán):

$ for i in 1 2 3 4; do while : ; do : ; done & done[1] 205012
[2] 205013
[3] 205014
[4] 205015

在這種情況下,發(fā)起了作業(yè) 1-4,作業(yè)號和進(jìn)程號會相應(yīng)顯示出來。

要觀察對平均負(fù)載的影響,請使用如下所示的命令。在本例中,uptime 命令每 30 秒運行一次:

$ while true; do uptime; sleep 30; done

如果你打算定期運行這樣的測試,你可以將循環(huán)命令放入腳本 watch-it 中。

#!/bin/bashwhile truedouptime
sleep 30done

在輸出中,你可以看到平均負(fù)載是如何增加的,然后在循環(huán)結(jié)束后又開始下降。

11:25:34 up 5 days, 17:27,  2 users,  load average: 0.15, 0.14, 0.08
11:26:04 up 5 days, 17:27,  2 users,  load average: 0.09, 0.12, 0.08
11:26:34 up 5 days, 17:28,  2 users,  load average: 1.42, 0.43, 0.18
11:27:04 up 5 days, 17:28,  2 users,  load average: 2.50, 0.79, 0.31
11:27:34 up 5 days, 17:29,  2 users,  load average: 3.09, 1.10, 0.43
11:28:04 up 5 days, 17:29,  2 users,  load average: 3.45, 1.38, 0.54
11:28:34 up 5 days, 17:30,  2 users,  load average: 3.67, 1.63, 0.66
11:29:04 up 5 days, 17:30,  2 users,  load average: 3.80, 1.86, 0.76
11:29:34 up 5 days, 17:31,  2 users,  load average: 3.88, 2.06, 0.87
11:30:04 up 5 days, 17:31,  2 users,  load average: 3.93, 2.25, 0.97
11:30:34 up 5 days, 17:32,  2 users,  load average: 3.64, 2.35, 1.04

因為所顯示的負(fù)載分別代表了 1、5 和 15 分鐘的平均值,所以這些值需要一段時間才能恢復(fù)到系統(tǒng)接近正常的狀態(tài)。

要停止循環(huán),請發(fā)出像下面這樣的 kill 命令 —— 假設(shè)作業(yè)號是 1-4,就像本篇文章前面顯示的那樣。如果你不確定,可以使用 jobs 命令來確認(rèn)作業(yè)號。

$ kill %1 %2 %3 %4

增加壓力的專用工具

另一種方法是使用專門為你制造系統(tǒng)壓力的工具。其中一種叫做 stress(壓力),可以以多種方式對系統(tǒng)進(jìn)行壓力測試。stress 工具是一個工作負(fù)載生成器,提供 CPU、內(nèi)存和磁盤 I/O 壓力測試。

在使用 --cpu 選項時,stress 命令使用平方根函數(shù)強(qiáng)制 CPU 努力工作。指定的 CPU 數(shù)量越多,負(fù)載上升的速度就越快。

下面第二個腳本(watch-it-2)可以用來衡量對系統(tǒng)內(nèi)存使用的影響。請注意,它使用 free 命令來查看加壓的效果。

$ cat watch-it-2#!/bin/bashwhile truedofree
sleep 30done

發(fā)起任務(wù)并觀察壓力:

$ stress --cpu 2
$ ./watch-it
13:09:14 up 5 days, 19:10, 2 users, load average: 0.00, 0.00, 0.00
13:09:44 up 5 days, 19:11, 2 users, load average: 0.68, 0.16, 0.05
13:10:14 up 5 days, 19:11, 2 users, load average: 1.20, 0.34, 0.12
13:10:44 up 5 days, 19:12, 2 users, load average: 1.52, 0.50, 0.18
13:11:14 up 5 days, 19:12, 2 users, load average: 1.71, 0.64, 0.24
13:11:44 up 5 days, 19:13, 2 users, load average: 1.83, 0.77, 0.30

在命令行中指定的 CPU 越多,負(fù)載就增加的越快。

$ stress --cpu 4$ ./watch-it13:47:49 up 5 days, 19:49, 2 users, load average: 0.00, 0.00, 0.0013:48:19 up 5 days, 19:49, 2 users, load average: 1.58, 0.38, 0.1313:48:49 up 5 days, 19:50, 2 users, load average: 2.61, 0.75, 0.2613:49:19 up 5 days, 19:50, 2 users, load average: 3.16, 1.06, 0.3813:49:49 up 5 days, 19:51, 2 users, load average: 3.49, 1.34, 0.5013:50:19 up 5 days, 19:51, 2 users, load average: 3.69, 1.60, 0.61

stress 命令也可以通過 --io(輸入/輸出)和 --vm(內(nèi)存)選項增加 I/O 和內(nèi)存的負(fù)載來給系統(tǒng)施加壓力。

在接下來的這個例子中,運行這個增加內(nèi)存壓力的命令,然后啟動 watch-it-2 腳本。

$ stress --vm 2$ watch-it-2total used free shared buff/cache availableMem: 6087064 662160 2519164 8868 2905740 5117548Swap: 2097148 0 2097148total used free shared buff/cache availableMem: 6087064 803464 2377832 8864 2905768 4976248Swap: 2097148 0 2097148total used free shared buff/cache availableMem: 6087064 968512 2212772 8864 2905780 4811200Swap: 2097148 0 2097148

stress 的另一個選項是使用 --io 選項為系統(tǒng)添加輸入/輸出活動。在這種情況下,你可以使用這樣的命令:

$ stress --io 4

然后你可以使用 iotop 觀察受壓的 I/O。注意,運行 iotop 需要 root 權(quán)限。

之前:

$ sudo iotop -o
Total DISK READ: 0.00 B/s | Total DISK WRITE: 19.36 K/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 27.10 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
269308 be/4 root 0.00 B/s 0.00 B/s 0.00 % 1.24 % [kworker~fficient]
283 be/3 root 0.00 B/s 19.36 K/s 0.00 % 0.26 % [jbd2/sda1-8]

之后:

Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
270983 be/4 shs 0.00 B/s 0.00 B/s 0.00 % 51.45 % stress --io 4
270984 be/4 shs 0.00 B/s 0.00 B/s 0.00 % 51.36 % stress --io 4
270985 be/4 shs 0.00 B/s 0.00 B/s 0.00 % 50.95 % stress --io 4
270982 be/4 shs 0.00 B/s 0.00 B/s 0.00 % 50.80 % stress --io 4
269308 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.09 % [kworker~fficient]

stress 只是給系統(tǒng)增加壓力的若干工具之一。

關(guān)于“Linux怎么進(jìn)行壓力測試”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI