性能測試分析軟件彙總–開源、商業所有收集

本文共包含:商業性能測試、監控、分析工具和免費、開源性能測試監控分析工具;共涉及java、php、net等各類開發語言平臺,有系統性能分析、文件系統分析、微博、系統分析、數據性能分析等各類工具,能夠說本文包含了現有的全部的性能測試監控分析工具工具133種。php

 

Java程序性能分析工具 VisualVM

VisualVM是一個集成多個JDK命令行工具的可視化工具。能夠做爲Java應用程序性能分析和運行監控的工具。開發人員能夠利用它來監控、分析線程信息,瀏覽內存堆數據。系統管理員能夠利用它來監測、控制Java應用程序橫跨整個網絡的狀況。Java應用程序使用人員能夠利用它來建立包含全部必要信息的Bug 報告。html

壓力測試和評測工具 Siege

Siege是一個壓力測試和評測工具,設計用於WEB開發這評估應用在壓力下的承受能力:能夠根據配置對一個WEB站點進行多用戶的併發訪問,記錄每一個用戶全部請求過程的相應時間,並在必定數量的併發訪問下重複進行。前端

測試實例:java

Ben: $ siege -u shemp.whoohoo.com/Admin.jsp -d1 -r10 -c25
..Siege 2.65 2006/05/11 23:42:16
..Preparing 25 concurrent users for battle.
The server is now under siege...done
Transactions: 250 hits
Elapsed time: 14.67 secs
Data transferred: 448000 bytes
Response time: 0.43 secs
Transaction rate: 17.04 trans/sec
Throughput: 30538.51 bytes/sec
Concurrency: 7.38
Status code 200: 250
Successful transactions: 250
Failed transactions: 0

手機網站性能測試工具 Mobitest

Mobitest 是一個移動 App 用來在真實手機上測試手機 Web 網站性能。目前提供 android 和 ios 版本。python

獲取源碼的方式:http://code.google.com/p/mobitest-agent/source/checkoutmysql

壓力測試工具 Tsung

Tsung 是一個壓力測試工具,能夠測試包括HTTP, WebDAV, PostgreSQL, MySQL, LDAP, and XMPP/Jabber等服務器。針對 HTTP 測試,Tsung 支持 HTTP 1.0/1.1 ,包含一個代理模式的會話記錄、支持 GET、POST 和 PUT 以及 DELETE 方法,支持 Cookie 和基本的 WWW 認證,同時還支持 SSL。linux

Phoronix Test Suite

phoronix.com 是業內一個知名的網站,其常常發佈硬件性能測評以及 Linux 系統相關的性能測評, Phoronix Test Suite 爲該網站旗下的 linux 平臺測試套件 , Phoronix 測試套件遵循GNU GPLv3協議。phoronix.com 剛剛發佈了最新版的 Phoronix 測試套件——Phoronix Test Suite 0.7.0。Phoronix Test Suite 0.7.0 的發佈時間離上一個版發佈也就一個周左右的時間,然而新版本包含了多達40項的重大變化。android

Phoronix Test Suite 默認是經過命令行來的進行測試的,但也能夠調用GUI,Phoronix Test Suite 還提供了上傳測試結果的服務,也就說你能夠把你的測試結果上傳在網上,從而能夠和別的 Linux 用戶測出來的結果進行對比。ios

分佈式TCP壓力測試工具 tcpcopy

tcpcopy是一種應用請求複製(基於tcp的packets)工具,其應用領域較廣,咱們曾經應用於網易的廣告投放系統,urs系統,nginx hmux協議開發等系統,避免了上線帶來的不少問題。nginx

整體說來,tcpcopy主要有以下功能:

1)分佈式壓力測試工具,利用在線數據,能夠測試系統可以承受的壓力大小(遠比ab壓力測試工具真實地多),也能夠提早發現一些bug
2)對於後端的短鏈接,請求丟失率很是低(1/10萬),能夠應用於熱備份
3)普通上線測試,能夠發現新系統是否穩定,提早發現上線過程當中會出現的諸多問題,讓開發者有信心上線
4)對比試驗,一樣請求,針對不一樣或不一樣版本程序,能夠作性能對比等試驗
5)利用多種手段,構造無限在線壓力,知足中小網站壓力測試要求
6)實戰演習(架構師必備)

tcpcopy能夠用於實時和離線回放領域,而且tcpcopy支持mysql協議的複製,開源一年以來,功能上愈來愈完善。

若是你對上線沒有信心,若是你的單元測試不夠充分,若是你對新系統不夠有把握,若是你對將來的請求壓力沒法預測,tcpcopy能夠幫助你解決上述難題。

web性能測試工具 OpenSTA

OpenSTA是一個免費的、開放源代碼的web性能測試工具,能錄製功能很是強大的腳本過程,執行性能測試。例如虛擬多個不一樣的用戶同時登錄被測試網站。

OpenSTA 是專用於B/S結構的、免費的性能測試工具。它的優勢除了免費、源代碼開放的優勢外,還能對錄製的測試腳本進行,按指定的語法進行編輯。在錄製完測試腳本後,能夠對測試腳本進行編輯,以便進行特定的性能指標分析。其較爲豐富的圖形化測試結果大大提升了測試報告的可閱讀性。

OpenSTA 基於CORBA 的結構體系,它經過虛擬一個proxy,使用其專用的腳本控制語言,記錄經過proxy 的一切HTTP/S traffic。經過分析OpenSTA 的性能指標收集器收集的各項性能指標,以及HTTP 數據,對系統的性能進行分析。

優勢:壓力測試引擎具備可擴充性,能夠完成打規模的壓力測試。提供腳本語言支持。

memcached性能測試 twemperf

twemperf 是一個用來測試 memcached 服務器性能的工具。

測試實例:

$ mcperf --linger=0 --timeout=5 --conn-rate=1000 --call-rate=1000 --num-calls=10 --num-conns=1000 --sizes=u1,16

Total: connections 1000 requests 10000 responses 10000 test-duration 1.009 s

Connection rate: 991.1 conn/s (1.0 ms/conn <= 23 concurrent connections)
Connection time [ms]: avg 10.3 min 10.1 max 14.1 stddev 0.1
Connect time [ms]: avg 0.2 min 0.1 max 0.8 stddev 0.0

Request rate: 9910.5 req/s (0.1 ms/req)
Request size [B]: avg 35.9 min 28.0 max 44.0 stddev 4.8

Response rate: 9910.5 rsp/s (0.1 ms/rsp)
Response size [B]: avg 8.0 min 8.0 max 8.0 stddev 0.0
Response time [ms]: avg 0.2 min 0.1 max 13.4 stddev 0.00
Response time [ms]: p25 1.0 p50 1.0 p75 1.0
Response time [ms]: p95 1.0 p99 1.0 p999 1.0
Response type: stored 10000 not_stored 0 exists 0 not_found 0
Response type: num 0 deleted 0 end 0 value 0
Response type: error 0 client_error 0 server_error 0

Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0
Errors: fd-unavail 0 ftab-full 0 addrunavail 0 other 0

CPU time [s]: user 0.64 system 0.35 (user 63.6% system 35.1% total 98.7%)
Net I/O: bytes 428.7 KB rate 424.8 KB/s (3.5*10^6 bps)

Web性能測試工具 AutoBench

autobench 是一款基於httperf的Perl腳本。它會在一次測試中調用屢次httperf來對web服務器進行測試,每次會按照給定的參數增長併發鏈接數,將 httperf的測試結果保存爲CSV格式的文件,該文件能夠被Excel直接讀取,方便生成測試報告。藉助於autobench自帶的 bench2graph工具能夠生成漂亮的測試結果對比圖。

使用方法:

autobench --single_host --host1 www.test.com --uri1 /10K --quiet     \
          --low_rate 20 --high_rate 200 --rate_step 20 --num_call 10 \
          --num_conn 5000 --timeout 5 --file results.tsv

MySQL壓力測試工具 mysqlslap

mysqlslap是一個mysql官方提供的壓力測試工具。如下是比較重要的參數:
–defaults-file,配置文件存放位置
–concurrency,併發數
–engines,引擎
–iterations,迭代的實驗次數
–socket,socket文件位置

自動測試:
–auto-generate-sql,自動產生測試SQL
–auto-generate-sql-load-type,測試SQL的類型。類型有mixed,update,write,key,read。
–number-of-queries,執行的SQL總數量
–number-int-cols,表內int列的數量
–number-char-cols,表內char列的數量

例如:
shell>mysqlslap –defaults-file=/u01/mysql1/mysql/my.cnf –concurrency=50,100 –iterations=1 –number-int-cols=4 –auto-generate-sql –auto-generate-sql-load-type=write –engine=myisam –number-of-queries=200 -S/tmp/mysql1.sock
Benchmark
Running for engine myisam
Average number of seconds to run all queries: 0.016 seconds
Minimum number of seconds to run all queries: 0.016 seconds
Maximum number of seconds to run all queries: 0.016 seconds
Number of clients running queries: 50
Average number of queries per client: 4

Benchmark
Running for engine myisam
Average number of seconds to run all queries: 0.265 seconds
Minimum number of seconds to run all queries: 0.265 seconds
Maximum number of seconds to run all queries: 0.265 seconds
Number of clients running queries: 100
Average number of queries per client: 2

指定數據庫的測試:
–create-schema,指定數據庫名稱
–query,指定SQL語句,能夠定位到某個包含SQL的文件

例如:
shell>mysqlslap –defaults-file=/u01/mysql1/mysql/my.cnf –concurrency=25,50 –iterations=1 –create-schema=test –query=/u01/test.sql -S/tmp/mysql1.sock
Benchmark
Average number of seconds to run all queries: 0.018 seconds
Minimum number of seconds to run all queries: 0.018 seconds
Maximum number of seconds to run all queries: 0.018 seconds
Number of clients running queries: 25
Average number of queries per client: 1

Benchmark
Average number of seconds to run all queries: 0.011 seconds
Minimum number of seconds to run all queries: 0.011 seconds
Maximum number of seconds to run all queries: 0.011 seconds
Number of clients running queries: 50
Average number of queries per client: 1

NoSQL負載測試工具 VPork

VPork 是一個用來對分佈式哈希表(NoSQL) 進行負載測試的工具。

示例測試結果:

Mar 31, 2009 6:21:17 PM - Writes:
Mar 31, 2009 6:21:17 PM -   Num Writes:           159855
Mar 31, 2009 6:21:17 PM -   Write Failures:       0
Mar 31, 2009 6:21:17 PM -   Write Latency:        85.94 ms
Mar 31, 2009 6:21:19 PM -   Write Latency (%99):  319.00 ms
Mar 31, 2009 6:21:19 PM -   Bytes Written:        3658.79 MB
Mar 31, 2009 6:21:19 PM -   Thread w/Throughput:  0.27 KB / ms
Mar 31, 2009 6:21:19 PM -   Total w/Throughput:   24.29 KB / ms
Mar 31, 2009 6:21:19 PM - 
Mar 31, 2009 6:21:19 PM - Reads:
Mar 31, 2009 6:21:19 PM -   Num Read:             19872
Mar 31, 2009 6:21:19 PM -   Read Failures:        0
Mar 31, 2009 6:21:19 PM -   Read Latency:         70.36 ms
Mar 31, 2009 6:21:19 PM -   Read Latency (%99):   298.00 ms
Mar 31, 2009 6:21:19 PM -   Read Not Found:       12 (%0.06)
Mar 31, 2009 6:21:19 PM -   Bytes Read:           453.94 MB
Mar 31, 2009 6:21:19 PM -   Thread r/Throughput:  0.33 KB / ms
Mar 31, 2009 6:21:19 PM -   Total r/Throughput:   3.01 KB / ms

Java內存使用分析 HeapAnalyzer

HeapAnalyzer 是 IBM 的一個用來分析 Java 程序的內存堆使用狀況的圖形化工具。

網頁優化插件 YSlow

YSlow是yahoo美國開發的一個頁面評分插件,很是的棒,從中咱們能夠看出咱們頁面上的不少不足,而且能夠知道咱們改怎麼卻改進和優化。

YSlow跌評分規則。

主要有12條:

1. Make fewer HTTP requests 儘量少的http請求。。咱們有141個請求(其中15個JS請求,3個CSS請求,47個CSS background images請求),多的可怕。思考了下,爲何把這個三種請求過多列爲對頁面加載的重要不利因素呢,而過多的IMG請求並無列爲不利因素呢?

發現原來這些請求都是能夠避免的。

15個JS和3個CSS徹底能夠經過特殊的辦法進行合併(這個技術部已經幫咱們解決了,實在是太感謝了,嘿嘿。),這樣合併之後,通常狀況下頁面上只會出現一個JS和一個CSS(對JS的封裝得有必定的要求)。

可是47個CSS background images請求改怎麼解決呢?爲何頁面上的純IMG請求時合理的,而CSS background images請求過多就是不利因素了呢。這個我想了好久,總算明白,原來是這樣的:

通常頁面上的ICON,欄目背景啊, 圖片按鈕啊,咱們都會用圖片CSS背景來實現,而通常這個圖片CSS背景用到的圖片都是比較小的,因此徹底能夠把這些圖片合併成一個相對比較大的圖片,這 樣頁面上只會出現一個CSS background images請求,最多也就2-3個。後來仔細看了下雅虎美國的頁面,他們的確也是這樣作的,雖然這樣作須要花必定的時間來有規則的合併這些ICON,欄 目背景,圖片按鈕,以方便CSS調用,可是這樣作絕對是合算的,並且是有必要的,YSlow也是極力推薦的。

2.Use a CDN 這 項咱們的評分是F級,最低。說實在的,我剛開始什麼是CDN都不知道。後來查了GOODLE才知道。CDN的全稱是Content Delivery Network,即內容分發網絡。其目的是經過在現有的Internet中增長一層新的網絡架構,將網站的內容發佈到最接近用戶的網絡」邊緣」,使用戶可 以就近取得所需的內容,解決Internet網絡擁擠的情況,提升用戶訪問網站的響應速度。從技術上全面解決因爲網絡帶寬小、用戶訪問量大、網點分佈不均 等緣由所形成的用戶訪問網站響應速度慢的問題。

看來上述的解釋後,基本上明白了 CDN是怎麼回事,後來諮詢了下中文站點SA,得知咱們網站目前的確尚未作CDN的優化,可是聽說咱們有更加先進的技術來解決相似的問題(具體什麼技術 那就保密了),可是畢竟CDN也是個至關不錯的技術,因此在咱們先進技術的基礎上在作CDN優化,確定比如今更好,嘿嘿。聽說SA明年會作幾個點的 CND。

3. Add an Expires header 設置過時的HTTP Header.設置Expires Header能夠將腳本, 樣式表, 圖片, Flash等緩存在瀏覽器的Cache中.

其實咱們網站也作了這個優化,至少圖 片在這個上作過優化,可是沒有作徹底。咱們的CSS和JS都尚未作過優化,卻是外部引入的一個廣告JS作了,呵呵。其實設置過時的HTTP Header 更應該作在腳本, 樣式表, Flash上.不過聽說這個SA也是沒有作的,可是有必定的風險,由於JS和CSS是有必定的邏輯,若是服務器端和客戶端都存在緩存的話,萬一出了什麼問 題,對咱們之後查找問題的所在和增長難度,不過我想二者中是能夠權衡和並存的。

4. Gzip components 對 咱們的頁面內容進行Gzip格式的壓縮,Gzip格式是一種很廣泛的壓縮技術,幾乎全部的瀏覽器都有解壓Gzip格式的能力,並且它能夠壓縮的比例很是 大,通常壓縮率爲85%,就是說服務器端100K的頁面能夠壓縮到25K左右的Gzip格式的數據發給客戶端,客戶端收到Gzip格式的數據後自動解壓縮 後顯示頁面。

這點咱們網站基本上是100%作到了,可是咱們這項的評分並無達到想象中的A級,緣由是出在咱們的外部連接,好比咱們首頁,有外部的廣告投放JS,這個JS說擁有的網站是沒有作過GZIP優化,連累了咱們網站,因此咱們也只有B,或者C級。

5. Put CSS at the top 把CSS外部連接放到頁面的頂部。

其實這個原則咱們通常都遵照的,若是 把CSS外部連接做爲邏輯的一部分出如今頁面頭部如下,我我的以爲這個自己就是個錯誤。還好,咱們的頁面基本上都作到了,但是有些頁面好比LIST頁面, 仍是出現了和邏輯掛鉤的CSS連接,緣由是爲了解決一些原本就不合理的產品邏輯。因此,咱們WEB前端工程師有義務杜絕這些不合理的產品邏輯破壞咱們的頁 面結果及頁面加載速度,不能爲了實現而實現。

Groovy壓力測試模塊 GBench

GBench 是 Groovy 的壓力測試模塊,提供 @Benchmark / Benchmark AST Transformation 用於實際程序測試以及 BenchmarkBuilder 用於微測試。

你能夠經過在 groovy 文件中增長下面一行代碼便可,想起請看 Installation

@Grab('com.googlecode.gbench:gbench:0.3.1-groovy-2.0') // v0.3.1 for Groovy 2.0

@Benchmark 實例:

import gbench.*

class Task {
    @Benchmark void run() {
        // task
    }
}

/* Output:
Task  void run()  user:847000 system:1777000 cpu:2624000 real:4918000
*/

BenchmarkBuilder 實例:

import gbench.*

new BenchmarkBuilder().run {
    'StringBuilder' {
        def sb = new StringBuilder()       
        sb.append('foo')
        sb.append('bar')
        sb.append('baz')
        sb.toString()
    }
    'StringBuffer' {
        def sb = new StringBuffer()       
        sb.append('foo')
        sb.append('bar')
        sb.append('baz')
        sb.toString()
    }
}.prettyPrint()

/* Output:
Environment
===========
* Groovy: 2.0.0
* JVM: Java HotSpot(TM) 64-Bit Server VM (23.0-b15, Oracle Corporation)
    * JRE: 1.7.0_04-ea
    * Total Memory: 99.4375 MB
    * Maximum Memory: 1169.8125 MB
* OS: Mac OS X (10.7.3, amd64)

Options
=======
* Warm Up: Auto
* CPU Time Measurement: On

               user  system  cpu  real

StringBuilder   236       0  236   237
StringBuffer    263       0  263   267
*/

Web服務性能測試工具 Pylot

Pylot 是一款開源的用以測試 Web Service性能和擴展性的工具,它運行HTTP負載測試,這對於制定容量計劃、肯定基準點、分析系統瓶頸以及系統調優都很是有用。在使用過程 中,Pylot會發起併發請求(HTTP Requests),檢驗服務器響應,以及帶有相關指標的報表。它經過GUI或者Shell/Console來執行和監視對被測試網站的測試過程。

Pylot基於Python開發,和著名的Apache壓力測試工具ab同樣,默認在命令行運行,也能夠經過參數觸發GUI界面,固然前提是安裝了wxPython的。

改進網頁設計的工具 Page Speed

Page Speed最 初是Google內部使用的改進網頁設計的工具——它整合在Firefox的著名插件Firebug中。當用戶運行Page Speed,能夠當即得到如何改進網頁載入速度的建議。Page Speed能自動爲用戶優化圖像,提供能夠發佈在網頁上的壓縮圖片,它也能識別JavaScript和CSS載入問題,幫助開發者減小瀏覽者等待網頁展現 的時間。

Siege 配置生成工具 sproxy

SPROXY 是 siege 代理服務器,用於收集 siege 的 URLs,只需配置瀏覽器使用 sproxy 服務器,便可自動收集 POST 數據和 GET 請求,並將這些數據生成 siege 要求的格式文件。

Linux內核性能分析 OProfile

OProfile是Linux內核支持的一種性能分析機制。

它在時鐘中斷處理入口處創建監測點,記錄被中斷的上下文現場,由配套的用戶態的工具oprof_start負責在用戶態收集數據,opreport則分析數據並給出分析報告。

經過這個工具,開發人員能夠得知一個程序的瓶頸在哪裏,進而指導代碼優化。

webload

webload是RadView公司推出的一個性能測試和分析工具,它讓web應用程序開發者自動執行壓力測試;webload經過模擬真實用戶的操做,生成壓力負載來測試web的性能。

壓力測試工具 JMeter

JMeter是Apache組織的開放源代碼項目,它是功能和性能測試的工具,100%的用java實現。

網站負載測試工具 Iago

Iago 是一個網站負載測試工具,Iago 針對一個給定的網站進行訪問錄製併合成流量數據。它不一樣於其餘的負載生成工具,它試圖保持恆定的請求率。例如若是你想按每分鐘100K來請求您的服務,Iago 會試圖保持這個速度進行測試。

SQL Profiler

JDBC SQL Profiler 是一個用來鏈接到 P6Spy 實時顯示所執行的SQL語句,並生成統計信息,利用該工具能夠對SQL語句進行監控以找出執行緩慢的語句加以優化。

Microsoft Web Application Stress Tool

Microsoft Web Application Stress Tool 是由微軟的網站測試人員所開發,專門用來進行實際網站壓力測試的一套工具。透過這套功能強大的壓力測試工具,您能夠使用少許的Client端計算機仿真大 量用戶上線對網站服務所可能形成的影響。

Tomcat管理和性能監控 LambdaProbe

LambdaProbe是一款 Tomcat 的管理以及性能測試的強大的免費開源工具,LambdaProbe擁有幾乎全部Tomcat Manager的功能, 能夠說是一個加強版本的 Tomcat Manager。

更多監控界面截圖>>

在線演示>>

Web 能力分析工具 WCAT

Web 日誌和歷史流量分析可讓您深刻了解會出現何種流量,但如何才能肯定您基礎結構的實際承載量呢?這時,您須要一種工具來使您的基礎結構機器應用程序棧達到臨界 點。免費的 Web 能力分析工具 (WCAT) 應運而生,它是一種輕量級負載生成實用工具,不只可以重現對 Web 服務器(或負載平衡服務器場)的腳本 HTTP 請求,同時還能夠收集性能統計數據供往後分析之用。並且它還支持 IPv6 網絡。另外,WCAT 是多線程應用程序,而且支持從單個源控制多個負載測試客戶端,所以您能夠模擬數千個併發用戶。

該實用工具利用您的舊機器做爲測試客戶端,其中每一個測試客戶端又能夠產生多個虛擬客戶端(最大數量取決於客戶端機器的網絡適配器和其餘硬件)。您能夠選擇使 用 HTTP 1.0 仍是 HTTP 1.1 請求,以及是否使用 SSL。而且,若是測試方案須要,您還能夠使用腳本執行的基本或 NTLM 身份驗證來訪問站點的受限部分。(若是您的站點使用 cookie、表單或基於會話的身份驗證,那您能夠建立正確的 GET 或 POST 請求來對測試用戶進行身份驗證。)WCAT 還可管理您站點可能設置的任何 cookie,因此配置文件和會話信息將永久保存。

WCAT can help you test the limits of your Web site infrastructure  (單 擊該圖像得到較大視圖)

WCAT 還提供了很是出色的用戶指南,該指南能夠幫助快速建立 Microsoft® .NET Framework 控制檯應用程序,它能夠根據來自站點流量審計歷史的用戶流量數據生成測試客戶端腳本,並能在部署前於新代碼庫中模擬真正的流量。並且,若是您的同事中有 C 程序員,那您還能夠建立自定義函數和響應處理程序,供方案文件調用以便爲環境量身定製功能。

要 使用 WCAT,您須要配置兩個文件:一個包含通用測試設置(如客戶端數量、每一個客戶端上的虛擬客戶端數量、用於跟蹤的性能計數器和測試須要的 Web 服務器)的控制器文件,以及一個包含測試方案、默認請求參數和自定義函數和庫引用的方案文件。

該 應用程序將測試結果記錄到 XML 文件,您能夠應用內置的 XSL 樣式表單在 Internet Explorer® 中查看到組織好的結果表格。該報告包含摘要信息,如執行的事務數量、上下文切換次數、CPU 利用率百分比(全部 CPU),以及遇到的錯誤總數等。您還能夠獲得在設置文件中配置的性能計數器的結果(參見屏幕快照示例)、響應時間分析、以事務爲單位的統計報告、以客戶 端爲單位的明細數據,以及有關如何配置測試設置的信息。另外,您將查看到您所測試的遠程 Web 服務器的硬件配置,以及已安裝的全部更新的列表。該列表可以很好地幫助您肯定並跟蹤某個補丁程序是否會對您的站點產生性能影響。

綜 上所述,若是您負責管理 Web 站點基礎結構,那 WCAT 實用工具能夠幫助您在下一次大型代碼發佈以前深刻了解您的平臺在壓力測試下的工做狀況。

其最新版本(撰寫本文時爲 6.3.1 版)支持 x86 和 x64 Windows 系統

x86:iis.net/downloads/1466/ItemPermaLink.ashx
x64:iis.net/downloads/1467/ItemPermaLink.ashx

網站壓力測試工具 Webbench

