背景說明轉自 : http://www.infoq.com/cn/articles/new-generation-server-testing-tool-gatling/
以前Jmeter用的多,如文檔中所說,實際使用后發現Jmeter多用戶時很容易並發並發不均勻,導致一些數據統計不准確。
Jmeter & Gatling的QPS統計


因此我們選用gatling來進行http的壓測
實踐步驟:
http://gatling.io/docs/current/quickstart/
一 下載
wget https://repo1.maven.org/maven2/io/gatling/highcharts/gatling-charts-highcharts-bundle/2.2.5/gatling-charts-highcharts-bundle-2.2.5-bundle.zip unzip gatling-charts-highcharts-bundle-2.2.5-bundle.zip
1 注意盡量不要放在工程目錄下,預防出現權限問題
2 注意java版本的匹配 java -version
3 gatling的默認編碼方式為utf-8,若需更改,編譯conf/gatling.conf文件
二 檢查環境
cd bin && sudo sh gatling.sh
正確情況如下:
選取一個要跑的腳本需要,兩次enter:

將提示的result目錄下內容打開如下:

galing需要java環境,若無則需要配置;注意使用權限
三 應用
環境調通了,就開始寫自己的scala腳本進行壓測了,不熟悉scala的同學也沒有關系,記住幾個地方,抄一下就可以了~
1 單場景測試
較為簡單的單場景demo:get請求百度,不同的參數
package computerdatabase
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._
class MyTestSimulation extends Simulation { val httpConf = http .baseURL("http://www.baidu.com") //① .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") .acceptLanguageHeader("en-US;q=0.5") .acceptEncodingHeader("gzip, deflate") .userAgentHeader("Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0") val feeder = csv("baidu_search.csv").random //② val scn = scenario("MyTestSimulation") .feed(feeder) //③ .exec(http("request_1") //④ .get("/s?${params}") //⑤ .check(status.is(200))) setUp(scn.inject(constantUsersPerSec(150) during (30 seconds) ).protocols(httpConf)) //⑥
准備csv數據在data目錄下,文件名為baidu_search.csv,內容如下:
params ie=utf-8&wd=1 ie=utf-8&wd=2 ie=utf-8&wd=3
注釋:
class后面的名字會出現執行gatling后的可選列表里
① baseurl即域名
② 定義要讀取的參數文件
③ 把指定讀取參數文件定義的變量寫進來
④ 這個名字會用在生成的報告里
⑤ 讀取參數文件中的列
⑥設置每秒請求數qps和持續時間duringTime
啦啦啦,找到一個小抄,各種參數的含義解釋,簡直開掛,嚇哭我了:
http://gatling.io/docs/current/cheat-sheet/

四 問題&解決
我第一次使用dev權限,該權限下java javac命令均可正確使用,但是執行失敗,更改為root可行,覺得可能是gatling要求的。


