Jmeter 分佈式壓力測試 Nginx 性能(圖文小教程)

Apache JMeter 是一款純 java 的壓力測試工具, 它最初設計用於測試 Web 應用程序,但已經擴展到其他測試功能。項目地址 https://jmeter.apache.org/。

本次使用此分佈式壓力測試工具測試 nginx 的併發性能。 分佈式測試原理如下圖:

Jmeter 分佈式壓力測試 Nginx 性能(圖文小教程)

各個節點角色分類

  • Master 控制節點
  • Slave 發起請求的節點
  • Target 需要測試的目標節點

本次測試使用 11 臺服務器,各個節點信息和角色分類如下:

Jmeter 分佈式壓力測試 Nginx 性能(圖文小教程)

一、軟件部署和配置

1、master 和 slave 節點安裝 java1.8 環境,步驟略。

2、master 和 slave 節點下載最新版 jmeter3.3 並配置。

  • 下載地址: http://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-3.3.tgz

1)Master 配置

解壓下載的軟件包,修改配置文件「apache-jmeter-3.3\bin\jmeter.properties」中內容將 「remote_hosts=127.0.0.1 」更改為

remote_hosts=223.111.185.98,223.111.185.99,223.111.185.100,223.111.185.101,223.11 1.185.102,223.111.185.103,223.111.185.104,223.111.185.105,223.111.185.106

2)Master 啟動

點擊「apache-jmeter-3.3\bin\ ApacheJMeter.jar」 運行軟件 

3)Master 測試計劃配置

添加線程組:

Jmeter 分佈式壓力測試 Nginx 性能(圖文小教程)

配置參數如下三個參數:

Jmeter 分佈式壓力測試 Nginx 性能(圖文小教程)

添加 http 的 sample

Jmeter 分佈式壓力測試 Nginx 性能(圖文小教程)

配置如下三個參數

Jmeter 分佈式壓力測試 Nginx 性能(圖文小教程)

然後點擊保存測試計劃

Jmeter 分佈式壓力測試 Nginx 性能(圖文小教程)

4)Slave 配置:

1、本次軟件下載並解壓在/usr/local/src/apache-jmeter-3.3/目錄 
2、更改 hosts: echo "`ifconfig p2p1 |grep 'inet addr' |cut -d: -f2 |cut -d" " -f1` `hostname`" >>/etc/hosts 
3、更改 jvm 內存設置: sed -i "s/-Xms512m -Xmx512m/-Xms30720m -Xmx51200m/g" /usr/local/src/apachejmeter-3.3/bin/jmeter salve 
4、啟動: /usr/local/src/apache-jmeter-3.3/bin/jmeter-server &

3、Target 配置:

本次只是測試 nginx 的併發數,故斷言在外部實現。在外部監測點執行「curl -I http://223.111.185.107/yundun_monitor_node」無返回則判斷 ngixn 無法服務。由於壓測可能導致 target 無法登陸,故提前設置腳本記錄實時連接數到日誌 文件。當外部無法訪問節點時記錄時間並和 Target 上的時間點的連接數對比。

Target 配置記錄連接數: screen -R ss for ((a=1;a<=10000;a++)); do echo $a `date`; sleep 1; ss -s >>/root/ss.log; done 
ctrl+a +d 退出 screen 後臺執行。

4、外部測試 Target 可用性配置

外部一臺服務器執行 for ((a=1;a<=1000;a++)); do echo $a `date`; sleep 1; curl -I http://223.111.185.107/yundun_monitor_node; done 

二、Master 發起壓測

Jmeter 分佈式壓力測試 Nginx 性能(圖文小教程)

三、分析測試結果

一般幾分鐘內 Target 節點將無法訪問。此時查看外部檢測節點訪問情況。出現無法訪問的時候記錄時間。

Jmeter 分佈式壓力測試 Nginx 性能(圖文小教程)

由於併發很大可能無法在 slave 上停掉測試。需要殺掉 slave 節點上的 jmeter-server 進程來停掉壓測。

執行:killall -9 jmeter-server 
killall -9 java 

等待 target 節點恢復登錄 target 查看併發記錄日誌文件在對應時間點的連接

Jmeter 分佈式壓力測試 Nginx 性能(圖文小教程)

測試結果:本次測試 estab 連接為 108155 的時候,在外部無法訪問 nginx 頁面。

一提到 IT 運維,腦海中浮現的都是:背鍋、填坑、救火、7*24小時待命…

如果可以:我們也想每天不加班、一覺到天亮、追網遊、陪女友…

這個真的可以有!

推薦一個運維監控神器——王教授。多來源各式監控匯聚一圖展示,資源使用異常、可見風險告警通知到個人。幫助提前發現系統各類問題,減小了運維事故的發生。

用王教授!晚上不“肝”白天干!

綁定雲賬號AcessKey隨時查看到賬戶下所有資產狀況,獲取及時的雲資源變化情況、問題提醒。

Jmeter 分佈式壓力測試 Nginx 性能(圖文小教程)

雲數據庫存在慢查詢

神仙運維生活,一招即獲~有需要的運維同學歡迎點擊文末王教授二維碼查看詳情!

網站崩潰找不到原因?平臺搭建無從下手?熱門技術不想落伍?想要變強找不到資料?

加入[IT拯救聯盟],讓大牛和同伴拯救你,帶你裝x帶你飛。定期乾貨分享、大牛專業解答、實用IT工具優選.....

私信小編“聯盟”,即可加入我們~


分享到:


相關文章: