Apache JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟件作壓力測試,它最初被設計用於Web應用測試但後來擴展到其餘測試領域。 它能夠用於測試靜態和動態資源例如靜態文件、Java小服務程序、CGI腳本、Java 對象、數據庫, FTP服務器, 等等。JMeter 能夠用於對服務器、網絡或對象模擬巨大的負載,來在不一樣壓力類別下測試它們的強度和分析總體性能。另外,JMeter可以對應用程序作功能/迴歸測試,經過建立帶有斷言的腳原本驗證你的程序返回了你指望的結果。爲了最大限度的靈活性,JMeter容許使用正則表達式建立斷言。php
官方網站下載最新版本: http://jmeter.apache.org/download_jmeter.cgi ,目前最新版是Apache JMeter 2.9,使用JMeter依賴jdk,建議安裝jdk 1.6版本。html
Linux下安裝jdk參考文章:http://www.linuxeye.com/Linux/Linux-install-JDK.htmllinux
Windowns下安裝jdk同Linux下安裝相似,這裏就不介紹了。正則表達式
這裏就在win下進行,圖形界面較爲方便
在目錄apache-jmeter-2.9\bin 下能夠見到一個jmeter.bat文件,雙擊此文件,即看到JMeter控制面板。數據庫
如今來對LinuxEye進行壓力測試,壓力測試對象爲隨機的幾個網頁連接,這幾個連接是寫在一個文本文件中的,在壓力測試的時候會隨機讀取。apache
爲何要創建線程組?緣由很簡單,由於咱們要模擬多個線程(用戶)來訪問LinuxEye。線程屬性部分中,線程數是啓動多少個線程,我這裏填寫的是10,Ramp-Up Period (in seconds)表示線程之間間隔多少時間容許,單位是秒,好比若是填寫10,那麼10/10=1表示10個線程間每隔1秒鐘請求網站。循環次數:60個線程運行完畢算是一次,循環次數就是這樣的一個請求過程運行多少次,我這裏測試就填寫的是2。每次修改一個設置後,別忘記了保存一下。服務器
接下來很天然的是,咱們要測試的網站地址是什麼?連接是什麼?因此如今咱們就來設置這些信息。右鍵點擊咱們剛建立的線程組,在彈出的菜單中,選擇添加->Sampler->Http請求,彈出以下圖界面:網絡
路徑:併發
假如你只是對一個連接進行壓力測試,直接填寫一個連接就ok,好比 http://www.linuxeye.com,可是大多數狀況下都不是這樣的,咱們這裏須要多個連接,就如同剛開始講到的那樣,咱們要將多個連接保存到一個文本文件中,而後隨機讀取進行壓力測試。咱們能夠這麼作,如圖:工具
在選擇一個功能下拉列表中選擇_StringFromFile,而後在本機新建一個測試文件C:\Users\root\Desktop\apache-jmeter-2.9\test.txt,在第一行(你也能夠不在第一行)的值中填寫測試文件的路徑,以下圖:
而後點擊「生成」按鈕,在生成按鈕的左邊文本框中將生成一個字符串如:
${__StringFromFile(C:\Users\root\Desktop\apache-jmeter-2.9\test.txt,,,)}
在test.txt測試文件中,咱們每行寫一個URL連接,以下格式:
注意,每行前面並無http://www.linuxeye.com這樣的信息,由於咱們在前面已經填寫了服務器地址爲www.linuxeye.com,這裏就不必再爲每一個url填寫這個相同前綴了;另外,上面的url格式也只是個例子,表示域名後的部分。
這樣一來,當咱們並不是請求的時候,就會從test.txt中隨機選擇url來進行壓力測試。
另外值得注意的一個地方是,若是參數中有中文的狀況,運行的時候可能會出現亂碼,這個時候就須要注意你在Jmeter中的編碼設置與你要請求的網頁編碼是一致的。
路徑文本框下面的選項,能夠按默認的就成,Use multipart/form-data for HTTP POST是當請求中有附件的狀況,通常狀況下都不用選中的。
鼠標右鍵點擊線程組,在彈出的菜單中選擇添加->監聽器->用表格查詢結果,以下圖:
固然,在運行前,請把全部修改都保存好
運行後的結果表格以下:
各屬性以下:
若是Status爲叉,那很顯然請求是失敗了,但若是是勾,也並不能認爲請求就必定徹底成功了,由於還得看Bytes的字節數是不是所請求網頁的正常大小值,若是不是則說明發生了丟包現象,也不是徹底成功。
在下面還有幾個參數:
術語: