Jmeter分布式壓測(cè)和監(jiān)控實(shí)踐

一宴凉、前言

對(duì)于運(yùn)維工程師來(lái)說(shuō)誊锭,需要對(duì)自己維護(hù)的服務(wù)器性能瓶頸了如指掌,比如我當(dāng)前的架構(gòu)每秒并發(fā)是多少弥锄,我服務(wù)器最大能接受的并發(fā)是多少丧靡,是什么導(dǎo)致我的性能有問(wèn)題;如果當(dāng)前架構(gòu)快達(dá)到性能瓶頸了籽暇,是橫向擴(kuò)容性能提升大温治,還是縱向擴(kuò)容性能提升大。
  如果需要了解這些信息图仓,需要在兩方面下功夫,一個(gè)是對(duì)服務(wù)器進(jìn)行性能測(cè)試但绕,一個(gè)是對(duì)服務(wù)器進(jìn)行性能監(jiān)控救崔。
  通過(guò)對(duì)服務(wù)器進(jìn)行性能測(cè)試:我們可以了解到當(dāng)前架構(gòu)的性能瓶頸惶看,還可以對(duì)架構(gòu)橫向擴(kuò)容和縱向擴(kuò)容來(lái)進(jìn)行測(cè)試,對(duì)后期的架構(gòu)擴(kuò)容提供數(shù)據(jù)參考六孵。
  通過(guò)對(duì)服務(wù)器進(jìn)行性能監(jiān)控:我們可以了解當(dāng)前服務(wù)器的CPU纬黎、內(nèi)存、IO等資源是否耗盡劫窒,我們可以在監(jiān)控系統(tǒng)添加觸發(fā)器本今,一旦服務(wù)器資源在快要達(dá)到瓶頸的時(shí)候,我們可以觸發(fā)一個(gè)報(bào)警讓運(yùn)維人員來(lái)處理主巍,也可以觸發(fā)一個(gè)讓架構(gòu)進(jìn)行自動(dòng)化擴(kuò)容(如果是云平臺(tái)冠息,直接調(diào)用api創(chuàng)建主機(jī),ansible部署應(yīng)用和程序)

二孕索、Jmeter分布式壓測(cè)介紹

在工作中使用jmeter做大并發(fā)壓力測(cè)試的場(chǎng)景下逛艰,單機(jī)受限內(nèi)存、CPU搞旭、網(wǎng)絡(luò)IO散怖,會(huì)出現(xiàn)服務(wù)器壓力還沒(méi)有上去,但是壓測(cè)服務(wù)器已經(jīng)由于模擬的壓力太大死機(jī)了肄渗。為了讓jmeter工具提供更強(qiáng)大的負(fù)載能力镇眷,jmeter提供了多臺(tái)機(jī)器同時(shí)產(chǎn)生負(fù)載的機(jī)制。


原理:比如我在jmeter server配置線程數(shù)為10翎嫡,循環(huán)次數(shù)為100欠动,也就是會(huì)對(duì)測(cè)試服務(wù)器發(fā)起1000次請(qǐng)求,我有3臺(tái)agent服務(wù)器钝的,如果我在server端選擇遠(yuǎn)程啟動(dòng)壓力測(cè)試翁垂,那么每臺(tái)agent都會(huì)對(duì)測(cè)試服務(wù)器發(fā)起10100次請(qǐng)求,那么這次壓力測(cè)試產(chǎn)生的請(qǐng)求就是10100*3=3000

三硝桩、Jmeter分布式壓測(cè)環(huán)境搭建

3.1.搭建前說(shuō)明

服務(wù)器環(huán)境說(shuō)明:做性能測(cè)試可以直接在在云平臺(tái)按需購(gòu)買壓力機(jī)沿猜,一旦測(cè)試結(jié)束釋放壓力機(jī)即可。

分布式環(huán)境壓力服務(wù)器要求:
  需要server(控制機(jī))和agent(壓力機(jī))碗脊,agent搭建在linux(centos 6.5)服務(wù)器環(huán)境下啼肩,server搭建在windows(server 2012)環(huán)境下。
  壓力測(cè)試瓶頸大都在帶寬上面衙伶,需要保證壓力機(jī)的帶寬要比服務(wù)器的帶寬高祈坠,不然壓力上不去。
  需要保證agent和server都在一個(gè)網(wǎng)絡(luò)中矢劲,且在多網(wǎng)卡環(huán)境需要保證啟動(dòng)的網(wǎng)卡都在一個(gè)網(wǎng)段赦拘。
  需要保證server和agent之間的時(shí)間同步。
  關(guān)閉防火墻芬沉。

3.2.Windows部署jmeter

(1)部署jdk環(huán)境,配置path變量
(2)直接去官網(wǎng)下載最新的二進(jìn)制源碼包即可躺同。
(3)解壓jmeter到指定目錄阁猜,設(shè)置path變量,安裝完成之后蹋艺,在命令行運(yùn)行jmeter命令剃袍,如果可以正常啟動(dòng)jmeter,說(shuō)明環(huán)境配置ok捎谨。

3.3.Linux部署jmeter

1)下載安裝

wget http://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-3.1.zip
unzip apache-jmeter-3.1.zip -d /usr/local/
cd /usr/local/
ln -s apache-jmeter-3.1/ jmeter

2)配置啟動(dòng)腳本

  #!/bin/bash
  # chkconfig: 345 26 74
  # description: jmeter agent
  myip=`ifconfig eth0 |awk '/inet addr/{gsub(/addr:/,"");print $2}'`
  cmd="/usr/local/jmeter/bin/jmeter-server -Djava.rmi.server.hostname=$myip"
  start(){
    $cmd &
  }
   
  stop(){
      jmeter_pid=`ps aux | grep jmeter-server | grep -v grep | awk '{print $2}'`
      for pid in $jmeter_pid;do
      kill -9 $pid
      done
  }
   
  act=$1
  case $act in
   'start')
     start;;
   'stop')
     stop;;
   'restart')
     stop
     sleep 2
     start;;
    *)
     echo '[start|stop|restart]';;
  esac

3)啟動(dòng)jmeter agent服務(wù)民效,驗(yàn)證是否監(jiān)聽(tīng)1099端口

  [root@jmeter-agent-01 ~]# /etc/init.d/jmeter-agent start
  [root@jmeter-agent-01 ~]# netstat -lntp | grep 1099
  tcp        0      0 0.0.0.0:1099                0.0.0.0:*                   LISTEN      414/java

3.4.分布式環(huán)境配置

1)確保server和agnet安裝正確。
2)Agent啟動(dòng)涛救,并監(jiān)聽(tīng)1099端口畏邢。
3)在server機(jī)器的jmeter安裝目錄下bin目錄下,找到properties文件州叠,修改遠(yuǎn)程主機(jī)選項(xiàng)棵红,添加3個(gè)agent服務(wù)器的地址。
4)啟動(dòng)jmeter server咧栗,多網(wǎng)卡模式需要指定IP地址啟動(dòng)
  jmeter -Djava.rmi.server.hostname=192.168.10.61
5)驗(yàn)證分布式環(huán)境是否搭建成功
  1逆甜、jmeter啟動(dòng)之后在如下選項(xiàng)中,會(huì)出現(xiàn)你添加的遠(yuǎn)程主機(jī)列表



 2、創(chuàng)建一個(gè)請(qǐng)求測(cè)試:創(chuàng)建一個(gè)訪問(wèn)百度的請(qǐng)求致板,訪問(wèn)次數(shù)為一次交煞,配置如下:




  直接點(diǎn)擊啟動(dòng),是jmeter server機(jī)器發(fā)起一次請(qǐng)求斟或,結(jié)果如下

請(qǐng)求所有之前的請(qǐng)求數(shù)據(jù)之后素征,在選擇遠(yuǎn)程全部啟動(dòng),查請(qǐng)求就是三次,也就是每個(gè)agent服務(wù)器按照著server的配置,請(qǐng)求了一次抡锈。



如果你的環(huán)境在選擇全部啟動(dòng)之后,沒(méi)有報(bào)錯(cuò)端蛆,且發(fā)起請(qǐng)求數(shù)量和agent服務(wù)器數(shù)量一致,說(shuō)明jmeter分布式壓力測(cè)試環(huán)境搭建成功酥泛,可以進(jìn)行測(cè)試了今豆。

四、Jmeter斷言

4.1.斷言介紹

jmeter斷言常用有兩種柔袁,一種是響應(yīng)斷言呆躲,一種是響應(yīng)時(shí)間斷言,如果響應(yīng)內(nèi)容不滿足斷言的配置捶索,則認(rèn)為這次的請(qǐng)求是失敗的插掂。
  響應(yīng)斷言:判斷響應(yīng)內(nèi)容是否包含指定的字符信息,用于判斷api接口返回內(nèi)容是否正確。
  響應(yīng)時(shí)間斷言:判斷響應(yīng)時(shí)間辅甥,是否超過(guò)預(yù)期的時(shí)間箩祥,用于判斷api接口返回時(shí)間是否超過(guò)預(yù)期。

4.2.斷言配置

1)修改http為實(shí)際的api測(cè)試請(qǐng)求肆氓。
2)斷言添加方式:右擊測(cè)試計(jì)劃的http請(qǐng)求,選擇添加à斷言à添加響應(yīng)斷言和斷言持續(xù)時(shí)間底瓣。



3)配置響應(yīng)斷言:我們接口正常返回code值為2000谢揪,如果接口返回code值不是2000表示接口異常,為了測(cè)試捐凭,這里修改為接口返回code值不為2222則表示訪問(wèn)失敗拨扶。


4)配置斷言響應(yīng)時(shí)間:設(shè)置請(qǐng)求接口時(shí)間超過(guò)1毫秒,則認(rèn)為請(qǐng)求失敗茁肠。

5)驗(yàn)證斷言配置:發(fā)起http請(qǐng)求患民,由于返回內(nèi)容code值不為2222,以及訪問(wèn)時(shí)間超過(guò)1毫秒垦梆,所以認(rèn)為訪問(wèn)失敗匹颤。


五、Jmeter變量配置(參數(shù)化)

使用變量的場(chǎng)景舉例:我們需要測(cè)試性能的曲線模型托猩,也就是由輕壓力慢慢變?yōu)橹貕毫τ”停瑏?lái)測(cè)試我們的性能拐點(diǎn),這個(gè)時(shí)候jmeter就需要配置多個(gè)線程組京腥,每個(gè)線程組需要設(shè)置http請(qǐng)求赦肃。由于每次測(cè)試性能的曲線模型都是同一個(gè)接口,所以每次修改接口都需要修改http請(qǐng)求公浪,這個(gè)時(shí)候如果使用了變量他宛,就意味著每次修改api只需要修改api的變量即可。

在測(cè)試計(jì)劃中設(shè)置參數(shù):



引用:


六欠气、測(cè)試中的監(jiān)控

6.1.并發(fā)測(cè)試監(jiān)控

并發(fā)測(cè)試直接發(fā)起指定數(shù)量的請(qǐng)求厅各,比如一起發(fā)起10萬(wàn)請(qǐng)求看一下系統(tǒng)的處理能力,這個(gè)時(shí)候如果需要服務(wù)器的資源使用信息晃琳,就不能使用比如zabbix監(jiān)控系統(tǒng)了讯检,因?yàn)橐话闾幚?0萬(wàn)請(qǐng)求,對(duì)于我們來(lái)說(shuō)20秒可以處理完畢卫旱,但是zabbix數(shù)據(jù)采集是每分鐘一次人灼,這樣采集到的數(shù)據(jù)明顯是不準(zhǔn)的,這樣就需要通過(guò)系統(tǒng)自帶的監(jiān)控命令顾翼,來(lái)實(shí)時(shí)查詢服務(wù)器的性能投放,比如可以通過(guò)dstat或者glances等動(dòng)態(tài)監(jiān)控命令來(lái)分析系統(tǒng)的性能。



  補(bǔ)充:不是測(cè)試每一個(gè)接口都需要進(jìn)行這樣的實(shí)時(shí)監(jiān)控适贸,比如過(guò)測(cè)試我的大部分接口TPS可達(dá)5000灸芳,但是其中一個(gè)接口只能達(dá)到2000這個(gè)時(shí)候就需要在測(cè)試的時(shí)候?qū)崟r(shí)監(jiān)控涝桅,看一下到底是什么原因?qū)е滦阅苌喜蝗ァJ怯捎诜祷財(cái)?shù)據(jù)太大導(dǎo)致網(wǎng)絡(luò)帶寬被占滿烙样;還是sql執(zhí)行時(shí)間太長(zhǎng)導(dǎo)致數(shù)據(jù)庫(kù)負(fù)載高冯遂,還是代碼有問(wèn)題導(dǎo)致web服務(wù)cpu占用高。

