哪款網站壓力測試工具值得推薦?


騰訊WeTest出品的線上伺服器壓力測試服務WeTest伺服器壓力測試 最高可至億級並發,實時查看性能數據報表,專家級性能優化建議

對於簡單介面測試和評估容量的,只需要輸入url和配置下人數的參數,就可以在一兩分鐘內快速發起壓力。

我們通常要分析的性能數據像TPS,在線人數,事務數,網路吞吐,CPU,內存,磁碟IO等性能報告里都有。報告是可視化的圖表形式展現的。

亦可以自己編寫機器人,深度結合自身業務場景進行壓測。

其他簡單的協議測試或是穩定性測試,也可滿足。

壓測本身是個高要求的工作,很多人還只知皮毛,對壓測原理和應該達到什麼效果不得而知,因此能力的提升也很重要,可以善用他們的社區,並關註定期舉行的公開課培訓


ab 這些都是測試一到幾個url的,不能打出真實壓力

可以考慮 load runner 和 tcpcopy


目前國內業內用的較多的還是loadrunner和Jmeter,Loadrunner的話建議買《精通軟體性能測試與LoadRunner實戰》,裡面介紹的很詳細,畢竟性能測試不是說會用工具就可以了,工具其實很簡單,有一點編程基礎的話一星期就能掌握了。如果只是web端性能測試的話建議學習Jmeter,這樣的話後續學習移動端平台的Appium就很方便了


必須要推薦一下tcpcopy呀。拷貝線上實際流量,好工具!


我推薦siege,遠比ab強大好用


apache AB

webbench


負載/壓力測試工具可以讓你了解應用程序在負載/壓力下的執行情況,它可以暴露其中的問題,並進行改進。因此,負載/壓力測試是確保系統運行效率並不可少的部分。小開向你介紹 10 個開源的負載/壓力測試工具,包含但不限於網站負載/壓力測試工具,歡迎補充。

1、Apache JMeter(JMeter首頁、文檔和下載 - 壓力測試工具 - 開源中國社區)

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

2、Httperf(Httperf首頁、文檔和下載 - web壓力測試工具 - 開源中國社區)

Httperf 是個 web 伺服器的性能測試工具,來自惠普公司。Httperf 提供了靈活的生成各種 HTTP 負載來測試伺服器的性能,提供可靠、高性能的工具,支持 HTTP/1.1 和 SSL。

3、OpenSTA(OpenSTA首頁、文檔和下載 - web性能測試工具 - 開源中國社區)

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

4、loadUI(loadUI首頁、文檔和下載 - 負載測試工具 - 開源中國社區)

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

5、Grinder(Grinder首頁、文檔和下載 - 負載測試框架 - 開源中國社區)

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

6、JCrawler(JCrawler首頁、文檔和下載 - WEB應用壓力測試工具 - 開源中國社區)

JCrawler 是一個開源的 WEB 應用壓力測試工具。通過其名字,你就可以知道這是一個用 Java 寫的像網頁爬蟲一樣的工具。只要你給其幾個 URL,它就可以開始爬過去了,它用一 種特殊的方式來產生你 WEB 應用的負載。

7、Locust(Locust首頁、文檔和下載 - Python 負載測試工具 - 開源中國社區)

Locust 是一個開源負載測試工具。Locust 是非常簡單易用,分散式,用戶負載測試工具。Locust 主要為網站或者其他系統進行負載測試,能測試出一個系統可以並發處理多少用戶。

8、Siege(Siege首頁、文檔和下載 - 壓力測試和評測工具 - 開源中國社區)

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

9、http_load(http_load首頁、文檔和下載 - web伺服器的吞吐量與負載測試 - 開源中國社區)

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

10、Webbench(Webbench首頁、文檔和下載 - 網站壓力測試工具 - 開源中國社區)

Webbench 是有名的網站壓力測試工具,它是由 Lionbridge 公司開發。Webbech 能測試處在相同硬體上,不同服務的性能以及不同硬體上同一個服務的運行狀況。

文章轉載自【開源中國社區】:還在為測試發愁?10 個開源的壓力/負載測試工具


我經常用 Apache JMeter。


google tsung和wrk的對比情況,結果看到這個問題。

居然沒人提到buger/gor · GitHub。。。走過路過不要錯過,需要copy線上流量的童鞋趕緊用起來,是時候拋棄tcpcopy了!

至於純粹的壓力測試,我推薦wrk。


十個免費的Web壓力測試工具


目前用過的工具里,加壓能力最強的是wrk:wg/wrk · GitHub。


loadrunner 用過的說一下:能夠真實模擬個人在網站的相關操作流程,而且能夠批量導入不同的用戶帳戶完成登錄等操作--保證測試的真實性。

然後在檢測中能夠獲得較多參數,不僅僅是CPU內存等利用率等信息,同時還有相關的圖表展現。

loadrunner 是企業級的軟體,如果是簡單網站的話,沒有這個必要,對於複雜一點的應用,同時十分關鍵的話,進行一下測試還有必要的。。


最近在搞Tsung,中文資料太少,上來就要啃文檔。每個版本的配置方法又不一樣,老闆派的活要用最新版,英語渣沒辦法只好硬著頭皮啃下去。

太長沒有目錄不看系列,可以移步我的博客

Tsung學習 - Abby同學思考的地方 - 博客頻道 - CSDN.NET

意外收穫是,必應的專業名詞翻譯比百度的看著像人話。

Tsung

簡介

Tsung是指開源的、多協議的、分散式的壓力測試工具。

Tsung的設計目的是模擬真實用戶測試基於IP的伺服器程序的伸縮性和性能,可以分步在多個客戶機,並能夠模擬成千上萬的虛擬用戶數並發。

根據erlang語言開發。

Tsung的主要特點:

(1)高性能:負載可以分布在一個集群客戶機上;

(2)拆建機制支持多協議:目前支持HTTP、WebDAV、SOAP、PostgreSQL、MySQL、LDAP 、XMPP/Jabber、BOSH、MQTT、AMQP和SSL;

(3)利用OS IP別名技術在單個機器上使用多IP;

(4)伺服器監控(CPU,內存,網路流量),支持SNMP、Rrlang、MUnin方式,方便找出瓶頸;

(5)XML方式的配置文件;

(6)模擬真實的流量,虛擬用戶的發獃時間和抵達律使用隨機的概率分布;

(7)HTML或圖表的方式報告測試結果。

HTTP相關的功能:

(1)支持HTTP 1.0和HTTP 1.1;

(2)符合GET, POST, PUT, DELETE, HEAD, OPTIONS和PATCH要求;

(3)全自動片上管理;

(4)「GET if-modified since」式的請求;

(5)WWW基本認證和OAuth 1.0簡要;

(6)用戶代理支持;

(7)可以添加任何HTTP頭部;

(8)使用Web瀏覽器的記錄會話代理模式;

(9)SOAP支持使用HTTP方式;

(10)HTTP伺服器或代理伺服器的壓力測試。

WebDAV相關的功能:

WebDAV(RFC 4918)插件是HTTP插件的一個超集。它增加了以下特點(支持版本擴展至WebDAV(RFC 3253)):

DELETE:刪除某個內容;CONNECT:用於代理進行傳輸(如使用SSL);PROPFIND:查看;PROPPATCH:設置;COPY:複製;MOVE:移動;LOCK:鎖定;UNLOCK:解鎖;MKCOL:創建集合(文件夾) ;REPORT:報告;OPTIONS:詢問可以執行哪些方法;MKACTIVITY:提交信息;CHECKOUT:導出;MERGE:合併。

記錄的深度:如果超時會重寫目標、URL和 lock-token頭。

Jabber/XMPP相關的功能:

(1)(純文本、摘要和SIP摘要)的認證;

(2)存在和登記信息;

(3)聊天信息的在線或離線的用戶;

(4)MUC:加入空間,在空間中發送、更改信息;

(5)設置名單和獲取請求;

(6)全球用戶同步可以設置具體的活動;

(7)BOSH和XMPP在WebSocket;

(8)原始的XML信息;

(9)PubSub;

(10)虛擬主機支持多實例;

(11)隱私列表:獲取所有隱私列表名單,將列表設置為活動。

PostgreSQL相關的功能:

(1)基本認證和MD5認證;

(2)簡單協議;

(3)擴展協議(新版本1.4.0);

(4)記錄會話的代理模式。

MySQL相關的功能:

僅適用於MySQL 4.1及更高版本。

(1)只有 (MySQL &> = 4.1)可以進行安全認證;

(2)基本查詢

WebSocket相關的功能:

目前僅支持RFC 6455。作為伺服器的一種,類似TCP和UDP等傳輸協議,可以發送任一應用特定的協議數據。可以找到作為examples/ websocket.xml會話類型的例子。

作為一個伺服器類型和會話型。

AMQP相關的功能:

目前僅支持AMQP-0.9.1。可以找到作為examples/ websocket.xml會話類型的例子。

(1)基本的發布和佔用;

(2)發布確認和用戶ACK;

(3)QoS。

MQTT相關的功能:

僅支持MQTT v3.1。可以找到作為examples/ websocket.xml會話類型的例子。

(1)連接MQTT代理與方案;

(2)發布MQTT的信息到代理;

(3)訂閱/退訂主題;

(4)支持QoS 0和Qos1。

LDAP相關的功能:

(1)綁定;

(2)添加、修改和查詢;

(3)STARTTLS。

Raw plugin相關的功能:

(1)兼容TCP / UDP / SSL;

(2)原始信息;

(3)no_ack,局部或全局的ACK信息。

安裝

此程序包已經通過 Linux,FreeBSD 和 Solaris 上的測試,有 Mac OS X 上可用的埠。它應該工作在 Erlang 支持平台上 (Linux、 Solaris,* BSD、 Win32 和 Mac OSX)。

在 Mac OS X 上,你可以安裝Tsung (http://brew.sh/)。

附件

Erlang/OTP R14B: 升級 (下載Erlang Programming Language)。Erlang 是 Fedora 和 Debian/Ubuntu 資源庫的一部分。

pgsql 模塊(PostgreSQL 插件) ︰ 可用在 http://jungerl.sourceforge.net/ 的信息源。該模塊包含源碼和Tsung二進位文件,已經通過EPL許可。

mysql 模塊(mysql 插件) ︰ 可用在 http://www.stacken.kth.se/projekt/yxa/ 的信息源。改進後的模塊包含源碼和Tsung二進位文件,已經通過BSD 許可。

eldap 模塊 (LDAP 插件) ︰ 可用在 http://jungerl.sourceforge.net/ 的信息源。該模塊包含源碼和Tsung二進位文件,已經通過 GPL 許可。

mochiweb libs(解析XPath,可以選擇用於 HTTP 插件中的動態變數)︰可用在 https://github.com/mochi/mochiweb 的信息源。該模塊包含源碼和Tsung二進位文件,已經通過 MIT 許可。

gnuplot和perl5(可選;作為tsung_stats.pl 腳本的圖形輸出)。該模板工具包用於HTML報告(見 http://template-toolkit.org/)。

python 和 matplotlib (可選; 作為Tsung繪圖儀的圖形輸出)。

對於分散式測試,您需要 SSH 訪問遠程機器沒有密碼 (使用 RSA 或 DSA 密鑰沒有密碼或 ssh 代理)。另外還支持rsh。

bash

編譯

編譯Tsung,從Index of /dist下載最新版本並運行:

./configure

make

make install

如果需要下載最新的開發版本,使用git:

https://github.com/processone/tsung.git,請參閱 https://github.com/processone/tsung。

也可以生成包與讓 deb (關於 Debian 和 Ubuntu) 並使 rpm (關於 Fedora,RHEL 和其他基於 rpm 的分布)。

配置

默認的配置文件是的 ~/.tsung/tsung.xml (在 /usr/share/doc/tsung/examples 中有幾個示例文件)。

日誌文件保存在 ~/.tsung/log /。創建一個新的子目錄,以每個測試使用的當前日期和時間作為名稱,如 ~/.tsung/log/20040217-0940年。

運行

兩個指令設置在$PREFIX/bin目錄︰tsung and tsung-recorder。個人網頁提供這兩個指令。

$ tsung -h
Usage: tsung & start|stop|debug|status
Options:
-f & set configuration file (default is ~/.tsung/tsung.xml)
(use - for standard input)
-l & set log directory where YYYYMMDD-HHMM dirs are created (default is ~/.tsung/log/)
-i & set controller id (default is empty)
-r & set remote connector (default is ssh)
-s enable erlang smp on client nodes
-p & set maximum erlang processes per vm (default is 250000)
-X & add additional erlang load paths (multiple -X arguments allowed)
-m & write monitoring output on this file (default is tsung.log)
(use - for standard output)
-F use long names (FQDN) for erlang nodes
-L & SSL session lifetime (600sec by default)
-w & warmup delay (default is 1 sec)
-n disable web GUI (started by default on port 8091)
-k keep web GUI (and controller) alive after the test has finished
-v print version information and exit
-6 use IPv6 for Tsung internal communications
-x & list of requests tag to be excluded from the run (separated by comma)
-h display this help and exit

使用Tsung的常用方法是運行 tsung -f myconfigfile.xml。

該指令將列印當前創建的測試的日誌目錄,直到測試結束。默認情況下嵌入式的 web 伺服器將控制器節點上啟動並將監聽 8091 埠 (這可以使用-n 選項被禁用)。

基準方法

HTTP/WebDAV

1.Web 伺服器的基準測試

(1)記錄一個或多個會話 ︰ tsung-recorder開始,然後配置瀏覽器以使用Tsung代理記錄器 (監聽埠是 8090)。將創建一個會議文件。For HTTPS recording, use http://- instead of https:// in your browser.;

(2)編輯/組織方案,通過在配置文件中添加記錄的會話;

(3)寫小代碼的動態部分,如果需要將動態標記在場景中;

(4)測試和調整方案來獲得一個好的負載進程。這高度依賴於應用程序和目標伺服器的大小。計算方案的正常服務期限和用戶與相對期限之間的使用時間間隔來估算為每個給定的相位的並發用戶數;

(5)首次啟動應用程序參數設置基準 ︰ Tsung開始 (運行Tsung查看更多選項);

(6)等待測試結束或用手動停止Tsung (也可以在測試期間生成報告 (請參閱統計和報表) ︰ 每隔 10 秒更新統計信息)。當前活動的摘要,使用Tsung狀態。

(7)分析結果、 調整參數,然後測試下一個基準。

2.WebDAV

與HTTP 的方法相同︰ 首先錄製一個或多個會話 ︰ tsung-recorder -p webdav開始。

3.代理伺服器的基準

默認情況下,HTTP 插件用於測試 HTTP 伺服器的基準,但也可以用於測試 HTTP 代理伺服器的基準。要做到這一點,必須在選項部分中添加 ︰

&

LDAP

可錄製的LDAP插件尚未實現,需要自己定義編寫,詳細信息可以參閱6.6. Sessions。

PostgreSQL

與HTTP 的方法相同︰ 首先錄製一個或多個會話 ︰ tsung-recorder -p webdav開始。這將啟動代理伺服器監聽埠 8090 ,並將請求代理到 127.0.0.0:5432。

選擇另一個埠和/或地址 ︰ tsung-recorder -L 5432 -I 10.6.1.1 -P 5433 -p pgsql開始。這將啟動代理伺服器監聽埠 5432 並將請求代理到 10.6.1.1:5433。

MySQL

可錄製的LDAP插件尚未實現,需要自己定義編寫,詳細信息可以參閱6.6. Sessions。

Jabber/XMPP

1.概述

這一段解釋如何為Jabber/XMPP 寫一個會話。

有兩個區別 HTTP 與Jabber的測試 ︰

無法為Jabber進行錄製,需要手動編寫您的會話。Jabber/XMPP 中提供的示例。

Jabber 插件沒有解析 XML;替代使用數據包進行確認。

2.信息的確認

由於 Jabber 插件沒有解析 XML (從歷史上看,它是出於性能原因),需要一種辦法確認請求完成。利用ack 屬性有3種可能性 ︰

ack ="local"從伺服器收到數據包,就認為請求被完成。因此如果你不需要從伺服器響應請求來使用本地ack,它將等待永遠 (或直到超時)。

ack ="no_ack"請求一旦被發送即視為已經完成 (不等待傳入的數據)。

ack ="global"同步用戶。其主要用途是等待所有用戶在發送郵件之前的連接。要做到這一點,將設置global ack 請求 (可以是第一次出現msg):

& & &

指定用戶連接數 ︰

&

為確保完全 global_number 用戶已啟動,請將 maxnumber 屬性添加到用戶 ︰

&&

如果未指定 maxnumber,global ack 將重置每個 global_number 用戶。

雙向的存在

1.2.2 中的新增功能 ︰ 此版本增加了新的選項為一個會話。如果你在 &標籤中設置屬性 bidi (用於雙向): &< 會議...bidi ="true">,然後將分析傳入伺服器的消息。目前,只有訂閱請求的名單可以被處理 ︰ 如果用戶收到一個訂閱請求 (&< 駐留...類型 ="訂閱">),它會回應與 &< 駐留...類型 ="訂閱"> 消息。

狀態 ︰ 離線,連接和在線

可以向離線或聯機用戶發送消息。用戶發出存在︰初始信息(此消息之前,用戶狀態是已連接的)則認為該用戶在線 。

如果你想要切換回連接之前進入離線狀態,您可以使用存在︰終態信息 ︰

存在 ︰ 終態要做兩件事情 ︰

從在線用戶列表中刪除客戶端,並將它們移動到已連接用戶列表;發送一個類型 ="unavailable"的存在更新的廣播。

存在 ︰ 終態是可選的。

警告 ︰ 這是 1.2.0中新增的,在早期版本中,只有 2 種狀態可用 ︰ 在線和離線;只要用戶已連接即認為是在線的。

認證

下面是可能的認證方法的配置示例。注 ︰ 這裡使用的正則表達式只是作為例子 — — 它們是否需要改變取決於具體的伺服器的構成信息 (請參閱 Websocket 選項的密碼設置6.5. Setting options)。

簡單認證-發送明文密碼 ︰

&

& && &

&&

& & && &
& && &
& ...&

XMPP JEP-0078中所述摘要式認證︰非SASL 驗證 http://www.jabber.org/jeps/jep-0078.html。

&

&
&
&
&&
&

&&

& & && &
& && &
& ...&

sip 摘要式認證

&

& && &

&& & &
&
&(.*)&"/&>
&&
&

& && && ...&

保密列表測試

提供兩個操作作為基本保密列表的負載測試 ︰

privacy:get_names 獲取所有名稱列表,存儲伺服器對給定用戶的保密列表;

privacy:set_active為活動設置預定義的名稱列表。列表名稱確定從 JID,例如如果用戶 JID 是"john@average.com",那麼該列表名稱是"john@average.com_list"。應該妥善處理伺服器資料庫,以確保存在這樣一個列表。

使用代理記錄器

記錄器有三個插件 ︰ HTTP,WebDAV,PostgreSQL。

運行tsung-recorder -p &,而插件可以是 http,webdav 或 pgsqlPostgreSQL。默認插件是 http。

代理伺服器正在監聽埠 8090,可以通過-L 埠號更改埠。

要停止它,請使用tsung-recorder停止。

錄製文件創建為 ~/.tsung/tsung_recorderYYYMMDD-HH:MM.xml;如果它不工作,試一下~/.tsung/log/tsung.log-tsung_recorder@hostname。

在錄製期間,可以在 XML 文件中添加自定義的標記,用於設置或注釋 ︰ tsung-recorder record_tag 「&』『

創建一個會話後,可以將它插入主配置文件中,手動編輯該文件,或通過實體聲明,例如︰

&
...&
mysession1;&

PostgreSQL

對於 PostgreSQL,代理將連接到伺服器 127.0.0.1 IP 和埠 5432。使用-I serverIP更改IP,使用-P 埠號來更改埠。

HTTP and WEBDAV

對於 HTTP,在瀏覽器中將https://替換為http://- instead。

1.2.2 中的新增功能 ︰ 為 HTTP配置記錄器時可以使用父代理 (但這不適用於 https)。添加-u 選項來啟用父代理伺服器,並使用-I serverIP 來設置 IP ,-P 埠號來設置父埠。

了解tsung.xml配置文件

1.文件結構

默認的編碼是UTF-8。你可以使用不同的編碼,如:

&
Tsung標籤的場景
&&
...&

如果您添加屬性 dumptraffic ="true",所有的流量將被記錄到一個文件。

Warning

this will considerably slow down Tsung, so use with care. It is useful for debugging purpose. You can use the attribute dumptraffic=」light」 to dump only the first 44 bytes.(這將會大大減緩Tsung,因此需要小心使用,用於調試,您可以使用屬性 dumptraffic ="光"來轉儲,只有第一次是 44 個位元組。)

1.4.0 版本以後,使用 dumptraffic=」protocol「在具體的日誌中記錄每個協議。目前只支持 HTTP ︰ 在 CSV 文件中記錄所有請求,包含下列數據 ︰

#date;pid;id;http method;host;URL;HTTP status;size;duration;transaction;match;error;tag

領域

描述

date

請求結束時間(自1970-01-01 00:00:00 UTC秒)

pid

Erlang進程

id

Tsung用戶ID

host

伺服器主機名

URL

URL(相對)

HTTP

HTTP響應狀態的狀態(200,304,等)

size

響應的大小(以位元組為單位)

duration

請求的持續時間(毫秒)

transaction

事件的名稱(如果有)

match

如果match是在請求定義:match|nomatch(最後&如果定義了幾個)

error

HTTP錯誤的名字(或空)

tag

如果請求被標記即為標籤名,否則是空標籤

警告:一般情況下 (幾個Tsung客戶端使用),生成的文件將不進行排序,所以你可能需要分析後再進行排序。

重負荷測試 (每秒數萬名請求),協議日誌記錄可能過載的控制器。這種情況,可以改用 protocol_local。日誌文件被寫入本地的從屬機,需要在測試結束後手動合併日誌。

日誌級別也可以在性能上產生很大的影響 ︰ 負荷過高時需要提出警告。

可能的值有 ︰emergency緊急,critical關鍵,error錯誤,warning警告,notice (default)通知 (默認值),info信息,debug調試

為了詳細日誌記錄,調試和設置日誌級別對Tsung重新編譯再進行調試。

2.客戶端與伺服器

客戶端與伺服器的定義

2.1.基本設置

對於非分散式負載,基本的設置如下︰

&
&&

&
&&&

在同一主機和Erlang 虛擬機上啟動負載作為控制器。

伺服器是群集的入口,可以添加多個伺服器,默認情況下每個伺服器權重為1,每個會話可以按權重選擇任一伺服器。可以為每個伺服器設置權重(權重可以是整數或浮點數)︰

&
&&
&&&

(在 1.5.0 版以後,未實現選擇權重,循環演算法用來選擇伺服器)。

類型可以是 tcp、 ssl、 udp (對於 IPv6,使用 tcp6,ssl6 或 udp6; 只有在版本 1.4.2中可以更新和使用) 或 websocket (僅限在 1.5.0 版中可以更新和使用))

這也是一個特定的BOSH類型 ︰ bosh加密的BOSH,和 bosh_ssl 的加密連接

2.2.高級設置

下一個示例是更複雜的分散式測試及幾個先進功能的展示 ︰

&
&
&&
&&
&
&&

&
&&&

可以通過幾個虛擬 IP 來模擬更多的機器。負載平衡器通過客戶端的 IP 分配伺服器群集之間的通信流量是非常有用的。1.1.1 中的新增功能 ︰ IP 不再是強制性。如果未指定,將使用默認的 IP。

1.4.0新增︰使用 & 來掃描給定介面上的所有 IP 別名 (此示例中的 eth0)。

在此示例中,第二台機器用於Tsung群集,擁有更高的權重和 2 個cpu。兩個Erlang 虛擬機將用於佔用CPU的數目。

注意:即使 Erlang VM 現在能夠處理幾個 Cpu (erlang SMP),評測表明,使用一個虛擬機可以更有效地應對Tsung客戶端,每個 CPU (SMP 禁用)。只有控制器節點採用SMP erlang。因此,cpu 數應該等於核心節點的數量。如果你喜歡使用 erlang SMP,添加-s 選項來啟動Tsung (和不在配置文件中設置 cpu)。

默認情況下,負載在所有 CPU (默認情況下一個客戶端對應一個 CPU) 上是均勻的分布。權重值 (整數) 可以用於考慮到客戶端機器的速度。例如,如果一個客戶端權重為 1 、其他客戶端的權值為 2,第二次啟動的用戶數將是第一次的兩倍(所佔比例為1/3 和 2/3)。在前面的示例中的第二個客戶端有2個CPU、權重為3,則每個CPU的權重為1.5。

Maxusers 參數用於避開由單一進程開啟嵌套最大數量的限制 (默認情況下1024上有很多OS ) 和缺乏選擇的系統調用的可伸縮性。高於限制的用戶數目時,將啟動一個新的 erlang 虛擬機來處理新的用戶。Maxusers 的默認值是 800。啟用內核投票,用於 maxusers (例如 30000) 並且不影響性能的一個非常大的值 (但是別忘了OS的上限,ulimit-n,請參閱為什麼沒有 error_connect_emfile 錯誤?)。

注意:是否您使用Tsung主從式,主機的方法分發給從機。如果會話包含數個請求,從機將按順序執行每個這些請求。

2.3.通過作業調度程序運行Tsung

Tsung能夠為客戶端提供一個批處理/作業調度器的節點列表。它目前處理 PBS/力矩,LSF 和OAR。設置 type 屬性為batch即可實現此功能,例如 ︰

&

瀏覽節點上的IP 別名來獲得批調度器,使用 scan_intf 如下 ︰

&

3.監測

Tsung能夠通過遠程代理程序用幾個後端監控遠程伺服器進行通信。這在 &部分中進行配置。現有的統計數據是 ︰ CPU 活動、 平均負載和內存使用情況。

注意,可以通過監控任務管理器獲得節點 ︰

&&

支持以下幾種類型的遠程代理 (erlang 是默認值) ︰

3.1.Erlang

通過Tsung啟動遠程代理。使用 erlang 通信來檢索統計信息的伺服器的活動。例如,下面是監測定義基於 Erlang 代理商,為6台計算機的群集 ︰

&
&&
&&
&&
&&
&&
&&&

注意:受監控的計算機要能夠聯網,必須允許 erlang 通信 (沒有任何防火牆更好)。SSH (或 rsh) 需要配置為允許無密碼連接上。否則可能無法正常工作,必須使用相同版本的 OTP !

如果不能在遠程伺服器上安裝erlang,可以使用其他可用的代理。

1.5.1 版本中的新增功能。

erlang 可用來監視與 mysqladmin與mysql 資料庫。使用方法如下︰

&&
&&

速率統計︰mysql線程和問題(查詢)的數目。

3.2.SNMP

如果 SNMP 監控是首選,那麼關鍵字 snmp 可以取代 erlang 關鍵字。他們可以混合使用。1.2.2版後,可以自定義 SNMP 版本、 群落和埠號。使用管理信息基礎 (MIB) 中網 snmp 提供(參見

10. Frequently Asked Questions

&
&
&&
&
&
&&

默認版本是 v1,默認群落是public、默認埠是161。

1.4.2版後,可以自定義從 SNMP 伺服器,使用一個或多個 oid 元素檢索的對象標識符 (OID):

&
&
&
&&

類型可以是樣品、 計數器或款項,也可以選擇定義 (使用 erlang 語法) 函數應用值 (eval 屬性)。

3.3.Munin

新版本 1.3.1 中。

Tsung可以從 munin 代理檢索數據節點 (見

http://munin-monitoring.org/wiki/munin-node)。類型關鍵字必須設置為 munin,例如 ︰

&
&
&&&

4.定義荷載的進展

4.1.隨機生成的用戶

負載進程通過定義幾個階段點來設置 ︰

&
&
&&
&

&
&&
&

&
&&
&&

詳細設置,在測試的前10分鐘,將以每 2 秒的速度創建一個新的用戶,10 分鐘之後,將以每一秒的速度創建一個新的用戶,在最後的 10 分鐘,將每一秒創建10 個用戶。所有用戶都結束他們的會話時即完成測試。

還可以使用 arrivalrate 而不是間隔。例如,如果你想每秒創建10 個用戶,可以使用︰

&
&&&
可以在每個階段開始時通過 maxnumber 屬性限制用戶數量,如下︰
&
&&&&
&&&

在這種情況下,第一階段只能創建100 個用戶,第二階段可以創建200 多個用戶。

可以多次執行循環語句來載入出完整的序列 (loop = "2" 時,循環將被執行2次,所以完整的負載將執行 3 次) (1.2.2版後此功能可用)。

生成的 HTTP 請求的負載 / 秒也取決於會話內請求的平均數量 (如果每個會話有 100 個請求和 每秒平均生成10 個新用戶,理論平均吞吐量將達到 1000 個請求 / 秒)。

1.5.1 版本中的新增功能。

還可以重寫會話內某一特定的階段,設置 session_setup ︰

&
&
&
&&

4.2.靜態生成的用戶

如果你想要開啟一個給定的會話 (請參閱

6.6. Sessions) 在給定時間在測試期間,1.3.1版之後:

&
&
&&
&
&&
&&
&&&
&
&
& && &
&
&
& && &
&
&
& && &
&&

在此示例中,我們有兩個會議,一個是"0"的概率 (因此將不會使用在第一階段),和其他 100%。我們定義 3 個用戶開始分別在 3mn 和 5 秒後開始測試 (使用 http 示例會話),另一個啟動10 分鐘後,11 分鐘後啟動下次(使用 foo 會話)。

1.5.1 版本中的新增功能。

如果你想要一次開啟幾個會話,並且會話的名稱具有相同的前綴,則可以使用通配符。鑒於前幾屆會議,此示例將啟動兩個用戶 (一個與美孚會話),一個與 foobar 會話在開始時間 +10s。

&

4.3.負載測試的持續時間

默認情況下,所有用戶已經都完成會話時Tsung才能結束。因此它可以比 arrivalphases 的持續時間更長的時間。如果你想要在給定的時間段 (即使未完成或者一些會話仍在活動) 後停止Tsung,可以在載入時設置有效期屬性(1.3.2版中新增的功能) ︰

&
&
&&
&&

目前,有效期的最大值是50 天。單位可以是秒,分鐘或小時。

5.設置選項

5.1.thinktimes,SSL,緩衝區

5.2.TCP連接超時

5.3.重載與超時

5.4.確認消息而超時

5.5.Hibernate

5.6.rate_limit

5.7.ports_range

5.8.設置為隨機數種子

5.9.BOSH路徑

5.10.WebSocket的選項

5.11.XMPP/Jabber選項

5.12.HTTP選項

5.13.AMQP選項

6.協議

6.1.thinktimes

6.2.超文本傳輸協議

6.3.Jabber/XMPP

6.4.PostgreSQL

6.5.MySQL

6.6.WebSocket

6.7.AMQP

6.8.MQTT

6.9.LDAP

6.10.會話型混合

7.新增的功能

7.1.動態替換

7.2.讀取外部文件

7.3.動態變數

7.4.檢查伺服器的響應

7.5.Loops,If,Foreach

7.6.速率限制

7.7.故障排除

7.8.客戶端證書


Tsung 有人用嗎?


想辦法去百度買個私服關鍵字排名,有人會幫你


loadrunner,http_load都可以。loadrunner比較成熟,測試結果比較可視化,有圖表,很直觀,推薦使用它


基於存儲過程的內部測試。

內部掛腳本進行測試。

http_load 中間層的壓力測試,可以同時訪問。

WAS 業務層直接訪問的壓力測試。可以同時訪問。

最後2條最好悠著點,很容易把自己網站搞死。

網站測試還是其他測試,一方面是測試業務本身,一方面也是檢驗用什麼硬體成本。最終核心還是根據pr增長來做。隨著pr增長來擴展自己硬體。


怎麼沒見人說Jmeter?


快來撿趴活哦!26款開源的Java測試工具


neoload, 國內用的很少吧?


推薦閱讀:

論壇防灌水設置如何測試?
性能測試中如何設計真實的負載呢?

TAG:伺服器 | 網站 | 壓力測試 | 測試工程師 | 性能測試 |