Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
»ùÓÚJmeterºÍJenkins´î½¨ÐÔÄܲâÊÔ¿ò¼Ü
 
  3195  次浏览      27
 2018-4-11
 

 

±à¼­ÍƼö:

±¾ÎÄÀ´×ÔÓÚcsdn£¬±¾ÎÄÖ÷Òª½²ÊöÁ˴ÐÔÄܲâÊÔÁ÷³Ì£¬»·¾³ÐèÇ󣬰²×°±ØÒªÈí¼þ£¬Jmeter GUIÉÏÖÆ¶¨²âÊԼƻ®£¬Éú³É²âÊԼƻ®jmxÎļþ£¬non-GUI·½Ê½Ö´ÐÐJmeter£¬Éú³É±¨¸æÍ¼±íµÈ·½·¨¡£

1¡¢ÐÔÄܲâÊÔÁ÷³Ì

¸ÃÐÔÄܲâÊÔ¿ò¼Ü¹¤×÷µÄÁ÷³ÌÖ÷ÒªÓУº´¥·¢²âÊÔ¨C>²¿Êð²âÊԽű¾¨C>²¿Êð±»²âϵͳ¨C>Jmeter´òѹ¨C>±»²âϵͳÈÕÖ¾·ÖÎö£¬5¸ö½×¶Î¡£

ÌåÏÖÔÚJenkinsÉÏ£¬¾ÍÊÇÏÂÃæÕâ¸öjenkins µÄMultiJob Project¡ª¡ªPerformance-test-jobs£º

×¢Ò⣺ÔÚÑ¡ÔñPerformance-test-jobsµÄ¹¹½¨²½Öèʱ£¬ÒªÑ¡ÔñConditional steps£¨multiple£©¡£

ÏÂÃæ¶Ô¸ÃÐÔÄܲâÊÔ¿ò¼Ü´î½¨µÄ¹ý³Ì½øÐÐÏêϸµÄ½éÉÜ¡£

2¡¢»·¾³ÐèÇó

Õû¸ö²âÊÔ¿ò¼ÜÐèÒªÒÔÏ»úÆ÷£º

1£©jenkins master£ºÓÃÓÚ¹ÜÀí²âÊÔ»ú¡¢½¨Á¢ÐÔÄܲâÊÔjob¡¢Æô¶¯ÐÔÄܲâÊÔ¡¢Õ¹Ê¾ÐÔÄܲâÊÔ½á¹û¡£

2£©Load generator£ºÓÃÀ´¸ø±»²âÊÔ·þÎñÆ÷·¢ËÍÇëÇ󣬵±Ò»Ì¨Load generator·¢Ë͵IJ¢·¢ÇëÇóÊý´ï²»µ½²âÊÔÒªÇóʱ£¬¿ÉÄÜÐèÒªÅäÖöą̀¡£Setup ENV½×¶ÎµÄPerformance-test-script-deploymentÒÔ¼°Run test½×¶ÎµÄjob¶¼ÊÇÔËÐÐÔÚÕâ»úÆ÷Éϵġ£

3£©±»²âÊÔ·þÎñÆ÷£ºÓÃÓÚ°²×°±»²âÊÔ·þÎñµÄ»úÆ÷£¬·ÖÎö±»²âÊÔ·þÎñµÄlogµÄjobÒ²ÊÇÔËÐÐÔÚÕâ¸ö»úÆ÷Éϵġ£

ÆäÖУ¬Load generatorºÍ±»²âÊÔ·þÎñÆ÷¶¼ÊÇ×÷Ϊslave½Úµã¹ÒÔØÔÚjenkins masterÉϵġ£

3¡¢°²×°±ØÒªÈí¼þ

3.1¡¢°²×°Jenkins¼°²å¼þ

°²×°JenkinsµÄ²½Ö裬ÕâÀï²»Õ¹¿ª½²ÁË¡£ÕâÀïÖ÷Òª½éÉÜÒ»ÏÂÓëÐÔÄܲâÊÔÓйصÄjenkins²å¼þ¡ª¡ªPerformance Plugin¡£Õâ¸ö²å¼þµÄ×÷ÓÃÊǽâÎöJmeterÉú³ÉµÄ²âÊÔ±¨¸æ£¬Ö±¹ÛµÄչʾ³öÀ´¡£

°²×°²å¼þµÄ·½·¨ºÜ¼òµ¥£¬µÇ½Jenkins£¬ÔÚManage Plugins½çÃæËÑË÷¡°Performance Plugin¡±µã»÷°²×°¼´¿É¡£

Èç¹û°²×°ÕýÈ·£¬ÔÚÐÔÄܲâÊÔjobµÄÅäÖÃÒ³ÃæµÄ ¡°Add post-build action¡± ²½ÖèÀïÃæÄܹ»¿´µ½ ¡°Publish Performance Test Result Report¡± Ñ¡Ïî¡£

3.2¡¢Jmeter°²×°¼°ÅäÖÃ

ÔÚÐÔÄܲâÊÔѹÁ¦»úÉÏ£¬ÏÂÔØ²¢°²×°Jmeter£¨ÏÂÔØµØÖ·£ºhttp://jmeter.apache.org/download_jmeter.cgi£©£¬½âѹµ½Ä¿Â¼/usr/local¡£[ÏÂÔØ¶þ½øÖƵÄ]

Ö®ºó£¬ÏÂÔØjmeter-plugins²å¼þJMeterPlugins-Standard-1.2.0.zip£¨ÏÂÔØµØÖ·http://jmeter-plugins.org/downloads/all/£©¡£

½âѹºó½«ÆäÖеÄjar°ü¿½±´ÖÁjmeter°²×°Ä¿Â¼/lib/ext/Ŀ¼£¨Èç¹ûûÓÐÔò´´½¨Ö®£©Ï¼´¿É¡£

Õâ¸ö²å¼þµÄ×÷ÓÃÊÇ£¬µ±Í¨¹ýno-GUI·½Ê½Ö´ÐвâÊÔÖ®ºó£¬½«Éú³ÉµÄ²âÊÔ½á¹ûÎļþ*.jtl½âÎö³ÉͼƬµÄÐÎʽ£¬±È½ÏÖ±¹Û¡£

3.3¡¢°²×°ÏµÍ³×ÊÔ´¼à¿Ø²å¼þ

ΪÁË¼à¿Ø±»²â·þÎñÆ÷µÄϵͳ×ÊÔ´£¬ÐèÒªÔÚ±»²âÊÔ»úÉϰ²×°ServerAgent£¬ÏÂÔØServerAgent-2.2.1.zip£¨ÏÂÔØµØÖ·http://jmeter-plugins.org/downloads/all/£©£¬²¢ÔÚ±»²âÊÔ»úÉÏÆô¶¯startAgent.sh¡£¸Ã²å¼þÄܹ»¶Ô·þÎñÆ÷µÄ CPU¡¢ÄÚ´æ¡¢Swap¡¢´ÅÅÌ I/O¡¢ÍøÂç I/O ½øÐÐ¼à¿Ø£¡

4¡¢Jmeter GUIÉÏÖÆ¶¨²âÊԼƻ®

ÎÒÃǵIJâÊÔÖ´ÐÐʵÔÚJenkinsÖÐͨ¹ý·ÇGUI·½Ê½Ö´ÐÐJmeterѹÁ¦²âÊԵġ£ÔÚJmeterGUIÉÏÖÆ¶¨²âÊԼƻ®µÄÄ¿µÄÊÇ£¬½«²âÊԼƻ®±£´æ³É.jmxÎļþ£¬ÒÔ±ãÄܹ»ÔÚJmeterµÄ·ÇGUIģʽÏÂÖ´ÐвâÊÔ¡£

4.1¡¢½¨Á¢Thread Group

ÓÐÈý¸ö±ØÐëÉèÖõÄÊôÐÔ£¨¼ûÏÂͼºì¿ò²¿·Ö£©£¬ÕâÀï²ÉÓú¯Êý__P()ÉèÖÃÊôÐÔÃûºÍĬÈÏÖµµÄÐÎʽÉèÖÃÕâÈý¸öÊôÐÔ£¬ÒÔ·½±ãÔÚʹÓÃno-GUIģʽÆô¶¯Jmeter½øÐвâÊÔʱ£¬Ê¹ÓèCjmeterpropertyÑ¡Ïî¶ÔÊôÐÔÖµ½øÐи³Öµ¡£