6.2 穩(wěn)定性測(cè)試監(jiān)控

穩(wěn)定性測(cè)試就是持續(xù)不斷模擬指定數(shù)量請(qǐng)求谒获,來(lái)訪問(wèn)服務(wù)器蛤肌,比如我每秒向測(cè)試服務(wù)器發(fā)起4000請(qǐng)求,持續(xù)12小時(shí)批狱,來(lái)看看服務(wù)器會(huì)出現(xiàn)什么情況裸准,這個(gè)時(shí)候就需要用到zabbix來(lái)進(jìn)行監(jiān)控了,下面是我做性能測(cè)試的部分監(jiān)控接口赔硫,包含tomcat每秒請(qǐng)求炒俱,服務(wù)器入口流量,整個(gè)集群每分鐘請(qǐng)求的http狀態(tài)碼統(tǒng)計(jì)爪膊,還有服務(wù)器資源使用信息权悟。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市推盛,隨后出現(xiàn)的幾起案子僵芹,更是在濱河造成了極大的恐慌,老刑警劉巖小槐,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拇派,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡凿跳,警方通過(guò)查閱死者的電腦和手機(jī)件豌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)控嗜,“玉大人茧彤,你說(shuō)我怎么就攤上這事〗福” “怎么了曾掂?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)壁顶。 經(jīng)常有香客問(wèn)我珠洗,道長(zhǎng),這世上最難降的妖魔是什么若专? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任许蓖,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘膊爪。我一直安慰自己自阱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布米酬。 她就那樣靜靜地躺著沛豌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赃额。 梳的紋絲不亂的頭發(fā)上琼懊,一...
    開(kāi)封第一講書(shū)人閱讀 52,158評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音爬早,去河邊找鬼。 笑死启妹,一個(gè)胖子當(dāng)著我的面吹牛筛严,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播饶米,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼桨啃,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了檬输?” 一聲冷哼從身側(cè)響起照瘾,我...
    開(kāi)封第一講書(shū)人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丧慈,沒(méi)想到半個(gè)月后析命,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逃默,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年鹃愤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片完域。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡软吐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吟税,到底是詐尸還是另有隱情凹耙,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布肠仪,位于F島的核電站肖抱,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏异旧。R本人自食惡果不足惜虐沥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧欲险,春花似錦镐依、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至喜每,卻和暖如春务唐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背带兜。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工枫笛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刚照。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓刑巧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親无畔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子啊楚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)浑彰,斷路器恭理,智...
    卡卡羅2017閱讀 134,693評(píng)論 18 139
  • Windows和Linux的Jmeter分布式集群壓力測(cè)試 Windows的Jmeter分布式集群壓力測(cè)試 在使用...
    Kingtester閱讀 5,218評(píng)論 10 19
  • 在使用Jmeter進(jìn)行接口的性能測(cè)試時(shí),由于Jmeter 是JAVA應(yīng)用郭变,對(duì)于CPU和內(nèi)存的消耗比較大颜价,所以,當(dāng)需...
    燕京博士閱讀 4,172評(píng)論 0 16
  • 她诉濒,心思細(xì)膩的一個(gè)小姑娘拍嵌,個(gè)子小小的,剛認(rèn)識(shí)她的時(shí)候循诉,還是個(gè)剪著齊劉海的短發(fā)女生横辆,很安靜。后來(lái)呀茄猫,一起做了教練狈蚤,才...
    汐夏夏閱讀 205評(píng)論 0 2
  • 如果你看膩了PPT中各種技巧參數(shù)的設(shè)置修改脆侮,我們不妨來(lái)看看內(nèi)容。 這是一檔翻譯Slideshare上優(yōu)秀作品的欄目...
    豎鋸先生閱讀 343評(píng)論 0 2