Webbench是有名的網站壓力測試工具,它是由 Lionbridge公司(http://www.lionbridge.com)開發。

Webbech能測試處在相同硬件上,不一樣服務的性能以及不一樣硬件上同一個服務的運行情況。webBech的標準測試能夠向咱們展現服務器的 兩項 內容:每秒鐘相應請求數和每秒鐘傳輸數據量。webbench不但能具備便準靜態頁面的測試能力,還能對動態頁面(ASP,PHP,JAVA,CGI)進 行測試的能力。還有就是他支持對含有SSL的安全網站例如電子商務網站進行靜態或動態的性能測試。

2、Freebsd 上安裝 webbench

(1) 在FreeBSD下的用Ports安裝方法:

#cd  /usr/ports/benchmarks/webbench
#make install clean

記得安裝成功之後運行一下rehash命令,刷新一下系統命令

#rehash

2、webbench使用

#webbench -? (查看命令幫助)

經常使用參數 說明,-c 表示客戶端數,-t 表示時間

測試實例:

#webbench -c 500  -t  30   http://127.0.0.1/phpionfo.php

測試靜態圖片

#webbench -c 500 -t 30 http://127.0.0.1/test.jpg

4、webbench測試結果

Webbench – Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://127.0.0.1/phpionfo.php
500 clients, running 30 sec.

Speed=3230 pages/min, 11614212 bytes/sec.
Requests: 1615 susceed, 0 failed.

分析:每秒鐘響應請求數:3230 pages/min,每秒鐘傳輸數據量11614212 bytes/sec.

Ubuntu 下安裝使用

一、安裝依賴包CTAGS

apt-get install ctags

二、安裝 Webbench

下載程序: webbench-1.5.tar.gz

wget  http://tmublr.com/_media/blog/webbench-1.5.tar.gz
make
sudo make install

Spring Insight

Spring Insight 是一項可讓你深刻應用運行時刻,以可視化的方式查看應用的性能和行爲:

  • See the SQL executed for any page request
  • Find pages which are executing slowly and drill into the cause
  • Verify your application's transactions are working as designed

Screencasts

PHP性能測試工具 xhprof

xhprof —— facebook 開發的一個測試php性能的擴展。

負載測試工具 LoadRunner

LoadRunner 是一種預測系統行爲和性能的負載測試工具。經過以模擬上千萬用戶實施併發負載及實時性能監測的方式來確認和查找問題,LoadRunner 可以對整個企業架構進行測試。經過使用LoadRunner ,企業能最大限度地縮短測試時間,優化性能和加速應用系統的發佈週期。

下載試用版

負載測試框架 Grinder

Grinder是一個負載測試框架,經過Jython來編寫測試腳本,基於HTTP的測試能夠由瀏覽器來記錄整個要測試的過程。

關鍵特性:

  • 泛型測試方法
  • 靈活的測試腳本編寫
  • 分佈式框架
  • 成熟的HTTP支持

Java剖析工具 JProfiler

JProfiler 是一個商業的主要用於檢查和跟蹤系統(限於Java開發的)的性能的工具。JProfiler能夠經過時時的監控系統的內存使用狀況,隨時監視垃圾回收,線程運行情況等手段,從而很好的監視JVM運行狀況及其性能。

JProfiler 是一個全功能的Java剖析工具(profiler),專用於分析J2SE和J2EE應用程序。它把CPU、執行緒和內存的剖析組合在一個強大的應用中。 JProfiler可提供許多IDE整合和應用服務器整合用途。JProfiler直覺式的GUI讓你能夠找到效能瓶頸、抓出內存漏失(memory leaks)、並解決執行緒的問題。它讓你得以對heap walker做資源回收器的root analysis,能夠輕易找出內存漏失;heap快照(snapshot)模式讓未被參照(reference)的對象、稍微被參照的對象、或在終結(finalization)隊列的對象都會被移除;整合精靈以便剖析瀏覽器的Java外掛功能。

網站壓力測試工具 ApacheBench

ApacheBench 工具程式(ab)是 Apache 網站伺服器軟體的一個附帶的工具軟體,專門用來執行網站伺服器的運行效能,特別是針對 Apache 網站伺服器 的效能分析。這支程式本來是用來檢測 Apache 網站伺服器(Web Server) 所能夠提供的效能,特別是能夠看出 Apache 網站伺服器能提供每秒能送出多少網頁,當然的,也能夠用在任何其餘的網站伺服器

通常的使用方法:ab -c 併發數 -n 請求數 URL地址

負載測試工具 loadUI

loadUI 是一個企業級的負載測試工具,測試可分佈式運行並可實時修改,與 soapUI 緊密集成,使用高度圖形化接口,使得測試變得很簡單並且運行迅速。

Web測試和負載模擬工具 curl-loader

curl-loader 是一個用C語言編寫的Web應用測試和模擬負載工具,可模擬成千上萬的客戶端請求,而且每一個請求來自不一樣的IP地址,支持用戶認證、登陸等Web交換過程。

Chrome的Web性能分析擴展 Speed Tracer

Speed Tracer是一款功能強大的Web性能分析擴展,能夠對網頁中的元素進行全方位的檢測分析,找出你網頁運行緩慢的罪魁禍首,以方便開發者優化代碼,功能很強大。

Speed Tracer 是能幫助您發現並解決網絡應用程序中的性能問題。藉助Speed Tracer,您能夠更好地瞭解在應用程序中的哪些地方消耗了時間,並能夠解決JavaScript語法分析和執行、CSS式樣以及更 多方面的問題。

.NET性能分析工具 SlimTune

SlimTune 是一個 .NET 應用的分析和性能優化工具,提供不少諸如遠程分析、實時結果、多插件支持的可視化界面。

CPU性能測試工具 kernbench

kernbench是CPU性能基準測試工具。它的設計比較在同一臺機器,或比較硬的內核。它運行在內核編譯兼職不一樣數量:1 / 2數量的CPU,優化(默認值是CPU的4xnumber)和最大工做計數。可選它也能夠運行單線程。而後打印出的每一組的平均運行有用的統計數。

Java代碼質量評價 JDepend

JDepend一個開放源代碼的能夠用來評價Java程序質量的優秀工具,它遍歷Java class的文件目錄,以Java包(package)爲單位,爲每個包/類自動生成 包的依賴程度,穩定性,可靠度等的評價報告,根據這些報告,咱們能夠獲得包或類之間的依賴關係,並分析出包的穩定程度,抽象程度,是否存在循環依耐關係 等。

咱們能夠根據JDepend給出的報告數據,分析出咱們的包是不是可靠的,穩定的,健壯的包,是否符合面向對象的設計原則。

一個具備穩定性,擴展性,可維護性的軟件系統要求系統設計遵循面向對象的設計原則。通常來講,面向對象的設計原則要求知足高聚合,低耦合,禁止循環依賴等基本原則。

若是存在包與面向對象的設計原則有抵觸,則有必要對這些包加以從新設計或抽象。

JDepend的主要功能

JDepend生成的Java包的質量評價報告主要包括:
 Number of Classes and Interfaces:實現類與抽象接口的數目
面向的設計原則之一The Stable Abstractions Principle (SAP):穩定抽象等價原則指出了包的穩定程度與它的抽象程度(接口的數目)成正比,也就是說,一個包內包含的接口所佔的比重越大,這個包就越穩定。
 Abstractness (A):包的抽象度。指一個包內包含的抽象類或接口占整個包中的類的比重。該值處於0,1之間,若A=0,說明包內不包含任何抽象類或接口;若A=1,說明包內所有是抽象類或接口。包的抽象度與穩定性之間的關係上面已經做了說明。
 Afferent Couplings (Ca):向心耦合。依賴該包(包含的類)的外部包(類)的數目(i.e. incoming dependencies),該數值越大,說明該包的擔當的職責越大,也就越穩定。
 Efferent Couplings (Ce):離心耦合。被該包依賴的外部包的數目(i.e. outgoing dependencies),該數值越大,說明該包越不獨立(由於依賴了別的包),也越不穩定。
 Instability (I):衡量一個包的不穩定程度。I=Ce/(Ce+Ca)。它的值處於[0,1]之間。I=0時說明包是最穩定的,反之I=1則說明包極不穩定。
 Distance from the Main Sequence (D): 該指標主要用來評價包的抽象程度與穩定程度的平衡關係,它能夠用二維直線圖 A + I = 1 來表示。D=abs((A + I) - 1),也就是說D爲 一個包的抽象度 + 包的不穩定程度 - 1  的絕對值。一個理想的包是:徹底抽象的(A=1),很是穩定的(I=0),這時D=0;或者是:徹底具體類構成的包(A=0),很是不穩定的 (I=1),這時一樣也有D=0。D=0說明包的抽象程度與穩定程度是平衡的,反之D=1說明包的平衡程度被嚴重破壞。
 Package Dependency Cycles:包的循環依賴度。
面向對象的設計原則之一:The Acyclic Dependencies Principle (ADP) - OO設計的無環依賴原則要求包之間不能有循環依賴關係。

JDepend爲咱們提供了上述許多高級功能,爲咱們設計健壯的包/類提供了重要的參考數據,是一個不可多得的優秀工具。

性能監測和分析 Perf4J

Perf4J 是一個新的開放源碼的性能記錄,監測和分析庫,主要用於企業Java應用程序。與開發者們所熟悉的Java記錄框架很類似,如log4j

Perf4J的重點功能:

  • 一個簡單的秒錶計時機制,對timing進行簡潔的聲明。
  • 一個命令行工具用來分析日誌文件,並生成彙總統計和性能圖表
  • 易於與常見的記錄框架和facades集成:log4j, java.util.logging, Apache Commons Logging和SLF4J。
  • 在運行時自定義log4j appender 產生統計數據和圖表
  • 揭露性能統計,做爲JMX的屬性,並在統計超出指定值時發出通知
  • 一個控制器,在Web應用中揭露性能圖表
  • 一個可擴展的框架

JVM插件 JavaRebel

JavaRebel (JRebel)是一個JVM的插件(非開源),給Java帶來了Ruby和PHP風格的動態從新裝載類特性,JavaRebel容許一個應用程序(獨立的或運行在應用服務器上的應用)從新裝載在運行過程當中(on the fly)發生的大多數類變化,包括增長或刪除方法和域。

javarebel 能夠使Java class文件從新加載速度更快,節省了開發時間,並且修改了配置文件和在class中加入任何的代碼都不用重啓服務器,徹底支持Annotation reloading.(Annotation動態載入),當classes字節碼文件從新載入的時,它會在觸發寄存器監聽,容許使用自定義的方法去處理。

•簡化了安裝。如今 Java 5 中安裝 JavaRebel 只須要加上 "-noverify -javaagent:javarebel.jar" 到命令行中。

•優化了性能。 這次版本關注了啓動時間和後臺 CPU 的使用率。一些用戶報稱啓動應用服務器的時間比用以前版本快了 2-3 倍。

•改善了兼容性。支持全部主流的容器和框架,在其餘的之上也可能工做的很好。

•擴展了對 Java 1.4 的支持。像 BEA Weblogic 8.X、Oracle OC 4J 9.x/10.X 和 Tomcat 4.x 也被支持。

•支持使用反射。新加到類中的方法對可用 Java 5+ 反射 API 訪問到。

•修改了許多 Bug。這次版本更爲穩定,對於所支持系統提供即拆即用。

頁面性能測試工具 Page Detailer Pro

Page Detailer Pro 是 IBM alphaworks 提供的一個工具。它是一款用來記錄瀏覽器 HTTP 請求的軟件,它經過在客戶端的 Windows 端口堆棧中插入探針(Probe)來獲取記錄瀏覽器發起的 HTTP 請求的各類類型的數據。

圖 1 是一個 Page Detailer 記錄的截圖。淺藍色標註部分是後加的,由上圖示可知:

  • 頁面尺寸。這兒的頁面尺寸只包含資源自己的尺寸,不包含 HTTP 頭及其餘協議棧的頭尺寸。固然,PageDetailer 也提供總下載尺寸的數據。
  • HTTP 請求數。
  • 單個資源下載時間。這整個條形表明單個資源下載的總時間,包含創建網絡鏈接的時間,發送 HTTP 請求的時間,接收 HTTP 響應的時間,網路傳輸整個資源的時間。
  • 瀏覽器發出請求頭到接收到響應頭的時間。PageDetailer 只提供這個時間,但事實上網絡監聽工具能夠提供記錄更細粒度的時間。好比:HTTP 請求的發送時間,等待服務器響應的時間,接受 HTTP 響應頭的時間。因爲在局域網裏,接受發送頭的時間極短,因此這個時間能夠認爲就是服務器的響應時間。在這個圖示中,把全部藍色條形表明的時間相加就是服務 器消耗的時間,去除重疊部分後纔是服務器響應時間。注意,服務器消耗的時間不等於服務器響應的時間,這裏也有一個併發度的問題。
  • 網絡傳輸時間。只是有關瀏覽器從開始接收這個資源的內容到接受結束所化的時間。通常的來講,它就是資源尺寸 / 帶寬。但若是服務器或瀏覽器是以流的方式處理這個資源的話,那它還包含瀏覽器或服務器的處理時間。
  • 瀏覽器渲染時間。在任意兩個資源下載中的間隔時間就是瀏覽器的渲染時間。注意:即便是在資源下載是,瀏覽器也可能在進行渲染。不過這些消 耗,沒法用間隔時間的方法判斷。通常的來講,這部分時間是比較有限的而且傾向於忽略。
  • 資源下載之間沒有重疊,這說明這些下載之間沒有併發。
  • 資源下載之間有重疊,這說明這些下載之間有併發。

那麼併發度怎麼計算?一個簡化的方法就是:

併發度 = 單個資源下載時間之和 / (頁面下載時間 – 瀏覽器渲染時間)

簡化的前提是:

  • 在局域網內,網絡延遲很低。
  • 服務器響應很快。
  • 服務器端,瀏覽器端沒有流式處理,或很快

固然,在這裏只是介紹了一下計算併發度的原理。基於這個原理,能夠編寫相應的程序讀取 PageDetailer 或其餘網絡監聽程序 (好比 WireShark) 的數據來自動計算併發度。

性能測試工具 SysBench

SysBench是一個模塊化的、跨平臺、多線程基準測試工具,主要用於評估測試各類不一樣系統參數下的數據庫負載狀況。它主要包括如下幾種方式的測試:
       一、cpu性能
       二、磁盤io性能
       三、調度程序性能
       四、內存分配及傳輸速度 
       五、POSIX線程性能
       六、數據庫性能(OLTP基準測試)     

目前sysbench主要支持 MySQL,pgsql,oracle 這3種數據庫。

數據庫壓力測試工具 Super Smack

Super-smack 是一個強大的廣受讚譽的壓力測試工具,支持MySQL和PostgreSQL。這個工具程序如今由 Tony Bourke 維護。

安裝
Super-smack 如今是1.3版,源碼下載地址以下:
http://vegan.net/tony/supersmack/super-smack-1.3.tar.gz

./configure—with-mysql—with-pgsql
根據須要,能夠只保留 MySQL 和 PostgreSQL 中的一個。若是你的 client library 安裝在其餘目錄,你要指明它,例如:
./configure—with-mysql=/opt/mysql
而後
make
su
make install

PS. FreeBSD 下面有 ports 的,安裝起來更方便。

使用
將程序提供的 smack 樣本文件從新拷貝一份,而後編輯此文件,填入相應的鏈接信息,好比用戶名、密碼、端口和測試所用的數據庫名。
cp /usr/share/smacks/select-key.smack select-key-mysql.smack

開始運行
super-smack —d mysql select-key-mysql.smack 10 1000

10 是鏈接客戶的數目,每一個客戶有100次輪詢。

結果
Query Barrel Report for client smacker1
connect: max=66ms min=0ms avg= 66ms from 10 clients
Query_type num_queries max_time min_time q_per_s
select_index 20000 0 0 4360.61

這表示 super-smack 運行了10個客戶,客戶鏈接最長時間爲66毫秒,最短的則沒有延遲,平均時間爲62毫秒。Super-smack 總共執行了20000此查詢,每一個查詢所花時間都小於1毫秒。整個測試期間,服務端平均每秒執行了4360.61次 select_index 型查詢。

另外,能夠修改 smack文件中 相應的參數以符合你的測試要求。

數據庫性能測試工具 HammerOra

HammerOra 工具是基於TCL(Tool Command Language)語言的數據庫性能測試工具。首先HammerOra是一款負載測試工具;其次HammerOra目前支持OracleMySQL和HTTP應用(web應用); 而後HammerOra是開源的,框架有點相似於商業工具LoadRunner; 由於HammerOra是基於Tcl語言的,因此天生就是可移植的,能夠運行於Windows平臺和Linux平臺。

HammerOra內嵌了兩套標準測試腳本 tpc-c and tpc-h,固然你也能夠本身開發和擴充測試腳本,開發語言是Tcl。

HammerOra包含叄個部分(這點有點相似於LoadRunner)建立測試腳本(打開build-in的tpc-c or tpc-h)而後能夠進行調試;配置並建立虛擬用戶,並設置虛擬用戶的策略,好比持續時間,用戶迭代,rumpup塬則等,而後控制場景運行;最後是監控 事物計數器。對應於LoadRunner分別是VUGen, Controller and Analysis

HammerOra的工做塬理就是捕捉Oracle的trace文件,並生成相應的SQL腳本進行回放,因此對用戶的場景模擬程度是很是高的。 HammerOra跟Oracle的接口是也是利用一個Tcl的package OraTcl來完成的。(以前咱們在開發測試平臺時,後臺驅動Oracle數據庫操做也是經過這個package來完成的;

JavaScript性能測試 JSLitmus

JSLitmus是款輕量級的工具,用來測試JavaScript執行性能狀況,採用直觀的API。

測試實例

http壓力測試工具 httpsender

httpsender是一款輕量級的http壓力測試工具,由淘寶的測試工程師用Java語言開發完成。它能夠指定併發鏈接數發送指定數目的請求,還能夠自定義請求的header頭。請求的URL支持經過正則表達式指定範圍,同時也支持從文件隨機或順序讀取。它還具有驗證數據是否完整和錯亂等較高級的功能。默認應用環境爲Linux。

【做者】鄧悟 (dengwu@taobao.com)

【基本功能】

1. 指定併發鏈接數發送指定數目的請求

httpsender -c 10 -n 10000 http://www.test.com/[0-9]/[0-9].jpg

2. 自定義請求的header 頭

httpsender -c 10 -n 10000 http://127.0.0.1/ -h "Host:www.test.com" -h "Connection:close"

3. 從文件中讀取要請求的URL, "-r 1"指定隨機發送,默認是順序發送

httpsender -c 1 -n 100 -f /tmp/myfile.log -r 1

4. 發送請求時,設置http版本號是1.0,默認是1.1

httpsender -c 1 -n 1 http://www.test.com -v 1.0

5. 打印每個請求後的響應header信息,默認不輸出

httpsender -c 1 -n 1 http://www.test.com -p

6.  -d 指定打印輸出的時間間隔爲10秒

httpsender -c 10 -n 10000 http://127.0.0.1/[0-100].jpg -h "Host:www.test.com" -r 1 -d 10

7. 驗證數據是否損壞或者是否發生錯亂

httpsender -c 1 -n 1 -f myfile.log -md5

此功能的目的是驗證服務器返回的內容數據是否完整

使用者須要預先將被訪問的URL的md5命名爲該URL的文件名放到指定的文件中,如:myfile.log

http://www.test.com/4b841ef580c2f8b0085885fcb7ef8072

http://www.test.com/abc41ef5abfc2f8b0085885fcb7ef807

驗證時程序會自動根據返回的body內容計算md5值,而後和請求的URL文件名作比對,比對失敗會打印輸出。

下載地址:

http://dl.dbank.com/c0vxx27aa5

壓力測試工具 stress

stress 是Unix類系統下的工做量和壓力測試工具。它將對用戶指定的CPU數量的I/O,內存和硬盤的負載並報告它檢測到任何錯誤。它用於自動壓力測試和調試系統組件失敗的惟一或更常常負荷時。它能夠運行在x86,ppc64的,和PPC 32 GNU / Linux的,Tru64的,SPARC Solaris的,和其餘平臺。

使用示例:

   $ stress --cpu 2 --io 1 --vm 1 --vm-bytes 128M --timeout 10s --verbose
stress: info: [9372] dispatching hogs: 2 cpu, 1 io, 1 vm, 0 hdd
stress: dbug: [9372] (243) using backoff sleep of 12000us
stress: dbug: [9372] (262) setting timeout to 10s
stress: dbug: [9372] (285) --> hogcpu worker 9373 forked
stress: dbug: [9372] (305) --> hogio worker 9374 forked
stress: dbug: [9372] (325) --> hogvm worker 9375 forked
stress: dbug: [9372] (243) using backoff sleep of 3000us
stress: dbug: [9372] (262) setting timeout to 10s
stress: dbug: [9372] (285) --> hogcpu worker 9376 forked
stress: dbug: [9375] (466) hogvm worker malloced 134217728 bytes
stress: dbug: [9372] (382) <-- worker 9374 signalled normally
stress: dbug: [9372] (382) <-- worker 9373 signalled normally
stress: dbug: [9372] (382) <-- worker 9375 signalled normally
stress: dbug: [9372] (382) <-- worker 9376 signalled normally
stress: info: [9372] successful run completed in 10s

.NET性能調試工具 DotTrace

DotTrace Performance是.NET平臺下經常使用的性能調試工具,可以幫助.Net開發者以最快的方式找到並移除性能上的瓶頸。

DotCover 則是一個 Visual Studio 插件,簡單易用,以幫助 .NET 開發人員肯定單元測試中應覆蓋的每一個單行代碼都確確實實地包含其中。它支持在 Visual Studio 200五、2008 或 2010 環境下工做,可以分析 .NET 框架和 Silverlight 應用程序的語句級代碼覆蓋。同時集成了 ReSharper 的單元測試工具集,突出顯示單元測試未覆蓋的代碼,能夠檢測出覆蓋任何特別代碼位置的單元測試,生成基於 XML 的代碼覆蓋報告。

數據庫壓力測試工具 JDBHammer

JDBHammer 是一個數據庫壓力測試工具,它能夠模擬指定數量的併發用戶進行數據庫查詢操做並給出測試的結果報表。當前只支持 MySQL 數據庫。

Cuadro CPU Benchmark

Cuadro CPU Benchmark 用來測試 CPU 的性能。Cuadro CPU基準措施經過數值找到一個解決方案,並測量了在直角二維熱傳導方程運行時CPU性能的座標。該方案是一個垂直的不鏽鋼接受雙方產生的熱量和天然對流板模型。它發如今每個時間步的溫度分佈這一系統矩陣。

Web性能和負載測試工具 Multi-Mechanize

Multi-Mechanize 是一個開源的Web性能和負載測試框架,可以讓你併發運行多個 Python 腳原本對網站或者Web服務進行壓力測試。

主要特性:

  • 支持各類 HTTP methods
  • 高級超連接和HTML表單支持
  • 支持 SSL
  • 自動處理 Cookies
  • 可設置HTTP頭
  • 自動處理重定向
  • 支持代理
  • 支持 HTTP 認證

下面是一些測試結果圖表:

性能分析工具 DTrace

DTrace,也稱爲動態跟蹤,是由 Sun™ 開發的一個用來在生產和試驗性生產系統上找出系統瓶頸的工具。 在任何狀況下它都不是一個調試工具, 而是一個實時系統分析尋找出性能及其餘問題的工具。

DTrace 是個特別好的分析工具,帶有大量的幫助診斷系統問題的特性。 還能夠使用預先寫好的腳本利用它的功能。 用戶也能夠經過使用 DTrace D 語言建立他們本身定製的分析工具, 以知足特定的需求。

性能分析工具 TProfiler

 

TProfiler是一個能夠在生產環境長期使用的性能分析工具.它同時支持剖析和採樣兩種方式,記錄方法執行的時間和次數,生成方法熱點 對象建立熱點 線程狀態分析等數據,爲查找系統性能瓶頸提供數據支持.

TProfiler在JVM啓動時把時間採集程序注入到字節碼中,整個過程無需修改應用源碼.運行時會把數據寫到日誌文件,通常狀況下每小時輸出的日誌小於50M.

業界同類開源產品都不是針對大型Web應用設計的,對性能消耗較大不能長期使用,TProfiler解決了這個問題.目前TProfiler已應用於淘寶的核心Java前端系統.

部署後低峯期對應用響應時間影響20% 高峯期對吞吐量大約有30%的下降(高峯期能夠遠程關閉此工具).

.NET性能單元測試 NTime

NTime 是一款用來測試 .NET 應用性能的單元測試工具,界面以下圖所示:

web壓力測試工具 Httperf

Httperf 是個web 服務器的性能測試工具,來自惠普公司。

Httperf 提供了靈活的生成各類 HTTP 負載來測試服務器的性能,提供可靠、高性能的工具,支持 HTTP/1.1 和 SSL。

Ruby的性能測試工具 RoadRunner

RoadRunner是一個用ruby寫的相似LoadRunner框架的性能測試工具

LoadRunner?這個工具不少作過性能測試的朋友確定都知道,裏面有不少方便易用的方法,不過這些方法的實現不是重點,畢竟ruby的第三方 庫的各類實現很是的多,ruby開發者的熱情都很高

RoadRunner實現的是LoadRunner的框架,

既: init(){ } action(){ } end(){ }

init存放初始化、登錄等操做,action能夠不斷的迭代執行,從而 產生持續不斷的壓力,end存放釋放資源、退出等操做。

外加一個雖然簡單但直觀的報表,以後的版本除了不斷的完善RR的報告,提升和LR 的類似度以外,還會增長更多ruby特有的方法,豐富Rrhelper模塊代碼。

RoadRunner更方便的地方在於,它不只僅能夠通 過日誌來展現結果,還能夠將結果存儲到數據庫中,你們能夠看test目錄中的pi_db.rb這個測試文件,以後就會很方便的經過讀取數據庫的測試記錄, 來繪製測試報表.

我以爲我在寫數據庫這塊代碼的時候比較讓本身滿意, 這塊的設計是這樣的:

當你引用 RoadRunner這個gem時,若是你還在生成RoadRunner類的同時,給RoadRunner.new方法一個block,

並 且這個block裏面是一個ActiveRecord的數據庫鏈接,

並且這個數據庫中沒有 scenarios,transactions,records這三張表,

則RoadRunner會自動建立這三張表,以及默認的字段,

而且將測試的數據寫入這三張表中.

但要注意,若是已經有了這三張表,但字段和RR的要求不一樣,那就會致使寫數據異常,需 要分庫或者更名.

JAMon

JAMon(Java應用程序監視器)是一個免費的,簡單,高性能,線程安全的Java API.它讓開發者能夠方便地監控軟件。JAMon用來測定程序的性能瓶頸,程序與用戶的互動性和程序的可量測性。JAMon收集概要的統計數據好比執行 時間(總的,平均的,最大的,最小的等),併發程序請求等。JAMon把這些統計數據以報表的形式展現出來。

XML數據庫性能測試 TPoX

TPoX 是一個應用級的基準XML數據庫的基礎上的金融應用方案。它是用來評價業績的XML數據庫系統,側重於XQuery查詢,使用SQL / XML的, XML的存儲, XML索引, XML架構的支持, XML的更新採伐,併發和其餘數據庫方面的問題。

可視化性能分析器 VPA

Visual Performance Analyzer (VPA) 是一個Eclipse的插件,用來對應用程序進行性能分析的工具

UseMon

UseMon是一個開源實時性能檢測代理工具,可以嵌入JVM提供監控程序運行能力,包括異步運行狀況,只須要花費很小的代價,而且可以在生產環境中使用。UseMon提供瞭如下功能:

1。查看JVM詳細使用狀況 
2。測量程序反應時間 
3。依賴分析 
4。集羣環境監控

UseMon可以在任何高於1.4版本的JDK環境下運行,包括第三方JVMs。它可以自動嵌入EJBs,MDBs,和幾乎全部的連接,或者可以 配置對應用中某些特定的組件進行跟蹤(這一點很強)。獨立的UseMon可以多點跟蹤數據,而且可以在數據經過Hibernate插入核心存儲以前對數據 進行分析。當運行在低運行和高網絡支出環境中,UseMon可以用來監控生產環境中實時系統行爲。UseMon已經在挪威的一家大電信公司Telenor 的繁重的任務加載生產環境中運行。

負載測試軟件 PureLoad

PureLoad 一款負載測試軟件,能夠用於模擬大量的用戶用戶執行請求,以檢測軟件的負載性能,並能報告存在的性能問題和詳細的統計數據,一樣也支持基於Web的應用。經過動態模擬的執行對服務器的請求的應用程序數以千計的用戶。
使用PureLoad驗證的性能和服務器應用和電信服務的穩定性。

使用電驢下載

HTTP響應時間監視工具 httppp

httppp 是一個HTTP的網絡響應時間的無源監視工具,使用在非侵入性的方式。基於libpcap和libqpcap開發。

WEB服務器性能/壓力測試工具 SuperWebBench

SuperWebBench 是由webbench改進而來的一款簡單易用的web性能測試工具.

 

背景:

webbench最多能夠模擬3萬個併發鏈接去測試網站的負載能力,我的感受要比Apache自帶的ab壓力測試工具好,安裝使用也特別方便。

webbench是基於GPL受權協議的,我天然能夠取得源碼修改,而後做爲superwebbench這個項目發佈。

 

簡介:

SuperWebBench 是由webbench改進而來的一款簡單易用的web性能測試工具

SuperWebBench 是依照GPL V2.0發佈的

SuperWebBench是遵循POSIX標準的C語言編寫的程序

 

主要改動以下:

一、更正connect()服務器失敗時,不能close()的bug

二、使用多線程代替多進程,提供更高的效率

三、自動資源限制檢測和設置(線程數和打開文件數限制)

四、測試時間到達後,快速關閉套接字,不用再等待服務器響應(在WAN的狀況下,這會佔用不少時間)

五、加入了檢測HTTP響應號的功能,這樣就能夠分辨HTTP是否返回了正確的信息(HTTP2XX)

六、從新組織了下代碼結構,使得閱讀更方便

 

安裝:

 

wget https://github.com/downloads/xutongle/SuperWebBench/superwebbench.tar.gz

tar zxvf superwebbench.tar.gz

cd superwebbench

make && make install

 

superwebbench -c 500 -t 30 http://127.0.0.1/test.jpg 

參數說明:-c表示併發數,-t表示時間(秒)

 

測試結果示例:

 

 

SuperWebBench - Advanced Simple Web Benchmark 0.1

Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Modified By Davelv 2011-11-03

 

Benchmarking:GET http://127.0.0.1/test.jpg (using HTTP/1.1)

 

500 clients, running 30 sec.

 

Speed=5887 pages/sec, 1862058 bytes/sec.

Requests: 0 ok, 176220 http error, 405 failed.

 

示範:

 

superwebbench  

superwebbench [option]... URL 

  -f|--force                      Don't wait for reply from server. 

  -r|--reload                     Send reload request - Pragma: no-cache. 

  -t|--time                 Run benchmark for seconds. Default 30. 

  -p|--proxy        Use proxy server for request. 

  -c|--clients                Run HTTP clients at once. Default one. 

  -9|--http09                     Use HTTP/0.9 style requests. 

  -1|--http10                     Use HTTP/1.0 protocol. 

  -2|--http11                     Use HTTP/1.1 protocol. 

  --get                           Use GET request method. 

  --head                          Use HEAD request method. 

  --options                       Use OPTIONS request method. 

  --trace                         Use TRACE request method. 

  -?|-h|--help                    This information. 

  -V|--version                    Display program version.

 

常見問題:

 

ctags *.c

/bin/sh: ctags: command not found

make: [tags] 錯誤 127 (忽略)

 

ok,是在centos下沒自動安裝ctags命令,因而yum install ctags,安裝成功。

web服務器的吞吐量與負載測試 http_load

http_load 以並行複用的方式運行,用以測試web服務器的吞吐量與負載。可是它不一樣於大多數壓力測試工具,它能夠以一個單一的進程運行,通常不會把客戶機搞死。能夠能夠測試HTTPS類的網站請求

% ./http_load -rate 5 -seconds 10 urls
49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds
5916 mean bytes/connection
4.89274 fetches/sec, 28945.5 bytes/sec
msecs/connect: 28.8932 mean, 44.243 max, 24.488 min
msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min
HTTP response codes:
  code 200 -- 49

NetBeans Profiler

NetBeans剖析器項目把JFluid(源自Sun實現室)剖析技術結合到NetBeans IDE中.隨着Java程序的大小與複雜性的增加,並要保持程序性能的需求變得愈來愈因難,所以進行軟件的剖析必將成爲開發週期中天然的一部分。

     
Selecting profiling task
Windows XP
Profiling data snapshot
Windows XP
HeapWalker tool
Windows XP

網站功能、性能測試工具 FunkLoad

FunkLoad 是一個網站項目的功能、性能測試工具。

CodePro Profiler

CodePro Profiler,開發者能夠使用該工具來檢查應用的內存泄漏問題和性能問題。

Web壓力測試系統 nGrinder

 

nGrinder是一個基於Grinder(http://grinder.sourceforge.net/)開發的一個很是易於管理和使用的性能測試系統。

它是由一個controller和鏈接它的多個agent組成,用戶能夠經過web界面管理和控制測試,以及查看測試報告,controller會把測試分發到一個或多個agent去執行。用戶能夠設置使用多個進程和線程來併發的執行該腳本,並且在同一線程中,來重複不斷的執行測試腳本,來模擬不少併發用戶。

nGrinder的測試是基於一個python的測試腳本,用戶按照必定規則編寫測試腳本之後,controller會將腳本以及須要的其餘文件分發到agent,用Jython執行。並在執行過程當中收集運行狀況、響應時間、測試目標服務器的運行狀況等。並保存這些數據生成運行報告,以供之後查看。

nGrinder的一大特色就是很是容易使用,安裝也很是容易,能夠作到開箱即用,測試用戶也能夠很容易就開始測試任務。固然,若是想執行一些比較複雜場景的性能測試,就須要測試人員對python有必定認識。

 

TAU

TAU (Tuning and Analysis Utilities) 是一個用來分析C/C++、Fortran、Python和Java程序性能的工具。

It collects much more information than is available through prof or gprof, the standard Unix utilities, including per-process, per-thread, and per-host information, inclusive and exclusive function times, profiling groups that allow you to organize data collection, access to hardware counters on some systems, per-class and per-instance information, the ability to separate data for each template instantiation, start/stop timers for profiling arbitrary sections of code, and support for collection of statistics on user-defined events.

性能檢測套件 Perfmon4j

Perfmon4j是一個性能監測工具套件,可用於診斷和監測Java應用程序的性能瓶頸、吞吐量和響應時間。它的主要功能包括servlet響應的實時監控,詳細線程跟蹤採樣,Java的儀器,使包,類,無需修改源代碼和監測方法,系統參數的快照,包括垃圾收集,內存池等,一個API申請額外的 監測監控經過方法註解或在網上定時器點,並在動態運行的應用,使顯示器的支持。

Web Performance Load Tester

Web Performance Load Tester 是一套商業的Web服務器測試工具。主要功能包括IP欺騙、客戶端證書、多實例同步測試、Web認證、SSL、自動分析、Ajax支持、SOAP支持等。功能很強大,可是是收費軟件。

WEB應用負載測試工具 fwptt

fwptt 是一個用來進行WEB應用負載測試的工具。它能夠記錄通常的請求,也能夠記錄Ajax請求。它能夠用來測試 asp.net, jsp, php 或是其它的Web應用。

HTTP 壓力測試工具 wrk

wrk 是一個比較先進的 HTTP 壓力測試工具。

測試方法:

wrk -t8 -c400 -r10m http://localhost:8080/index.html

輸出結果:

  Making 10000000 requests to http://localhost:8080/index.html
    8 threads and 400 connections
    Thread Stats   Avg      Stdev     Max   +/- Stdev
      Latency   439.75us  350.49us   7.60ms   92.88%
      Req/Sec    61.13k     8.26k   72.00k    87.54%
    10000088 requests in 19.87s, 3.42GB read
  Requests/sec: 503396.23
  Transfer/sec:    176.16MB

性能測試框架 Basher

Basher 是一個輕量級的性能測試框架,用來幫助開發者編寫診斷和性能測試。

爲Java提供運行時響應時間分析 jHiccup

Azul System公司於12月13日宣稱發佈了開源工具jHiccup,設計該工具的目的是對與應用程序底層運行平臺相關的暫停和延遲(或「hiccups」)作出度量。新工具的功能與Azul的 JitterMeter有部分重疊,但它爲建立圖形化的輸出增長了基於Excel的工具。另外它還計劃增長基於Java用於生成圖表的工具。此外,想要針 對應用程序使用jHiccup也至關簡單。你只須要在用來啓動應用程序的java -c命令以前增長jHiccup便可。

jHiccup會捕獲運行時的響應時間,對其記錄日誌,並經過「Hiccup圖」來顯示。這個工具不會度量應用程序代碼致使的延遲,而是會捕獲由底 層運行時平臺所致使的外部延遲,那會對全部在當時運行的應用程序產生影響。用來達到這種效果的技術很是簡單: jHiccup會嚮應用程序增長一個線程,它會休眠1ms,而後喚醒,並查看距上次喚醒間隔了多長時間,若是超過1ms,那麼就會在內部記錄日誌。這樣, 你就擁有了最佳響應時間的基準。

其中的一些「Hiccup圖」會對你頗有幫助。第一個圖會顯示出靜默系統(quiet system)中的空閒應用(idle app)。圖的頂部顯示的是jHiccup系統所檢測到的內容,而且會顯示佔總體運行的百分比。在下面,工具會提供更多詳細的百分比樣例,這是基於 10000點的樣例。若是系統(而不是應用程序)繁忙,那麼咱們就會看到延遲的數量上升,由於調度程序會佔用大部分應用程序的時間。

下面的第二幅圖顯示的是真實的案例,來自於使用CMS collector運行在Hotspot的電信收費應用程序。經過與垃圾回收日誌關聯分析,咱們能夠知道在此顯示的是主要和次要的垃圾回收事件。CMS是 一種分代的回收程序(generational collector),它會把對象隔離爲新一代和舊一代,並優先收集新一代的對象。這個應用程序在電信收費程序中很典型,它對於新一代對象很難處理,由於 它須要跟蹤大量只持續幾秒鐘就消失的會話。所以,大量新一代中的會話都會被回收。而更大的舊一代會話會形成暫停。

jHiccup提供了一種很簡單的方式,讓你知道應該在什麼地方進行優化,它會向你展現在應用程序自己有多少特定的性能問題,以及在其餘地方——像Java虛擬機、操做系統、管理程序(若是用到的話)以及硬件——中有多少問題。它已經基於Creative Commons license開源。

介紹內容來自:http://www.infoq.com/cn/news/2011/12/jHiccup

EJP

EJP(Extensible Java Profiler ) 開源的Java剖析工具,它使用一個可升級的,可擴展的體系結構.一個Java剖析工具是用來優化Java程序性能的開發工具,它幫助你找出並移除運行開 銷大的部分.EJP基於JVMPI(Java Virtual Machine Profiler Interface )可用來監控Java應用程序一小部分的執行狀況並把它用一些突出的元素在分層的樹上表示出來.

性能測試工具 CBenchmark

CBenchmark—-CharlesCui’s Benchmark

這是我實現的一款性能測試工具,以前在工做中經常使用LoadRunner之類的工具來完成性能測試,但受限於LR極其昂貴的Lisence以及難以定製的SDK,因而我用C/C++實現了這個工具,並藉助Linux系統對線程和進程的良好調度,能夠實現極高的併發壓力.

特色|Feature

  • 本程序和當前性能測試解決方案相比,
  • 能夠實現極高的定製化:開放全部API,用戶能夠基於這些API實現本身的性能測試工具.
  • 無限制:本產品徹底免費,不會像現有成熟解決方案同樣基於併發數,或者基於使用協議的Lisense限制。
  • 高性能高併發:可提供比現有產品高出不少的併發能力,本程序使用C語言實現全部的代碼。
  • 通用性:因爲本產品測試用例的業務實現是由客戶完成,因此本產品的做用不限於某種測試協議,因此本產品是一個通用的性能測試工具.
  • 執行過程可控:測試執行過程當中用戶能夠經過Ctrl+C來控制本產品的執行。
  • 特有的測試用例加載模式:對測試用例加載的模式和市面上的性能測試產品都不同,用戶能夠將CBenchmark當作第三方庫編碼進入測試代碼,也能夠將CBenchmark當作工具,在執行的時候動態加載測試代碼以產生壓力.

本產品理論支持全部的服務端性能測試。
對於非標準協議的性能測試,我推薦您使用本產品。

Eclipse的性能分析插件 jMechanic

jMechanic,一個分析Java程序的Eclipse插件。這個工具提供CPU Sampling和Heap Summary,進而讓開發者調整程序的性能。

Unix文件系統性能測試 Blogbench

Blogbench 是一個便攜的文件系統性能測試工具,用來模擬真實文件服務器的負載,經過模擬多線程的隨機讀寫操做來進行壓力測試。可用來測試文件系統的穩定性和對併發讀寫的支持能力。

Cougaar Memory Profiler

這個工具是用來調試在任何Java應用程序中的內存泄露和耗損. (不過在其首頁上稱此項目已經考慮要廢棄了)

性能測試框架 p-unit

p-unit 是一款開放源碼的性能測試框架,和 JUnit 不一樣,JUnit 關注的是測試案例的正確性,而 p-unit 不只關注測試案例的正確性,還收集測試案例的性能參數,默認狀況下,p-unit 收集測試案例的時間和內存消耗狀況,能夠產生文件,圖片,和 PDF 格式的報表。此外,p-unit 還支持參數化測試,多線程測試以及不一樣 Java 虛擬機性能之間的比較。

Web應用 性能和壓力測試 Wapt

開發一個全功能的和有用的Web應用程序是很繁瑣的,測試Web應用程序更加繁瑣。咱們必須確保Web應用程序的工做也沒有任何錯誤。咱們必須確保Web應用程序在運行時(數百或數千人是在同一時間使用的)平穩。

Wapt 是負載和壓力測試工具,爲您提供了一個易於使用的,一致的和符合成本效益的測試,Web服務器和內部網應用。

性能和負載測試工具 Faban

Faban 是Sun Microsystems 用純粹的Java 1.5+ 編寫的,並且在CDDL-1.0 許可下是開源的。Faban 彷佛只關心各類類型服務器的基準調教,包括Web 服務器。Faban 是爲高性能和緊湊調速而精心編寫的,所以任何測量都與服務器的真實性能儘量接近。例如,在沒有運行其餘Faban 代碼時收集基準調速數據,而只在基準調校過程締結以後才分析數據。要想得到最好的性能,則這是全部基準運行的慣用方法。

Faban 還以Web 應用程序的形式提供了很是良好的配置與管理平臺。爲了服務於該控制平臺(Web應用程序),Faban自身現已整合到了Tomcat 的服務器中。Tomcat 是Faban 的一部分,任何對Tomcat 和基準調校都感興趣的Java 開發者都能閱讀Faban 的文檔和源碼,並且可選擇性地參與Faban 的開發。若是您是一位Java 開發者,且正尋找最有特點、長期的調校解決方案,Faban 應該是您要用到的工具。

 

相關連接

項目主頁:http://java.net/projects/faban/

項目文檔:http://www.opensparc.net/sunsource/faban/www/index.html

Faban Quick Start Tutorial:http://www.testnscale.com/docs/QuickStartTutorial.html

FProfiler

FProfiler是一個很是快的Java profiler.它利用BCEL和log4j來記錄每一個方法從開始到結尾的日記.FProfiler能夠用來在你的應用程序,Servlet,Applet...中找出hotspots.

後端存儲性能測試工具 Postmark

Postmark 是由著名的 NAS 提供商 NetApp 開發,用來測試其產品的後端存儲性能。 Postmark 主要用於測試文件系統在郵件系統或電子商務系統中性能,這類應用的特色是:須要頻繁、大量地存取小文件。 Postmark 的測試原理是建立一個測試文件池。文件的數量和最大、最小長度能夠設定,數據總量是必定的。建立完成後, Postmark 對文件池進行一系列的事務( transaction )操做,根據從實際應用中統計的結果,設定每個事務包括一次建立或刪除操做和一次讀或添加操做,在有些狀況下,文件系統的緩存策略可能對性能形成影響, Postmark 能夠經過對建立 / 刪除以及讀 / 添加操做的比例進行修改來抵消這種影響。事務操做進行完畢後, Post 對文件池進行刪除操做,並結束測試,輸出結果。 Postmark 是用隨機數來產生所操做文件的序號,從而使測試更加貼近於現實應用。輸出結果中比較重要的輸出數據包括測試總時間、每秒鐘平均完成的事務數、在事務處理中平均每秒建立和刪除的文件數,以及讀和寫的平均傳輸速度。

全平臺性能測試工具 Geekbench

Geekbench是一款多平臺的性能測試工具。與同類軟件不一樣的是,它幾乎能夠運行在全部的已知PC架構系統上,包括了Windows、Mac OSX、以及各類Linux發行版。Geekbench的測試項目重點考察CPU和內存系統的運算能力,在測試完成後會給出具體得分供用戶參考比對。

WinRunner

Mercury Interactive公司的WinRunner是一種企業級的功能測試工具,用於檢測應用程序是否可以達到預期的功能及正常運行。經過自動錄製、檢測和 回放用戶的應用操做,WinRunner可以有效地幫助測試人員對複雜的企業級應用的不一樣發佈版進行測試,提升測試人員的工做效率和質量,確保跨平臺的、 複雜的企業級應用無端障發佈及長期穩定運行。

性能測試工具 ContiPerf

ContiPerf 是一個輕量級的測試工具能輕鬆地利用的JUnit 4的性能測試,測試案例,例如連續性能測試。它的靈感來自JUnit 4中與註釋簡單測試配置,以及用JUnitPerf的包裝性能測試單元測試的想法,但更強大和更容易使用。它使用定義測試執行的特色和性能要求的Java註解。您能夠標記一個測試運行必定次數,或將不斷提出必定的時間執行。

示例測試代碼:

  import org.junit.*; 
  import org.databene.contiperf.*;

  public class SmokeTest {

      @Rule
      public ContiPerfRule i = new ContiPerfRule();

      @Test
      @PerfTest(invocations = 5)
      @Required(max = 1200, average = 250)

      public void test1() throws Exception {
          Thread.sleep(200);
      }

  }

IronEye SQL

IronEye SQL這個輕量級的Java工具提供全部流動在數據庫與應用程序之間的SQL統計信息並用多張圖表展示.IronEye SQL能夠快速優化程序的性能.

Memcached 性能測試工具 Brutis

Brutis 是一個用 PHP 編寫的 Memcached 性能測試工具。

基準測試程序 Swingbench

Swingbench是一個免費的負載生成器(和基準測試程序),用於對oracle數據庫(10g,11g)進行壓力測試.  這個軟件是用Java開發的,所以能夠在多種平臺上運行,同時提供了一些擴展的API。 Swingbench可被用於驗證或測試諸如實時應用集羣、在線表格重建、在線備份和恢復等技術。Swingbench包含四種基準測試:  OrderEntry, SalesHistory, CallingCircle and StressTest.

 

 

ASP性能分析工具 mvc-mini-profiler

mvc-mini-profiler 是一個爲 ASP.NET MVC 編寫的小型的性能分析工具。

JMP

JMP是一個針對Java的剖析器.它被用來追蹤對象的使用和計算method的運行時間.它利用JVMPI接口來收集統計信息並與JVM相結合.JMP使用一個GTK+接口來顯示運行的狀態.

WEB應用壓力測試工具 JCrawler

JCrawler是一個開源的WEB應用壓力測試工具。經過其名字,你就能夠知道這是一個用Java寫的像網頁爬蟲同樣的工具。只要你給其幾個URL,它就能夠開始爬過去了,它用一 種特殊的方式來產生你WEB應用的負載。這個工具能夠用來測試搜索引擎對你站點產生的負載。固然,其還有另外一功能,你能夠創建你的網站地圖和再點擊一下, 將自動提交Sitemap給前5名的搜索引擎!

數據庫性能測試工具 DBT

DBT (Database Test Suite) 旨在建立一個數據庫工做負載的測試工具,用於模擬高負荷下的 OLTP 數據庫、OLAP 以及電商數據庫事務系統下的性能表現。

Java性能基準測試套件 SPECjvm2008

SPECjvm2008是一個觀測JRE運行性能的基準測試套件。它的測試用例涵蓋了大部分java基礎應用場景,是架構選型和VM性能評測不可多得的利器。

SPECjvm2008測試用例列表:(單位 ops/m 每分鐘操做數)
http://docs.google.com/View?id=dtbhrmv_661cg8j92cm

讓你的JavaScript運行更快 JSpeed

JSpeed engine analyzes different portions of your JS code for fragments which can be optimized, and substitutes them with faster code.

文件系統性能測試工具 Filebench

Filebench 是一款文件系統性能的自動化測試工具,它經過快速模擬真實應用服務器的負載來測試文件系統的性能。它不只能夠仿真文件系統微操做(如 copyfiles, createfiles, randomread, randomwrite ),並且能夠仿真複雜的應用程序(如 varmail, fileserver, oltp, dss, webserver, webproxy )。 Filebench 比較適合用來測試文件服務器性能,但同時也是一款負載自動生成工具,也可用於文件系統的性能。

J2EE性能測試工具 JXInsight

JXInsight 是一款對J2EE應用進行管理以及性能測試的商業工具軟件,JXInsight 可以幫助你發現你的應用存在問題的地方, 好比某個方法調用了事務卻關閉了JDBC鏈接, JXInsight能幫你自動發現。

*J

*J一個Java程序動態分析工具。這個工具包是爲兩個主要的目的服務:

1.幫助收集Java程序動態執行數據 
2.提供一個框架來快速簡便地分析這些收集到的數據。

前端網絡(性能)監測工具 berserkJS

berserkJS 是基於 Qt (C++跨平臺庫)開發的前端網絡(性能)監測工具。 它的核心功能是經過內置 webkit 收集由頁面實際網絡請求相關數據。 偏重於頁面上線前檢測與評估。

頁面性能分析工具,可用 JS 編寫本身的檢測、分析規則。 基於 Qt 開發,可跨平臺編譯,部署。內置基於 QtWebkit 的瀏覽器環境。 源碼需在目標系統中編譯後,可產生運行於 Windows / Linux / Mac 系統的可執行文件。 工程中自帶 Window 系統中動態編譯的可執行文件,此文件位於 bulid 目錄下。

JMemProf

JMemProf基於Web的內存剖析工具.JMemProf容許你擷取應用程序在運行時內存剖析信息.

文件系統性能自動化測試工具 Bonnie++

Bonnie++ 是一款文件系統的基準性能自動化測試工具,包括測試文件系統的讀寫能力、查找能力、建立新文件的能力,它經過一系列的簡單測試來生成文件系統的性能參數。其主程序提供兩種風格的測試:針對單個文件的數據庫風格的訪問測試和針對大量小文件的建立和刪除來模擬諸如 Squid , INN, 或者 Maildir 格式的 Email 這一類風格的訪問測試。 Bonnie++ 對三個方面作基準測試:數據讀、寫速度,每秒能夠完成的文件元數據操做次數。 Bonnie++ 12 項結果分爲 5 大類,分別是 Sequential Output (寫測試), Sequential Input (讀測試), Random Seeks (讀寫測試), Sequential Create (順序讀寫文件測試)和 Random Create (隨機讀寫文件測試)。

負載測試工具 benerator

benerator是創建在現實和有效的大容量測試數據基礎上的單元/集成/負載測試和展現安裝程序使用的框架。元數據的限制進口的系統和/或配置文件。數據能夠導入和導出到文件和系統。

InfraRED

InfraRED是一個用AspectJ開發的監測J2EE應用程序性能和診斷性能問題的工具。

JVM速度器 vm-j

VM (velocity Meter)速度器,主要是記錄java虛擬機JVM的信息,模仿jdk中的jconsole 的GUI監視工具 ,主要是內存信息,加載內,線程信息,JVM摘要的web工程,顯示效果以下:

JVM摘要:

加載內信息;

該項目是基於servlet3開發的,因此須要支持servlet3的web服務器如:tomcat7.0。
安裝是能夠直接下載war包放入web容器中,也能夠下載源碼本身封裝到本身項目中,實現後臺管理和JVM的監控。

採用的是:java+extjs4.0

JarAnalyzer

JarAnalyzer是一個用於.jar文件的依賴管理工具.JarAnalyzer可以在一個給定的目錄中分析全部jar文件並標識它們之間的依賴關係。輸出格式包括XML,一個用於把XML轉換成Html的樣式文件和一個.grph點格式的文件(能夠利用GraphViz來生成一張反應jar文件之間關係的圖形)。此外它還包括一個Ant任務能夠把JarAnalyzer做爲構建腳本的一部份。

性能管理工具 JStress

JStress是一個模塊化和分佈式的性能管理工具,用於應用程序服務器的負載測試。用Java開發,在設計上儘量的和 JUnit 同樣簡單。

 

BaukBench

BaukBench 是一個支持 HTTP /1.1 的性能測試功能,支持靜態和動態內容,併發鏈接數沒限制,有着詳細的統計信息,對CPU和內存要求不高

Atlassian Profiling

一個可在運行期剖析應程序的簡單框架.它主要是運用在J2EE Web應用程序.

瀏覽器性能測試工具 RoboHornet

Google剛剛發佈了RoboHornet,這是一個瀏覽器的性能測試工具,不只能夠測試Javascript還包括不少其它項目,好比佈局性能和localStorage。Google將其在GitHub開源,但願社區和開發者能參與到開發中來。

Google稱如今有太多的Javascript測試工具,Google本身也有一個Octane工具,但如今的開發編程語言不只僅是在將靜態網頁變成動態應用,更須要多多考慮快速瀏覽的問題,Google但願RoboHornet能給測試帶來一些新鮮血液。

介紹內容來自谷奧

benchbase

benchbase 是一個項目用來存儲和管理 JMeter 或者 FunkLoad 壓力測試結果和監控日誌。提供詳細的報表和圖表。

應用性能分析工具 HPC Toolkit

HPCToolkit 是一組多平臺的工具,用於應用程序的性能分析。

FacesTrace

FacesTrace 是一個用於蒐集JSF應用程序執行信息和性能指示,並將這些結果以友好的界面展現給最終用戶的開源項目。

程序性能跟蹤工具 LTTng

一個高效的Linux 的Tracing Tools。它可以幫助發現並行環境下的性能問題及bug,甚至跨系統tracing也是可能的。

開源數據庫性能測試工具 osdb

osdb (Opensource Database benchmark) 是一個開源的數據庫性能測試工具,目前已經支持 MySQL、PostgreSQL 和 Informix 三個數據庫。

Caliper

 

Caliper是Google用來編寫、測試和查看 JavaMicrobenchmarks 結果的開源框架。

最簡單的 Caliper benchmark 代碼以下:

 

public class MyBenchmark extends SimpleBenchmark {
    public void timeMyOperation(int reps) {
      for (int i = 0; i < reps; i++) {
        MyClass.myOperation();
      }
    }
  }

 

SlimScrooge

Slim Scrooge 是一個優化層,用於確保你的 Rails 應用只在須要的時候才從數據庫獲取內容,最大限度的下降網絡流量,減小 SQL 執行以及和 Ruby 數據類型的轉換過程。是 Scrooge 的優化版本。

Seam-Perf4j

Seam-Perf4j 是一個用來將 Java EE 5.0的輕量級 Seam 框架和性能檢測庫 Perf4j 進行集成的 Java 庫。

網絡基準測量工具 netio

NETIO是經過NetBIOS、UDP和TCP協議測量網絡淨生產量的網絡基準(Unix只支持TCP和UDP)使用各類各樣的不一樣的包大小。

數據庫性能基準測試 DB-Webbench

Webbench 是一款數據庫性能基準測試程序,模擬博客真實應用對數據庫所作操做進行性能測試。不僅僅能支持對主流關係數據庫MySQL, Oracle, Postgres的測試,還能對非關係型數據庫如Redis, MongoDB等進行性能測試。其主要特徵是對應用的模擬真實性高、方便使用、靈活性高。

開發Webbench的緣由是由於現有性能基準測試程序存在如下不足。

  • DBT2: DBT2爲TPC-C的開源實現,其應用特徵爲更新事務多,讀事務少,與博客應用相差巨大,且不具有靈活性,不能只測試某類簡單操做,不利於性能優化;
  • sysbench: sysbench靈活性高,包含9類操做,每種操做均可單獨測試,對性能優化有很大幫助,但測試只採用一張定長表,操做類型也與博客等Web應用相差很大,如主鍵上的範圍查詢、根據輔助索引後的排序等操做在Web應用中不多出現,所以sysbench的結果對驗證數據庫對Web應用的適應性沒多大幫助;

Webbench目前只包含模擬博客應用的Blogbench。在Blogbench中有如下7種操做:

  • list-blog
  • show-blog
  • update-access
  • update-comment
  • show-siblings
  • publish-blog
  • update-blog

每種操做的比例均可以單獨設置。

負載測試工具 CLIF

CLIF 是一個模塊化的靈活發佈的複雜測試平臺,可定爲多種目標系統,支持Swing、Eclipse GUI 和命令行界面的應用測試。可測試包括內存佔用、CPU使用率等指標,提供一個基於Eclipse的嚮導。

JBossProfiler

JBossProfiler是一個利用JVMPI系統基於log的剖析器。它使用一個C開發的代理從JVM捕獲事件並把它們記錄到磁盤中。一個運行在JBoss或其它機器上的Web應用程序可被用來分析這些日記。

性能測試工具 simperf

Simperf 是一個簡單的性能測試工具,它提供了一個多線程測試框架

Example:

1. 在代碼裏使用Simperf

Simperf perf = new Simperf(50, 2000, 1000, 
    new SimperfThreadFactory() {
        public SimperfThread newThread() {
            return new SimperfThread();
        }
    });
// 設置結果輸出文件,默認 simperf-result.log
perf.getMonitorThread().setLogFile("simperf.log");
// 開始性能測試
perf.start();

2. 在命令行裏使用Simperf

public class SimperfCommandTest {
    public static void main(String[] args) {
        SimperfCommand simCommand = new SimperfCommand(args);
        Simperf perf = simCommand.create();
        if (perf == null) {
            // 參數解析失敗時會返回null
            System.exit(-1);
        }
        perf.start(new SimperfThreadFactory() {
            public SimperfThread newThread() {
                return new SimperfThread();
            }
        });
    }
}

執行命令:

java SimperfCommandTest -t 10 -c 10 -i 1000
參數說明:
usage: SimperfCommand options
 -c,--count       [*] number of each thread requests count
 -i,--interval    [ ] interval of print messages, default 1000
 -j               [ ] generate jtl report
 -l,--log         [ ] log filename
 -m,--maxtps      [ ] max tps
 -t,--thread      [*] number of thread count

3. 在Junit4裏使用Simperf

public class SimperfTestCaseTest extends SimperfTestCase {
    private Random              rand;
    @Test
    @Simperf(thread = 2, count = 5, interval = 1000)
    public void testXxx() {
        try {
            Thread.sleep(1000);
        } catch (Exception e) {
        }
        boolean result = rand.nextInt(10) > 1;
        Assert.assertTrue("隨機生成結果", result);
    }
}

Embedded Profiler

Embedded Profiler 是低開銷的 C++分析器,經過編譯器(GCC,MinGW的,或MSVC)自動化儀表的功能實現。分析能夠自動或手動完成。自動分析生成一個完整的調用樹,不須要修改代碼。手動分析須要使用EProfiler API,指定要分析的部分代碼。在性能分析器,GUI應用程序設計的幾點見解溫馨的日誌分析,能夠打開生成的日誌。

GCC擴展 StarPU

StarUP 一般用來幫助高性能的類庫和編譯環境探索不一樣體系結構的多核架構。

StarPU is a set of GCC extensions and associated runtime system intended to facilitate the programming of heterogeneous systems - computers with a programmable graphics processing unit, for example. "StarPU typically makes it much easier for high performance libraries or compiler environments to exploit heterogeneous multicore machines possibly equipped with GPGPUs or Cell processors: rather than handling low-level issues, programmers may concentrate on algorithmic concerns."

Parallel Performance Wizard

Parallel Performance Wizard (PPW) 是爲 UPC,MPI,SHMEM 等程序設計的性能分析工具。它經過 GASP 接口提供了一個易於使用的界面和 GAS 編程模型緊密的整合。這個項目是一個針對新興的性能分析理論和工具的理論的一部分。

JTreeProfiler

一個基於JVMPI的Java剖析器。它在一個XML文件中收集全部方法被調用的記錄並把它們展現TreeMap中。

性能優化工具 Starfish

Starfish 是一個用於大數據分析的自調優系統,這是一託管 Github 上的項目,但目前訪問是 404,不清楚爲什麼。Starfish 至關因而一個性能優化工具,可以讓 Hadoop 用戶和應用達到最佳性能,包含三個組件:

1. Profiler
2. What-if Engine
3. Optimizer

Scrooge

Scrooge (守財奴) 是一個 Rails 的加強,用於下降應用程序訪問數據庫的次數。

akin520 memsql壓力測試工具 workload-simulator

workload-simulator 是一個用 Python 開發的專用於 MemSQL 的壓力測試工具。

clojure-web-server-benchmarks

clojure-web-server-benchmarks 包含一組對各類 Web 服務器的性能測試腳本,下圖是已經作過測試的服務器:

CassJMeter

CassJMeter 是一個 JMeter 插件用來運行 Cassandra 測試。

相關文章
相關標籤/搜索