一款開源的自動化測試工具curl-loader
第一章:安裝介紹
本期將推開性能測試工具LoadRunner,去研究一款開源性能測試工具Curl-Loader,關于兩者的優劣我也不大清楚,不過對于Lr的強大,相信大家是領教多了,而理解性能測試的原理的話,對于Curl-Loader就可以溢于言表了。前者可以做錄制,且業務邏輯復雜的流程;而后者更傾向于壓力面的擴展,對于虛擬用戶數的個數在單個機器上可以上到10000個以上。
由于該工具運行于Linux平臺,所以安裝過程還是比較麻煩的,我們來看看Curl-Loaderde的安裝如下:
1、官方下載地址如下所示:
http://sourceforge.net/projects/curl-loader/files/
2、在官方網站上查看readme文檔,以及FAST START文檔,根據文檔提示在安裝之前先首先要了解系統是否具備了安裝Curl-Loader的相關包,如下所示:
openssl以及開發包這兩個包是必須要安裝的,一句官方提供的文檔。
3、具體安裝方法如下:
$tar zxfv curl-loader-<version>.tar.gz $cd curl-loader-<version> $make |
安裝完成之后在主目錄中會生成curl-loader可執行文件,主要通過該命令來執行壓力測試。
4、根據FAST START文檔的說明,執行壓力測試的過程可以通過conf-examples目錄下的示例來解讀,這里我們以10k.conf為例,配置如下:
########### GENERAL SECTION ################################ BATCH_NAME= 10K //這里是配置測試對象的名稱 CLIENTS_NUM_MAX=10000 //這里是配置最大虛擬用戶數 CLIENTS_NUM_START=100 //這里是配置初始化并發虛擬用戶數 CLIENTS_RAMPUP_INC=50 //這里是配置每次加載用戶數 INTERFACE =eth0 NETMASK=16 //子網掩碼位數 IP_ADDR_MIN= 192.168.1.1 //起始ip地址 IP_ADDR_MAX= 192.168.53.255 //最后的ip地址范圍 CYCLES_NUM= -1 URLS_NUM= 1 ########### URL SECTION #################################### URL=http://localhost/index.html //配置URL地址 #URL=http://localhost/ACE-INSTALL.html URL_SHORT_NAME="local-index" REQUEST_TYPE=GET TIMER_URL_COMPLETION = 5000 # In msec. When positive, Now it is enforced by cancelling url fetch on timeout TIMER_AFTER_URL_SLEEP =20 |
配置完成之后就在命令下執行命令:./curl-loader -f 10K.conf,然后就開始執行壓力測試。
通過以上這個示例配置文件,可以清楚的理解這個就類似于LoadRunner中的場景設置頁面,其實原理都一樣。
5、測試結果,在執行以上測試指令后,在命令窗口中就顯示如下所示,具體的動態測試數據如下:
在執行壓力的時候顯示如上頁面,具體的參數就不一一詳細介紹了,具體請參考官方FAQ文檔,因為我也沒有讀完,只了解大概。
在測試結束之后將會生成一系列的日志文件,詳細測試信息還可以查看日志文件。
第二章:學習視頻
1)開源性能測試工具Curl-Loader快速實戰 - 1
2)開源性能測試工具Curl-Loader快速實戰 - 2
3)開源性能測試工具Curl-Loader快速實戰 - 3
4)開源性能測試工具Curl-Loader快速實戰 - 4
開源性能測試工具Curl-Loader快速實戰 (1)
在線觀看地址:http://www.boobooke.com/v/bbk1808
下載地址:http://www.boobooke.com/v/bbk1808.zip
開源性能測試工具Curl-Loader快速實戰 (2)
在線觀看地址:http://www.boobooke.com/v/bbk1809
下載地址:http://www.boobooke.com/v/bbk1809.zip
開源性能測試工具Curl-Loader快速實戰 (3)
在線觀看地址:http://www.boobooke.com/v/bbk1835
下載地址:http://www.boobooke.com/v/bbk1835.zip
開源性能測試工具Curl-Loader快速實戰 (4)
在線觀看地址:http://www.boobooke.com/v/bbk1836
curl-loader配置文件說明:
01 ########### GENERAL SECTION ################## 02 BATCH_NAME= 10K-clients #批處理名稱 03 CLIENTS_NUM_MAX=10000 #虛擬客戶端最大數量 04 CLIENTS_NUM_START=100 #虛擬客戶端初始數量 05 CLIENTS_RAMPUP_INC=50 #虛擬客戶端一次遞增的數量 06 INTERFACE =eth0 #選擇使工作的網卡 07 NETMASK=255.255.0.0 #子網掩碼 08 IP_ADDR_MIN= 192.168.1.1 #模擬的ip開始地址段 09 IP_ADDR_MAX= 192.168.53.255 #模擬的ip結束地址段 10 CYCLES_NUM= -1 #每個客戶執行的周期數不限 11 URLS_NUM= 1 #每個客戶得到單個url 12 13 ########### URLs SECTION ####################### 14 15 URL=http://localhost/index.html #待測目標的url 16 URL_SHORT_NAME="local-index" #這個名字是url的代名詞將被出現在負載開始時的 17 REQUEST_TYPE=GET #請求類型 18 TIMER_URL_COMPLETION = 0 #url將使用http GET方法被提取且在時間上不受限制 19 TIMER_AFTER_URL_SLEEP = 0 #在完成一個url請求后進行下一個url請求的協議重定向的間隔時間 |
運行curl-loader的基本命令為:
curl-loader -f config.conf
,這個config.conf就是上面的配置文件具體的設置需要根據需要,我根據我的需求一開始把CLIENTS_NUM_MAX=設置為2000,CLIENTS_NUM_START為100,CLIENTS_RAMPUP_INC為50,意思就是說一開始的虛擬客戶端就是100個,然后以每秒50個用戶的速度遞增一直達到最大值2000。
因為是一開始運行測試,所以我沒有設置的很大。為什么初始值不一開始就設置成2000呢,這個道理很簡單,1,容易使被測的系統崩潰;2,不符合真實的環境;從這兩方面考慮,所以要讓壓力的遞增像一個爬坡的曲線慢慢的到到最大客戶端值,也就是最大的壓力然后保持一個穩定的范圍,最后得到測試的參數再進行分析。在結束測試的時候我個人認為不用慢慢的遞減壓力,可以一下子把壓力撤掉。
模擬的用戶數量越多,占用的IP地址就越多,所以設置用戶數量的時候要看IP_ADDR_MIN和IP_ADDR_MAX這兩個參數間的IP個數是否滿足,不滿足的話要做適當的修改,可以大于等于,但不能小于,否則在運行
#curl-loader -f config.conf
的時候就會提示讓修改配置文件參數的錯誤
待測目標改成服務器端的IP地址即可,其他的暫時不用修改。
在運行curl-loaderl之前最好要修改一下系統打開文件的最大值,因為用的是Linux系統而Linux系統默認可以打開最大的文件數為1024,所以要修改大點,一般要超過CLIENTS_NUM_MAX的值,修改命令為:
#ulimit -n 10000
注:后面的數值越大越好,最好是遠遠超過curl-loader虛擬的客戶端數量;如果不修改就會出現the current limit of open descriptors for the shell (1024)類似的錯誤
好了,終于不報錯了,可以執行curl-loader運行命令了,沒錯,這樣可以運行了,但還不是最好的狀態,最好在加上一些運行的命令參數這樣才能更大的發揮curl-loder的作用,也是測試結果更為準確
下面就是各個參數的說明,是在官方網站找的,我全部按照自己的意思翻譯了,這么簡單的事情我Google,百度了半天竟然沒有一個中文資源可以參考
-c[onnection establishment timeout, seconds] :設置連接超時的時間
-d[etailed logging; outputs to logfile headers and bodies of requests/responses. Good for text pages/files] :把header和bodies的反應等詳細的情況輸入到日志中。
-e[rror drop client. Client on error doesn't attempt to process the next cycle] :如果虛擬客戶端出現錯誤則在下一次的周期請求中不再嘗試。
-h[elp] :幫助
-i[ntermediate (snapshot) statistics time interval (default 3 sec)] :設置最后一段狀況的時間,默認是最后3秒。
-f[ilename of configuration to run (batches of clients)] :設置想要加載的配置文件
-l[ogfile max size in MB (default 1024). On the size reached, file pointer is rewinded(回滾) :設置日志文件的最大容量,默認是1024MB,當達到最大值時文件將會回滾覆蓋從最舊的日期。
-m[ode of loading, 0 - hyper (the default, epoll () based ), 1 - smooth (select () based)] :兩種系統調用方式,epoll要優于select,但是也要測試為目的去選擇。
-r[euse connections disabled. Closes TCP-connections and re-open them. Try with and without]:不再重試繼續連接,每次重試連接之前都會關閉之前的連接。防止連接緩存
-t[hreads number. Use it for high loads and when running at SMP/multi-core HW] :用于高負載并且還是多核的cpu時,可以分配線程數。
-v[erbose output to the logfiles; includes info about headers sent/received] :把headers的收發的詳細情況輸出到日志中。
-u[rl logging - logs url names to logfile, when -v verbose option is used] :url日志,把url名字記錄在日志文件中,當用-v選項時會被顯示出來。
-w[arnings skip] :跳過警告。
可能有人覺得這么簡單的英文直接自己看幫助或者man手冊不就行了,太多的道理我也不想多說,我只想說翻譯成中文這很重要!
根據我的需求,首先-f指定配置文件,-l 10240MB增大日志文件,-m 0 選擇epoll()調用方法這兩種方法是在被測系統的內核里設置的所以這個選擇最好要跟被測系統中的內核的選擇一致這樣才能測試的更準確,-r每次都是重新建立連接,-t 2 我安裝curl-loader的機器是雙核的這樣可以更充分的利用系統資源使機器發揮出更大的作用,-u 記錄url到日志中。所以我的curl-loader的運行命令就是:
#curl-loader -f /home/user/10K/10K.conf -l 10240MB -m 0 -r -t 2 -u
你會看到屏幕刷刷的翻動著,到后面會有一個最后三秒運行和總curr的狀態
如果想要結束測試ctrl+c就可以了
下一篇我會寫這些狀態參數和結果的意義
簡單總結下我學習上面這些東西的過程:
首先是在Google和百度上搜索中文資料,畢竟中文更易快速的理解,但是很失望,中文關于curl-loader的有價值的資料很少,大部分都是介紹怎么去安裝,連配置文件的各個配置都沒有一個能完全說明的,收獲最多的就是看了網上流傳的所謂的一個XX老師的教學視頻,但是看到最后發現也不靠譜,curl-loader的測試結果里有個很重要的參數CAPS硬是給人胡說著解釋出來了,當時就懷疑,隨即到官網查看還真不是他說的那個意思,所以要懷疑一切所謂的權威,最好到官方的網站去找答案,即使是英文的。
血汗淚的教訓啊~,所以勇敢的站起來去大膽的懷疑權威,細心的去認證吧!
還有,因為是剛開始寫博客還搞不懂怎么把代碼調成高亮顯示,后面會改成高亮的那種
下載地址:http://www.boobooke.com/v/bbk1836.zip
第三章:深入學習