A. 如何使用 JMeter 對 TCP 協議的服務進行負載測試
1.建立一種類型測試
這里只描述簡單的tcp測試建立步驟,因為目前支持的測試類型很多,無法一一陳述,功能細節部分可以參考JMeter文檔
1)創建測試線程組
2)根據需要設定線程組參數
3)建立TCP采樣
3)配置TCP采樣參數
基本上一個簡單的測試計劃就完成了,點擊運行采樣,就會將文本發送出去。
2.高級功能配置
1)配置結果查看監聽器
有時候需要查看線程組執行結果情況,這個可以通過設定采樣結果查看
針對上面配置的線程組應該執行6次,也就是發送6條消息,通過監控器可以看到的確有6個采樣結果,說明執行成功
2)配置變數
有時候需要在報文中加上一些變化的內容,可以通過在文本中增加變數設定來實現
如增加一個變數名 bank, 其值為 1111,在前面發送的報文中加上${bank}即可引用,如
執行之後就可以在監控器中看到報文中有1111了
3)配置TCP 二進制報文
大多數情況下,報文可能非純文本形式,常常都是不可讀的二進制,所以這種情況下需要配置二進制報文。當前JMeter支持HEX形式,也就是16進制的報文輸入配置
參考: https://wiki.apache.org/jmeter/UserManual/Reference/TcpSampler
當前支持三種格式 1.TCPClientImpl(默認) 2.BinaryTCPClientImpl 3.
使用二進制方式需要做如下幾件事:
a.把普通文本報文翻譯成HEX格式,可以找文本編輯器做這件事。比如notepad++,打開文本文件
Ctrl+A全選內容,paste到一個新文件,替換掉所有空格
如果報文還需要加上頭的話,需要額外計算一下。比如增加一個command id和報文長度。比如上文中文本長度在編輯器狀態欄上顯示155長,假定command id是1.
System.out.println("155 hex " + Integer.toHexString(155)); --- 9b
System.out.println("1 hex " + Integer.toHexString(1)); ---1
如果command id是4個位元組那麼16進制字元串就是 00 00 00 01
如果length也是4個位元組那麼16進制字元串就是 00 00 00 9b
去掉空格加入到前面報文中就拼成如下新報文
000000010000009b
再把新報文放入發送字元串輸入框中。
b.修改JMeter啟動配置,就是前文提到的指定BinaryTCPClientImpl適配
在jmeter.properties文件中找到如下部分,修改一下
#---------------------------------------------------------------------------
# TCP Sampler configuration
#---------------------------------------------------------------------------
# The default handler class
#tcp.handler=TCPClientImpl
tcp.handler=BinaryTCPClientImpl
重新執行TCP測試,可以看到伺服器端正常收到報文,如圖
jmeter測試TCP伺服器,使用TCP采樣器模擬發送TCP請求。
TCP采樣器:打開一個到指定伺服器的TCP / IP連接,然後發送指定文本並等待響應。
jmeter模擬發送TCP請求的方法:
1.新建線程組,然後在線程組中新建TCP采樣器
TCP采樣器中填寫伺服器地址、埠和「要發送的文本」,其它選項根據需要選填:
re_use connection表示重復發送連接請求
close connection 關閉連接
如果TCP請求需要用戶名/密碼,可以在登錄配置中填寫
2.新建「察看結果樹」監視器,查看發送的請求和響應的結果。如果需要發送16進制報文這個地方會失敗。
jmeter發送16進制TCP報文的方法:
很多TCP伺服器報文為16進制,並且多數不能轉換成文本發送,而jmeter默認發送文本。
jmeter.properties中修改tcp.handler=BinaryTCPClientImpl ,啟動jmeter重新發送,抓包查看既是16進制的tcp報文。
另一個方法:可以在工作台新建–非測試元件–Property Display,Property Display中修改jmeter.properties只對當前進程有效。
B. 多台伺服器負載均衡的壓力測試要怎麼做
負載均衡是演算法上的問題,按常規軟體測試的方式來。
如果負載沒問題,那理論上壓力測試只要測單個服務就行了。
C. 如何查看伺服器當前的負載信息
方法一:
通過top命令來查看伺服器負載
再對此linux伺服器性能分析之前,先了解下Linux系統Load average負載的知識,負載均值在 uptime 或者top 命令中可以看到,
方法二:輸入 iostat -x -k -t
說明:%util: 一秒中有百分之多少的時間用於 I/O 操作,或者說一秒中有多少時間 I/O 隊列是非空的。
即 delta(use)/s/1000 (因為use的單位為毫秒)
如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁碟可能存在瓶頸。
方法三:
如果玩游戲很卡,可以用hdparm –t /dev/磁碟名稱來測試磁碟性能是否達標,下圖是單個希捷1T的盤測試的結果
說明:sd表示硬碟是SATA,SCSI或者SAS,a表示串口的第一塊硬碟
D. 如何查看伺服器當前的負載信息
做壓力測試的時候想看看linux伺服器當前負載如何,性能怎樣,可以使用下面這些命令
uptime
顯示當前用戶數,以及最近1
分鍾內、5分鍾內、15
分鍾內系統的平均負載
cat
/proc/loadavg
用於顯示系統1秒鍾平均負載、5秒鍾平均負載、15秒鍾平均負載、總作業數、正在運行的作業總數
cat
/proc/stat
這個顯示的內容較多,具體的就不一一列舉了,需要的朋友可以自己查閱相關資料
E. 如何測試伺服器
伺服器測試方法
伺服器測試方法分為兩個大方面,性能測試與功能測試。
我們在性能測試方面採用了新的測試方法,主要分為文件測試、資料庫性能測試與
Web
性能測試三個
方面。其中,文件性能與資料庫性能採用美國
Quest
軟體公司的
Benchmark Factory
負載測試和容量規劃
軟體,
Web
性能測試則使用了
Spirent
公司提供的
Caw WebAvalanche
測試儀。
一、性能測試
1
、文件性能測試方法
Benchmark Factory
軟體能按照文件讀寫的關鍵指標定製事務。軟體最大支持
1000
個虛擬客戶。
本次測試環境包括
10
台配置為
PIII800/128MB
內存
/20G
硬碟以上的客戶端,它們用來模擬虛擬用戶。
控制台為配置是
PIII 850/128MB
內存
/40G
硬碟的
Acer
筆記本電腦。交換機為帶有兩個千兆
GBIC
介面、
24
個
10/100M
自適應埠的
Cisco 2950
,客戶端與控制台通過
100M
網卡連到交換機上,被測伺服器則通
過千兆光纖網卡與交換機相連接。
被測伺服器均安裝帶
SP4
的
Windows
2000
Advanced Server
操作系統,在所有三項性能測試中都統一
RAID
級別為
5
。
在具體測試方案設置上,測試軟體把決定文件讀寫操作的關鍵因素設定為:讀
/
寫、隨機
/
順序、操作
塊大小、對象大小四個。在本次測試中,考慮到我們設有單獨的資料庫及
Web
測試項目,所以在文件測試
中,我們把目標確定為測試伺服器基本的
I/O
性能,這主要由網路介面、系統帶寬、磁碟子系統等幾大部
分所決定。同時,從幾部分的作用看,以大操作塊讀寫大對象文件,小操作塊讀寫小對象文件,較能反映
伺服器最基本的
I/O
性能,即「大操作塊讀寫大文件」對系統帶寬、緩存的考察,以及「小操作塊讀寫小
文件」對磁碟子系統、網路介面的考察。最終我們確定的四個事務是:
大文件順序讀寫
(
操作塊
8KB
,對象文件
80% 500KB
、
20% 1MB)
大文件隨機讀寫
(
操作塊
8KB
,對象文件
80% 500KB
、
20% 1MB)
小文件隨機讀
(
操作塊
1KB
,對象文件
80% 1KB
、
10% 10KB
、
10% 50KB)
小文件順序寫
(
操作塊
1KB
,對象文件
80% 1KB
、
10% 10KB
、
10% 50KB)
每個事務的用戶數均以固定步長逐漸增加,
最大可增加到
1000
個虛擬用戶。
其中,
「大文件順序讀寫」
事務的用戶數按照
40
的步長從
1
可增加到
400
個
(
測試至強伺服器
)
或
200
個
(
測試
TUALATIN
伺服器
)
,其
他事務則將用戶數按照
100
的步長從
1
增加至
1000
。我們期望得到其在不同用戶數時被測伺服器的性能表
現。總體上其走勢及峰值反映了該伺服器的性能。每項事務均運行三次,每次之間被測伺服器進行重啟,
最終結果為三次平均值。
2
、資料庫性能測試方法
「乘機安全小貼士」安全出行要重視
資料庫性能測試同樣使用了
Benchmark Factory
軟體,測試環境如同文件性能測試。測試時,在被測
伺服器上安裝
SQL Server 2000
使用企業版。首先在被測伺服器上創建新的資料庫,通過使用
Benchmark
Factory
預定義的
Database Spec
項目向資料庫中創建表,裝載數據。在伺服器端創建以
CPU
計算為主的
存儲過程,通過
10
台客戶機模擬用戶、按照
40
個虛擬用戶的步長遞增到
400
個用戶,執行該存儲過程。
結果是以獲得的每秒事務數
(TPS)
衡量伺服器的資料庫事務處理能力。
整個測試分為三次,
每次之間重新啟
動被測伺服器,最終取三次平均值作為評價結果。
3
、
Web
性能測試方法
Web
性能測試工具是由
Spirent
公司提供的
Caw WebAvalanche
。
WebAvalanche
模擬實際的用戶發出
HTTP
請求,
並根據回應給出具體的詳細測試結果。
它有以下特點:
能夠模擬成百上千的客戶端對伺服器發
出請求
;
能夠模擬真實的網路應用情況,
比如網站在高峰期的訪問量應該是動態的維持,
有新客戶端的加入,
同時也有原客戶的離去,
訪問量不是固定不變的
;
可以產生
20000
個連接
/
秒請求量,
足以滿足測試的需要
;
測試項目豐富,有訪問請求的成功失敗數,有
URL
和頁面的響應時間,有網路流量數,還有
HTTP
和
TCP
協
議的具體情況。
測試時,被測伺服器與
WebAvalanche
上都裝有千兆光纖網卡,兩網卡通過光纖直接連接。監控端
(
配
置為
PIII 1GHz/128M
內存
/20G
硬碟
)
安裝了帶
SP4
的
Windows 2000 Server,
該監控端與
WebAvalanche
通
過交叉線直連。在監控端通過
Web
瀏覽器配置
WebAvalanche
,在被測伺服器安裝了
SQL Server 2000
企業
版,並用微軟的
IIS
建立了
Web
伺服器。
測試分為靜態性能與動態性能兩部分。主要是因為在實際的
Web
應用中,有的站點靜態內容居多,提
供的服務也絕大多數是靜態的,
因此,
他們就會特別的關心伺服器靜態性能
;
同樣,
有的站點提供的服務交
互性的內容居多,他們就會更關心伺服器的動態性能。
被測網站中頁面大小及靜態、動態頁面所佔比例均參照實際網站得出,整個網站靜態、動態頁面所佔
比例是
70%
和
30%
,使用的動態頁面類型為
ASP
。請求頁面樣本的文件大小分布比例與整個網站的相同。
靜態性能測試模擬發出的均是靜態頁面請求。在測試動態性能時,動態頁面的訪問請求占
20%
,其餘
80%
為靜態頁面請求。我們根據實際的
Web
伺服器一天中的運行情況建立了一個伺服器頁面請求模型,該
模型由
4
個階段組成,第一階段是預熱階段,
WebAvalanche
發出的請求量由
0
慢慢上升到
200;
第二階段
是逐步加壓階段,請求量逐步累加到最大值
8200;
第三階段是動態維持階段
;
第四階段是下降階段,請求量
由最大值迅速下降為
0
。其中,最大請求量略大於實際伺服器能夠提供的事務處理量。
被測伺服器的靜態與動態測試分別測試三遍,每遍之間被測伺服器和測試儀均重啟,結果取三次的平
均值。由此可見,此伺服器測試方法立志於最終結果的准確性。
二、功能測試
在功能測試方面,我們對被測伺服器的可擴展性、可用性以及可管理性進行了綜合評價,其中可擴展
性包括硬碟、
PCI
槽以及內存等的擴展能力,可用性包括對熱插拔、冗餘設備
(
如硬碟、電源、風扇、網卡
等
)
的支持,可管理性則指的是伺服器隨機所帶的管理軟體。
我們在對伺服器進行總體評價時,綜合了性能、功能和價格三方面因素,依據《網路世界》所做的用
戶調查結果,分別給予不同權重,性能占
50%
,功能占
40%
,而價格則占
10%
。在分析性能時,資料庫性能
占其中的
50%
,而文件性能占
30%
,
Web
性能占
20%
。
綜上所述,這種全新的伺服器測試方法更夠更准確更直接的對伺服器進行測試,而且數據更加精確。
希望能給又需要的讀者朋友帶來一定的幫助
。
謝謝採納。