linux tcp压测工具,02.监控和压测工具 - 2.4.压测工具 - 《Linux性能调优指南》 - 书栈网 · BookStack...
壓測工具其它有用工具
在這里,我們會討論主要的壓力測試工具,選擇合適的壓測工具,才能準確衡量系統性能。好的壓測工具有很多,可能的功能如下:
發起壓力
監控性能
監控系統使用率
生成報告
基準測試無非就是看系統能力是否達到對系統預期的能力。如果一款系統擁有較高的Linpack分數,但它未必是理想的文件服務器。需要記住的是,基準測試不可能模擬出終端用戶的行為,因為他們是不可預測的。基準測試不會告訴你,在用戶訪問他們文件的時候或者備份開始的時候,服務器會做什么反應。一般來說,基準測試應該遵循如下幾個原則:為服務器負載做基準測試:服務器系統和典型的PC完全不同。為了利用系統的SMP能力和模擬一個真實的多用戶環境,服務器測試使用多線程。PC打開一個網頁瀏覽器的速度可能比高端服務器更快,但是服務器打開1000個網頁瀏覽器的速度會比PC快很多。 模擬預期的負載:所有的基準測試都有不同的配置選項,我們應該朝著未來預期運行的負載方向定制測試。如果應用需要低延遲的磁盤,那么強大的CPU性能也沒什么大的用處。
隔離測試系統:如果要對系統進行基準測試,首先要把它盡可能的從其它負載中隔離。在系統上運行一個top命令也會極大的影響基準測試結果。
結果平均:即使你試著隔離測試系統,可能還會有未知的因素在壓測時影響系統性能。經驗表明,至少執行三次測試,然后將結果平均,以保證偶然因素不會影響全面分析。
下面是基于以上標準選擇的工具:在Linux上測試:Linux是基準測試的目標
能運行在所有的硬件平臺上測試:由于IBM提供3種不同的硬件平臺(把IBM System p和IBM System i看做都是基于IBM POER架構),所以選擇不用做太多修改就能在所有架構上使用的工具很重要。
開源:Linux運行在很多平臺上,如果需要到處運行,就可能需要源代碼。
文檔全面:必須了解你用來做性能測試的工具,所以你需要文檔。在使用某工具之前,先了解它的理念、設計和細節,以確定它是否真的合適。
維護中的:如果使用已經停止維護的軟件,可能無法跟上最新的技術和標準,導致錯誤的結果。
廣泛使用的:你很方便找到相關信息。
使用簡單的:簡單更好用。
能產生報告:具有報告功能能極大的減輕性能分析工作。
lmbenchLMbench是一套微測試工具,用來分析不同操作系統設置,比如SELinux是否啟用。LMbench可以用來測試操作系統的各個方面,如上下文切換、本地通信、內存帶寬、文件操作等。LMbench使用起來很簡單,僅有三個重要命令: + make results:第一次啟動LMbench時,它會提示一些操作系統的信息,還有要執行哪些測試。 + make return:在完成初始化配置和第一次運行LMbench之后,使用make return命令,重復make results時的配置進行測試。 + make see:在至少三次運行之后,可以使用make see命令查看結果。可以使用圖表的方式展示和分析。 LMbench項目地址是:http://sourceforge.net/projects/lmbench/
iozone
IOzone是一個文件系統測試工具,可以用它模擬各種磁盤訪問方式。由于IOzone的配置很詳細,所以可以用來精確的模擬目標文件系統的負載。IOzone可以使用不同的塊大小寫入各種大小的文件。
IOzone有一種非常好用的自動測試模式,方便測試者自定義各種測試行為,如文件大小、I/O大小和訪問方式等等。如果文件系統是為數據庫服務做準備的,應該重點測試大block size的大文件隨機訪問,而不是小block size的大文件。IOzone重要的選項如下:-b 讓IOzone以微軟Excel兼容格式保存成電子表格。
-C 顯示每個子進程的輸出(用來檢查是否每個子進程都在運行模擬程序)
-f 告訴IOzone寫入文件的地方
-i 使用這個選項指定要運行什么測試。使用-i 0 指定第一時間寫入到測試文件。使用-i 1是流式讀,-i 8是混合隨機訪問負載。
-h 顯示幫助
-r 指定測試類型和I/O大小。測試文件大小應該盡量和目標系統以后的工作負載相似,以便測試出真實的負載能力。
-k 使用內核2.6的異步I/O特性。經常用在數據庫服務器的測試,例如IBM的DB2。
-m 如果目標應用使用多個內部緩沖,那么可以使用-m選項模擬這個行為。
-s 指定測試文件的大小。對于異步文件系統(大多數文件系統的默認掛載選項),IOzone應該使用至少兩倍內存大小的測試文件才能真正衡量出磁盤性能。測試文件大小可以MB或者GB為單位,直接在大小后面跟上m或者g的單位即可。
-+u 實驗性的選項。可以衡量在測試期間處理器的使用率。注意:保存在異步文件系統,并且小于系統內存大小的測試文件,只能測試內存吞吐量,而不是磁盤子系統的性能。所以,你的目標文件系統應該使用sync選項掛載,并且測試文件是系統內存的至少兩倍。
如下的例子展示了使用IOzone來衡量掛載在/perf目錄上的磁盤子系統的隨機讀性能,測試文件大小為10GB,32KB的block size。./iozone-b results.xls-R-i0-i2-f/perf/iozone.file-r32-s10g
最后,可以把獲得的結果導入到電子表格中,并且轉換為圖形格式。使用圖形輸出數據可以更簡單的分析大文件數據并且看出趨勢。下圖就是上面的命令可能的一種輸出情況。
如果IOzone的文件大小和系統內存或者緩存一致,可以用來獲取緩存和內存的吞吐量。應該注意的是,由于文件系統開銷,IOzone只會獲得70-80%的系統能力。
netperf
nerperf是專注于TCP/IP網絡性能的測試工具。它支持UNIX的socket和SCTP測試。
netperf基于C/S(client-server)模型設計。netserver運行在目標服務器上,netperf運行在客戶機上。netperf控制netserver,netperf把配置數據發送到netserver,產生網絡流量,從一個獨立于測試連接的控制連接獲取netserver的結果。在測試過程中,在控制連接中沒有數據交流,所以不會對結果產生影響。netperf壓測工具也有提供報表的功能,包括CPU使用率。本書寫作期間,穩定版本是2.4.3(本書翻譯時候,netperf穩定版是2.6.0)。
netperf能生成多種類型的流量。基本分為兩種:大塊傳輸數據的流量和請求/響應的流量。netperf一次只使用一個socket。在下一版本的netperf(netperf4)中,將會全面支持并發會話。當前,我們可以使用如下辦法進行多會話的測試。大塊數據傳輸(Bulk data transfer)
大塊數據傳輸能力是網絡測試中最常用的指標,通過一秒鐘傳送的數據量來衡量。它可以模擬大文件傳輸,例如多媒體流和FTP的數據傳輸。請求/響應(Request/response type)
模擬請求/響應的流量,衡量指標是一秒鐘完成的請求響應次數。請求/響應是最常見的在線應用流量,例如web、數據庫、郵件服務、文件服務(中小文件),目錄服務。在真實的環境中,會話的建立終止和數據交換的方式是一樣的。為了模擬它,需要使用到TCP_CRR類型。并發會話(Concurrent session)
在當前的穩定版中,netperf還不真正支持并發會話測試,但是,我們可以以如下的方式開啟多個netperf實例:foriin‘seq110‘;donetperf-t TCP_CRR-H target.example.com-i10-P0;done
我們可以看看如下一些有用和有趣的選項,
全局選項:-A 設置本地接收和發送緩沖的調整
-b 爆發大量流測試包
-H 遠程機器
-t 測試流量類型TCP_STREAM 大量數據傳輸測試
TCP_MAERTS 和TCP_STREAM很像,只是流的方向相反
TCP_SENDFILE 和TCP_STREAM很像,只是使用sendfile(),而不是send()。會引發zero-copy操作
UDP_STREAM 和TCP_STREAM很像,只不過是UDP
TCP_RR 請求響應報文測試
TCP_CC TCP的連接/關閉測試。不產生請求和響應報文。
TCP_CRR 執行連接/請求/響應/關閉的操作。和禁用HTTP keepalive的HTTP1.0/1.1相似。
UDP_RR 和TCP_RR一樣,只不過是UDP。
-l 測試長度。如果是一個正值,netperf會執行testlen秒。如果值為負,netperf一直執行,直到大量數據傳輸測試中交換testlen字節,或者在請求/響應次數達到testlen。
-c 本地CPU使用率報告
-C 遠程服務器CPU使用率報告在某些平臺上,CPU使用率的報告可能不準確。在性能測試之前,請確保準確性。-I 這個選項是用來維護結果可信度的。可信級別應該設置為99%或者95% 。為了保證結果可信度級別,netperf會把多次重復測試。例如-I 99 5,代表在100次的99次中,測試結果和真實情況有5%(+-2.5%)的浮動區間。
-i 這個選項限制了最大和最小的重復次數。-i 10 3表示,netperf重復同樣的測試,最多10次,最少3次。如果重復次數超過最大值,結果就不在-I指定的可信任級別中,將在結果中顯示一個警告。
-s , -S 修改發送和接收的本地和遠程緩沖大小。這個會影響到窗口大小。
TCP_STREAM,TCP_MAERTS,TCP_SENDFILE,UDP_STREAM的選項-m , -M 指定傳給send()和recv()函數的緩沖大小。分別控制每個調用的發送和接收大小。
TCP_RR,TCP_CC,TCP_CRR,UDP_RR的選項:
-r ,-R 分別指定請求和響應的大小。例如-r 128,8129意思是netperf發送128字節包到netserver,然后它響應一個8129字節的包給netperf。
如下是netperf的一個TCP_CRR的測試
當執行性能測試的時候,最好的做法是使用netperf的簡單測試腳本。通過修改腳本的變量,你可以定制自己的測試。腳本的路徑在你的netperf包的doc/example/目錄下。
其它有用工具
這里還有其它一些有用的測試工具。記住,你必須了解壓測工具的特性,然后才能選擇你需要的工具。工具主要功能NetBench文件服務器測試,運行在Windows上
ttcp簡單的網絡測試
ab (Apache Bench)簡單的web服務器測試,包含在Apache服務器中http://httpd.apache.org/
Apache Jmeter主要用來web服務器性能測試。也支持其它協議,例如SMTP,LDAP,JDBC等,有很好的報告功能http://jakarta.apache.org/jmeter/
fsstone,smtpstone
nhfsstone網絡文件系統測試,包含在nfs-utils包中
總結
以上是生活随笔為你收集整理的linux tcp压测工具,02.监控和压测工具 - 2.4.压测工具 - 《Linux性能调优指南》 - 书栈网 · BookStack...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3多进程写时拷贝_pytho
- 下一篇: 128位计算机 ps2,64位就最强?为