Gatling 的介紹和JMeter的性能對比請參看新一代服務器性能測試工具Gatlinghtml
這裏記錄本身簡單使用心得.數據庫
1.下載安裝瀏覽器
直接下載zip文件到本地目錄,解壓目錄便可。下載地址Gatling最新版2.17下載 服務器
文件目錄以下app
result:保存生成結果async
user-files:測試的scala 腳本文件工具
2.本次測試採用的是一個Play rest 工程。Play rest 工程----helloplay 其中有多個接口須要同步測試(刪除,更新操做類同)post
POST /user controllers.Application.insert //插入數據接口 GET /user/all controllers.Application.findAll // 查詢接口全部 GET /user/:id controllers.Application.findasync(id:Long) //查詢接單條
編寫測試代碼,測試代碼放在$GATLING_HOME/user-files/simulations/computerdatabase 目錄下性能
本例簡單測試簡單代碼以下測試
package jiang import io.gatling.core.Predef._ import io.gatling.http.Predef._ import scala.concurrent.duration._ class jiang_9_17 extends Simulation { // 測試接口部分 // 1. 查詢 object Search { val search = exec(http("Home").get("/")).pause(1) .exec(http("GetAll").get("/user/all ")).pause(1) .exec(http("Query").get("/user/10")).pause(1) } // 2. 插入 object Edit { val insert = exec(http("Insert").post("/user").body(StringBody("""{"name":"han"}""")).asJSON).pause(1) } // 設置瀏覽器信息 val httpConf = http .baseURL("http://localhost:9000") .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") .doNotTrackHeader("1") .acceptLanguageHeader("zh-CN,zh;q=0.8,en;q=0.6") .acceptEncodingHeader("gzip, deflate") .userAgentHeader("Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0") // 設置權限 user只能查詢,admin能夠查詢和插入數據 val users = scenario("Users").exec(Search.search) // regular users can't Insert val admins = scenario("Admins").exec(Search.search, Edit.insert) // 設置請求次數 以下爲在10s內 user 查詢執行1000次,admin 查詢和插入執行100次 setUp( users.inject(rampUsers(1000) over (10 seconds)), admins.inject(rampUsers(100) over (10 seconds)) ).protocols(httpConf) }
執行gatling腳本 ./$GATLING_HOME/bin/gatling.sh
選擇本次須要執行的腳本文件[6]jiang.jiang_9_17 // package 下的jiang_9_17 文件
下面兩步選擇默認就能夠了
而後能夠看到執行完成結果
$GATLING_HOME/result 目錄下生成了本次測試的可視化結果
<如本例>用瀏覽器打開index.html 文件瀏覽詳細信息(圖一爲整體,二爲每一個接口對應信息)
因爲這次測試數據庫爲本地,查詢比較快.所以接口請求時間都比較短。
更多資料請參考官網Gatling.io