4.2¡¢Ìí¼ÓHTTP Request

ÓÉÓÚÎÒÃǵIJâÊÔÊÇ·¢ËÍHTTPÇëÇó¸øServing·þÎñÆ÷£¬Òò´ËÕâÀïÑ¡ÔñÌí¼ÓµÄSamplerÊÇHTTP Request¡£

ÕâÀïÐèÒªÌí¼Ó±»²â·þÎñÆ÷µÄÓòÃû»òÕßÍøÖ·£¬ÕâÀïÒ²²ÉÓú¯Êý__P()ÉèÖÃÊôÐÔÃûºÍĬÈÏÖµµÄÐÎʽÉèÖÃÕâ¸öÊôÐÔ¡£

ÁíÍ⣬»¹ÒªÉèÖÃÇëÇóµÄ¾ßÌ嵨ַPath¡£ÓÉÓÚÎÒÃDzâÊÔ¹ý³ÌÖÐÇëÇóµÄÍøÖ·ÊDz»Ò»ÑùµÄ¡£Òò´ËÐèÒªÐèÒª¶ÔÕâ¸öPath½øÐвÎÊý»¯£¬Ö¸¶¨Îª±äÁ¿${path}¡£ÓÖÓÉÓÚÎÒÃÇÇëÇóµÄÍøÖ·ÊÇ´æ·Åµ½Ò»¸ö½Ð×÷path.logµÄÎļþÖеġ£Òò´Ë£¬²ÎÊý»¯µÄ·½·¨ÊÊÒ˲ÉÓÃCSV Data Set Config¡£ÕâÀïFilenameÎÒÃÇÉèÖÃΪÊôÐÔUrlFile£¬¸ÃÊôÐÔ¿ÉÒÔÔÚʹÓÃno-GUIģʽÆô¶¯Jmeter½øÐвâÊÔʱ£¬Ê¹ÓèCjmeterpropertyÑ¡ÏîÖ¸¶¨¾ßÌåµÄÎļþ¡£

4.3¡¢Ìí¼ÓListener

ÔÚTestPlanÉÏÓÒ»÷£¬Add¨C>Listener¨C>Aggregate Report¡£

ÁíÍ⣬Ìí¼ÓÁËPerfMon Metrics CollectorµÄListner£¬À´ÊÕ¼¯±»²âÊÔ»úµÄCPU,memoryÐÅÏ¢¡£

¿ÉÒÔÖ¸¶¨½«report±£´æµ½Ä³¸öÎļþ£¬ÈçÉÏͼÖÐËùʾ±£´æµ½jtlÎļþ£¬ÔÚ·ÇGUIģʽÏÂÔËÐÐJmeterÕâÊǷdz£±ØÒªµÄ¡£

4.4¡¢Éú³É²âÊԼƻ®jmxÎļþ

Ò»ÇÐÉèÖÃÍ×µ±Ö®ºó£¬µã»÷²Ëµ¥À¸ÉϵÄFile->Save Test Plan As.
´Ë²½Öè¿ÉÒÔ½«¸ÃTest Plan±£´æÎª.jmx¸ñʽµÄÎļþ¡£¸ÃÎļþÓÃÀ´½øÐÐnon-GUI·½Ê½½øÐÐJmeter²âÊÔ¡£

5¡¢non-GUI·½Ê½Ö´ÐÐJmeter

non-GUI·½Ê½Ö´ÐÐJmeterµÄÃüÁ

jmeter.sh -n -t test.jmx -l result.jtl \
--jmeterproperty threadCount=${CONCURRENCY} \
--jmeterproperty LoopCount=${LOOPCOUNT} \
--jmeterproperty adclient=${SERVER} \
--jmeterproperty UrlFile=path.log \
--jmeterproperty RampUp=${RAMPUP} \
--jmeterproperty throughput=${THROUGHPUT}

˵Ã÷£º

-n ·Ç GUI ģʽ -> ÔÚ·Ç GUI ģʽÏÂÔËÐÐ JMeter

-t ²âÊÔÎļþ -> ÒªÔËÐÐµÄ JMeter ²âÊԽű¾Îļþ

-l ÈÕÖ¾Îļþ -> ¼Ç¼½á¹ûµÄÎļþ

¨CjmeterpropertyÉèÖÃtest.jmxÖеÄÊôÐÔ£¨¼û¡°Jmeter GUIÉÏÖÆ¶¨²âÊԼƻ®¡±²¿·Ö£©

6¡¢Éú³É±¨¸æÍ¼±í

ÎÒÃÇ¿ÉÒÔͨ¹ýJenkinsÉϰ²×°µÄJMeterPlugins-Standard²å¼þÀ´½«²âÊÔ½á¹ûÎļþ.jtl¸ñʽµÄÎļþ½âÎö³Éͼ±í¡£

$JMETEREXT = /usr/local /apache- jmeter-2.13 /lib/ext
java -jar $ JMETEREXT/CMDRunner.jar --tool Reporter \
--generate- png ResponseTimesOverTime.png -- input-jtl result.jtl -- plugin-type ResponseTimesOverTime java -jar $JMETEREXT / CMDRunner.jar --tool Reporter \
-- generate- png CPU. png --input-jtl cpu.jtl --plugin-type PerfMon
java -jar $ JMETEREXT / CMDRunner.jar --tool Reporter \
--generate-png MEM.png --input-jtl mem.jtl -- plugin- type PerfMon
java -jar $ JMETEREXT / CMDRunner.jar --tool Reporter \
-- generate - png TransactionsPerSecond .png -- input - jtl trans.jtl --plugin- type TransactionsPerSecond

7¡¢job shellÉèÖÃ

JenkinsµÄjobÖÐͨ¹ý²ÎÊý´«µÝ¸øjmeterpropertyÖеıäÁ¿ÖС£

Execute shellµÄÄÚÈÝ£º

source /etc/ profile
THROUGHPUT =`expr 60 \* ${QPS}`
RUNFOLDER =/usr/local/jmeter-demo/src/test/jmeter
JMETERBIN =/usr/local/apache-jmeter-2.13/bin
JMETEREXT =/usr/local/apache-jmeter-2.13/lib/ext
RESULTJTL =$RUNFOLDER/result.jtl
CPUJTL =$RUNFOLDER/cpu.jtl
MEMJTL =$RUNFOLDER/mem.jtl
TRANSJTL =$RUNFOLDER/trans.jtl
rm -f $RUNFOLDER /path.log
rm -f $RUNFOLDER /*.jtl
rm -f $RUNFOLDER /*.png
rm -f $WORKSPACE /*.png
rm -f $WORKSPACE /*.jtl cd / usr/local /jmeter -demo /src /test /jmeter && python appending.py ${ APPENDING}
cd /usr/local/ jmeter-demo /src/test /jmeter && $JMETERBIN/ jmeter.sh - n - t test.jmx -l result .jtl \
-- jmeterproperty threadCount =${CONCURRENCY} \
-- jmeterproperty LoopCount =${LOOPCOUNT} \
-- jmeterproperty adclient =${SERVER} \
-- jmeterproperty UrlFile =path.log \
--jmeterproperty RampUp=${RAMPUP} \
-- jmeterproperty throughput =${THROUGHPUT}
java - jar $JMETEREXT/ CMDRunner.jar -- tool Reporter -- generate-png ${RESULTJTL%.*}_ ResponseTimesOverTime .png -- input-jtl $ RESULTJTL -- plugin- type ResponseTimesOverTime
java -jar $JMETEREXT/ CMDRunner.jar -- tool Reporter -- generate-png ${CPUJTL%.*} _CPU.png -- input-jtl $CPUJTL -- plugin-type PerfMon
java -jar $JMETEREXT/ CMDRunner.jar -- tool Reporter -- generate-png ${MEMJTL%.*}_ MEM.png -- input-jtl $MEMJTL --plugin-type PerfMon
java -jar $JMETEREXT/ CMDRunner.jar -- tool Reporter -- generate- png ${TRANSJTL%.*}_ TransactionsPerSecond .png -- input-jtl $TRANSJTL --plugin-type TransactionsPerSecond
cp /usr/local/ jmeter-demo/src/test /jmeter/ *.png $WORKSPACE
cp /usr/local/ jmeter-demo/src/test /jmeter/ result.jtl $WORKSPACE
   
3195 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù