作爲一名運維人員,你是否遇到過這種場景?需要用工具測試系統cpu或內存佔用高來觸發告警,或者通過壓測測試服務的併發能力。作爲運維工程師,也可以通過這些命令復現故障場景。那麼通過本文可以讓你掌握常用的測試命令和工具。
一、前言
在某些情況下,爲了定位和復現項目中的問題,必須使用工具進行系統性壓力測試,以模擬和還原故障場景。這時測試或壓測工具就變得尤爲重要。接下來,我們將根據不同的場景來探討這些工具的使用。
二、測試工具
2.1 網絡限速工具tc
tc是Linux中用於調整網絡參數的命令行工具,可用於模擬各種網絡條件,包括限制網絡帶寬和延遲等。主要應用場景是在測試過程中,模擬真實世界中可能出現的網絡環境,以評估系統在這些條件下的表現。網絡限速工具通常用於模擬不同網絡速度和穩定性,以便開發人員能夠更好地瞭解其應用程序在各種網絡環境下的行爲。通過調整tc命令的參數,可以模擬出低帶寬、高延遲、丟包等情況,從而幫助開發人員優化其應用程序,確保其在各種網絡條件
用法舉例
# 設置延時30mssudo tc qdisc add dev eth0 root netem delay 30ms# 範圍內延時(10-50ms)sudo tc qdisc add dev eth0 root netem delay 30ms 20ms #設置丟包10%sudo tc qdisc add dev eth0 root netem loss 10%#刪除丟包設置sudo tc qdisc del dev eth0 root netem loss 10%# 顯示延時的設置 :sudo tc qdisc showsudo tc qdisc show dev eth0# 修改延時:sudo tc qdisc change dev eth0 root netem delay 40ms#隨機產生1%的重複數據包sudo tc qdisc add dev eth0 root netem duplicate 1%#設置數據包亂序sudo tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%# 刪除延時sudo tc qdisc del dev eth0 root netem delay 40ms登錄後複製
實測效果,我們設置主機丟包延遲40ms,修改前延遲如下
設置延遲40ms
[root@knode1 ~]# sudo tc qdisc add dev ens33 root netem delay 40ms[root@knode1 ~]# sudo tc qdisc show dev ens33qdisc netem 8002: root refcnt 2 limit 1000 delay 40.0ms登錄後複製
再次ping測試,效果還是很明顯的,確實很好用,更多用法,小夥伴們自己去研究吧
2.2 CPU 內存測試工具 – stress
stress 是一個 Linux 下的壓力測試工具,可以模擬 CPU 和內存的高負載情況,用於測試系統的穩定性。
CPU/內存/磁盤測試工具通常用於評估系統在高負載條件下的穩定性,檢測系統的性能極限。此外,在進行告警測試時,使用stress工具可以模擬系統在壓力下的表現,幫助評估系統的可靠性和響應能力。通過這些工具,可以更全面地瞭解系統在不同負載情況下的表現,以便在必要時採取相應的優化措施,確保系統在實際運行中能夠穩定可靠。
工具安裝
sudo apt-get install stress #ubuntu系統yum install stress#Centos系統登錄後複製
然後進行 CPU 和內存的測試:
測試 CPU,持續運行 4 個進程
# stress --io 2 --cpu 4 --vm 2 --vm-bytes 80M --timeout 1440m--cpu N:生成 N 個工作進程來施加 CPU 負載。# stress --cpu 8 會創建 8 個進程,每個都嘗試佔用 100% 的 CPU 時間。--io N:生成 N 個工作進程來執行 I/O 操作,增加 I/O 負載。# stress --io 4 會創建 4 個 I/O 生成進程。--vm N:# 生成 N 個工作進程來分配內存並定期寫入隨機數據。每個進程默認分配 256MB 內存。--vm-bytes B:#指定每個 --vm 工作進程分配的內存量。stress --vm 2 --vm-bytes 128M 會生成 2 個工作進程,每個分配 128MB 內存。--hdd N:# 生成 N 個工作進程來執行磁盤 I/O 操作。stress --hdd 2 會創建 2 個磁盤 I/O 生成進程。--hdd-bytes B:# 指定每個 --hdd 工作進程寫入磁盤的數據量。stress --hdd 1 --hdd-bytes 1G 會創建一個工作進程來寫入 1GB 的數據。--timeout T:# 指定 stress 運行的時間,T 是時間,可以是秒(默認)、分鐘(加 m)、小時(加 h)。stress --cpu 4 --timeout 30s 會在 30 秒後停止 CPU 負載測試# 顯示詳細信息,包括生成的工作進程的狀態。--verbose:登錄後複製
實驗:壓測4個cpu,持續時間180s
stress --cpu 4 --timeout 180s登錄後複製
測試內存,分配 1GB 內存
stress --vm 2 --vm-bytes 20G --timeout 360s--vm 2: 表示啓動2個虛擬內存壓力工作線程。--vm-bytes 20G: 每個工作線程使用的虛擬內存大小爲20GB。--timeout 360s: 設置壓力測試持續時間爲360秒(6分鐘)登錄後複製
2.3 磁盤測速工具dd
dd 是一個 Linux 下的命令行工具,用於複製文件並對數據進行轉換。通過它,我們可以測試硬盤的讀寫速度。
使用場景:硬盤測速工具常用於評估磁盤性能,選擇最適合的存儲方案,並檢測磁盤是否存在性能瓶頸。
要測試讀取速度和寫入速度,可以使用dd命令的不同參數。例如,要測試讀取速度,可以使用if參數從文件讀取數據,而要測試寫入速度,可以使用of參數將數據寫入文件。
測試寫入速度:
dd if=/dev/zero of=/data/test bs=4k count=100k登錄後複製
這會將零數據寫入/data/test文件中,測試寫入速度
dd if=/data/test of=/dev/null bs=4k登錄後複製
這會從/data/test文件中讀取數據並將其丟棄,從而測試讀取速度。
注:也可以使用fio來測磁盤速度
2.4. 流量訪問壓測工具 – ab
ab 是 Apache 自帶的一個小型工具,用於測試 HTTP 服務器的性能。使用場景:流量訪問壓測工具常用於評估 Web 服務器的性能,檢測系統在併發訪問下的表現。
ab工具安裝
sudo apt-get install apache2-utils #ubuntu系統sudo yum install httpd-tools #Centos系統登錄後複製
測試網站的併發連接數
ab -c 10 -n 100 https://example.com/登錄後複製
這將創建10個併發連接,每個連接執行100個請求。
測試網站的請求速度
ab -n 1000 -c 100 https://example.com/登錄後複製
這將創建100個併發連接,總共執行1000個請求`.這時可以通過監控觀察cpu和內存,用來初步評估平臺的併發承載能力。
以上就是Linux系統這些壓測工具,你用過嗎?的詳細內容,更多請關注本站其它相關文章!