Apache JMeter
I. Apache JMeter
Apache JMeter´Â 100% ¼ø¼ö ÀÚ¹Ù·Î ¸¸µç ÆÛÆ÷¸Õ½º Å×½ºÆÃ µµ±¸ ÀÔ´Ï´Ù.
±âº»ÀûÀ¸·Î´Â Web ApplicationÀ» Å×½ºÆÃ Çϴµ¥ µðÀÚÀÎ µÇ¾úÁö¸¸ ´Ù¸¥ ±â´Éµéµµ Å×½ºÆ® ÇÒ ¼ö ÀÖµµ·Ï È®ÀåµÇ¾ú´ä´Ï´Ù
±×·³ Apache JMeter·Î ¹«¾ùÀ» ÇÒ ¼ö ÀÖÀ»±î¿ä?
JMeter´Â Á¤ÀûÀÎ °Í »Ó¸¸ ¾Æ´Ï¶ó µ¿ÀûÀÎ ÀÚ¿ø (files, Servlet, Perl, Java Object, DataBase ¿Í Queries, FTP Servers µî) µÑ´Ù ¼º´ÉÀ» Å×½ºÆ® Çϴµ¥ »ç¿ëµË´Ï´Ù. Áï ¼¹ö³ª ³×Æ®¿÷ ȤÀº Object¿¡ ½ºÆ®·¹½º¸¦ °¡ÇÏ¿© ´Ù¾çÇÑ ÇüÅÂÀÇ »óÅ¿¡¼ ¼º´ÉÀ» Àü¹ÝÀûÀ¸·Î ºÐ¼® ÇÒ ¼ö ÀÖµµ·Ï µµ¿ÍÁشٴ °Ì´Ï´Ù.
±×·³ JMeterÀÇ Æ¯Â¡À» °£´ÜÈ÷ »ìÆìº¸ÁÕ.
-. HTTP³ª FTP¼¹ö »Ó¸¸ ¾Æ´Ï¶ó ÀÓÀÇÀÇ µ¥ÀÌÅͺ£À̽º Äõ¸®µµ ¼º´ÉÀ» Å×½ºÆ® ÇÒ ¼ö ÀÖ½À´Ï´Ù.
-. 100% ¼ø¼ö ÀÚ¹Ù·Î ±¸ÇöµÇ¾ú±â ¶§¹®¿¡ ±âÁ¾¿¡ »ó°ü¾øÀÌ ½ÇÇà ÇÒ ¼ö ÀÖ½À´Ï´Ù.
-. Swing ±â¹ÝÀÇ Componet¸¦ Áö¿øÇÕ´Ï´Ù.
-. Multithreading ±â´ÉÀ» ÀÌ¿ëÇÏ¿© µ¿½Ã¿¡ ¸¹Àº Thread¸¦ ¹ß»ý ½Ãų¼öµµ ÀÖÀ¸¸ç ȤÀº µ¶¸³µÈ Thread¸¦ ¿¬¼ÓÀûÀ¸·Î ¹ß»ý½ÃÄÑ Å×½ºÆÃ ÇÒ ¼öµµ ÀÖ½À´Ï´Ù
-. GUI ȯ°æÀ¸·Î ºü¸¥ ÀÛ¾÷À» Á¤È®ÇÏ°Ô ÇÒ ¼ö ÀÖ´ä´Ï´Ù.
-. ij½ÌµÈ °á°ú¸¦ ºÐ¼®Çϰí ÀçÇö ÇÒ ¼ö ÀÖ½À´Ï´Ù.
-. ³ôÀº È®À强ÀÌ ÀÖ½À´Ï´Ù.
II. ´Ù¿î·Îµå
´Ù¿î ·Îµå´Â ¿ä±â¼..
http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi
III. ¼³Ä¡ ¹× ½ÇÇà
¼³Ä¡Àü ¿ä±¸»çÇ×À» ¾Ë¾Æº¾½Ã´Ù
¸ÕÀú jdk 1.4 ÀÌ»óÀ̾î¾ß ÇÕ´Ï´Ù. jdk 1.4.1 ÀÌÇϹöÁ¯¿¡¼´Â GUI elements°¡ Àß ÀÛµ¿ÇÏÁö ¾Ê´Â ´Ù´Â bug°¡ ·¹Æ÷ÆÃ µÇ¾ú½À´Ï´Ù. ¿î¿µÃ¼Á¦´Â unix (solaris, linux) ¹× Widnows °è¿ ¸ðµÎ Àß ÀÛµ¿ÇÕ´Ï´Ù.
±×·³ ´Ù¿î ¹ÞÀº ÆÄÀÏÀÇ ¾ÐÃàÀ» Ç®¾îº¾½Ã´Ù. Á¦°¡ ¹ÞÀº ÆÄÀÏÀº 2.0.2¹öÁ¯À̱º¿ä
Àá±ñ µð·ºÅ丮 ±¸Á¶¸¦ º¸Áö¿ä.
/bin ¿¡´Â ½ÇÇà°ü·Ã ÆÄÀϵéÀÌ µé¾îÀÖ½À´Ï´Ù.
/docs ¿Í /printable_docs¿¡´Â »ç¿ëÀÚ ¸Å´º¾ó°ú µ¥¸ð°¡ µé¾îÀÖ½À´Ï´Ù.
/extras ´Â JMeter¸¦ ant·Î ¹Ù·Î ½ÇÇàÇÒ¼ö ÀÖµµ·Ï ÇÏ´Â ¼³¸íÀÌ µé¾îÀÖ°í¿ä
/lib¿¡´Â JMeter¸¦ ½ÇÇàÇÏ¸é¼ ·ÎµùÇØ¾ßÇÒ ´Ù¸¥ ¼µå ÆÄƼ jarÆÄÀÏÀ» ³ÖÀ¸¸é µË´Ï´Ù ¸¸¾à JDBC Å×½ºÆÃÀ» ÇÑ´Ù¸é ÇØ´çÇÏ´Â º¥´õÀÇ JDBC¸¦ ³ÖÀ¸¸é µÇ°Ú³×¿ä
¤¸ ¤¿ ~ ±×·³ ½ÇÇàÇØ º¾½Ã´Ù /bin/jmeter.bat À» µûºíŬ¸¯ ÇÕ´Ï´Ù.
IV. Å×½ºÆ® °èȹ ¼ö¸³
Å×½ºÆ® ½ÃÀÛ Àü ¸ÕÀú °èȹÀ» ¼ö¸³Çغ¾½Ã´Ù ¾î¶»°Ô ÇØ¾ß ÇÒ±î¿ä?
±×³É ½±°Ô ÀϹÝÀûÀ¸·Î »ý°¢ÇØ º¾½Ã´Ù
1) Å×½ºÆ® Àοø ¹× ¸î¹øÀ» ¹Ýº¹ÇÒ Áö °áÁ¤ÇÑ´Ù
2) ùȸéÀ» °£´Ù
3) ·Î±×ÀÎ ÆäÀÌÁö·Î °£´Ù
4) 500ms Á¤µµ ½®´Ù (·Î±×ÀÎ ¾ÆÀ̵ð, ÆÐ½º¿öµå ÀԷ½ð£)
5) ·Î±×ÀÎÀ» ÇÑ´Ù
6) ¸Þ´º¸¦ Çϳª¾¿ Ŭ¸¯ÇÑ´Ù
7) Ưº°ÇÑ ¸Þ´º´Â ¹Ýº¹ÀûÀ¸·Î Ŭ¸¯ÇÑ´Ù.
8) ¶ÇÇÑ ¾î¶² ¸Þ´º´Â µü Çѹø¸¸ Ŭ¸¯ÇØ¾ß ÇÑ´Ù.
9) ¶ÇÇÑ ´Ù¸¥ ¸Þ´º´Â ·£´ýÇÏ°Ô Å¬¸¯ÇÑ´Ù.
µîÀÇ Á¤µµ°¡ µÇ°ÚÁö¿ä..
±×·³ ÀÌ·¯ÇÑ ÀÛ¾÷µéÀÌ ¸ðµÎ JMeter·Î °¡´ÉÇѰ¡? YES!!
V. Ãʰ£´Ü Å×½ºÆ® ¿¹Á¦
ÀÚ ±×·³ ¸ÕÀú °£´ÜÇÑ ¿¹Á¦¸¦ Çѹø ¸¸µé¾î º¾½Ã´Ù.
¸ÕÀú JMeter¸¦ ½ÇÇàÇÏ¸é ´ÙÀ½°ú °°Àº ȸéÀÌ ³ª¿Ã°Ì´Ï´Ù.
¸¹ÀÌ º¸°í ¾ó·· Àͼ÷ÇØ Áý½Ã´Ù.
¿ÞÂÊÆí¿¡ 'Test Plan'À̶ó´Â ³ëµå°¡ º¸À̴µ¥ ÀÌ ³ëµå´Â Å×½ºÆ® °èȹÀ» ³ªÅ¸³¾ ÀÏ·ÃÀÇ ½ÇÇà ÄÚµå ÁýÇÕ À̶ó°í º¸¸é µË´Ï´Ù (¸»ÀÌ Á» ¾î·Æ³¶?-_-?)
Áß°£¿¡ User Defined Variables ¶ó°í ³ª¿À´Âµ¥ ÀÌ°Ç ¹ºÁö Àúµµ Àß ¸ð·ç°Ú½À´Ï´Ù -_-;
¾Ïư ºÐ¸íÇÑ°Ç ¿©±â¼ Á¤ÀÇÇÑ º¯¼ö ¹× °ªÀº Å×½ºÆ® Ç÷£ ÀÌÇÏ ³ëµå¿¡¼ ¸ðµÎ »ó¼Ó¹Þ¾Æ »ç¿ëÇÑ´Ù´Â °Ì´Ï´Ù.
´ÙÀ½¿¡ üũ¹Ú½º µÎ°³°¡ Àִµ¥ ù¹øÂ° 'Run each Thread..' ¿ä³ðÀº Thread¸¦ ¼øÂ÷ÀûÀ¸·Î ½ÇÇà ÇÏ°Ú³Ä ¾Æ´Ï¸é µ¿½Ã¿¡ ½ÇÇàÇϰڳÄÀÇ ¿©ºÎ¸¦ ¹¯´Âµ¥ üũÇÏÁö ¾ÊÀ¸¸é µ¿½Ã¿¡ ½ÇÇà Çϴ°ɷΠµÇ¾î ÀÖ½À´Ï´Ù. ¿©±â¼ Thread¶õ Á¶±Ý ÈÄ¿¡ ¼³¸í ÇϰڽÀ´Ï´Ù. µÎ¹øÂ° üũ¹Ú½º´Â °¢ ¿äû¿¡´ëÇÑ ¼¹öÀÇ ÀÀ´ä µ¥ÀÌÅ͸¦ ÆÄÀÏ¿¡ ±â·ÏÇÒ °ÍÀÎÁö ¿©ºÎ¸¦ ¸»ÇÏ´Â °ÍÀε¥ ÀÌ°É Ã¼Å©ÇÏ¸é ¼º´ÉÀÌ È®~ ¶³¾îÁö´Ï ¿Ø¸¸ÇÔ ÇÏÁö ¸»¶ó°í µÇ¾îÀÖ½À´Ï´Ù.
ÀÚ ÀÌÁ¦ º»°ÝÀûÀ¸·Î ½ÃÀÛÇØ º¾½Ã´Ù. 'Test Plan'À» ¿À¸¥ÂÊ ¸¶¿ì½º·Î Ŭ¸¯ÇØ º¾½Ã´Ù
Thread Group À̶õ Å×½ºÆ® °èȹÀ» ¼öÇàÇÒ ¼öÇà ´ÜÀ§ ±×·ìÀÌ¶ó º¸¸é µÉ°Í °°½À´Ï´Ù. ÀÌ Thread GroupÀ» ¿©·¯°³ Ãß°¡ ÇÒ ¼öµµ ÀÖÀ¸¸ç ±×·² °æ¿ì À§¿¡¼ ¾ð±ÞÇÑ Ã¼Å©¹Ú½º·Î µ¿½Ã¿¡ ½ÇÇà ÇÒ °ÍÀÎÁö ¼øÂ÷ÀûÀ¸·Î ½ÇÇà ÇÒ °ÍÀÎÁö °áÁ¤ ÇØ¾ß ÇÕ´Ï´Ù.
±×·³ À̸§À» ¹»·Î ÇÒ±î¿ä? 'Jakarta Project'¶ó ÇÏÁö¿ä -_-;
¤¸ ¤¿ À̸§À» 'Jakarta Project'¶ó ÇÏ¿´½À´Ï´Ù ¸ÚÁý´Ï´Ù ;;
°¡¿îµ¥ üũ¹Ú½º 3°³°¡ Àֳ׿ä
ÀÌ°Ç ¸¸¾à Å×½ºÆ® ¼öÇ൵Áß ¿¡·¯(Å×½ºÆ® ´ë»óÀÇ ¿¡·¯)°¡ ¹ß»ý ÇÑ °æ¿ì °è¼ÓÇÒ °ÍÀÎÁö Thread¸¸ ¸ØÃâ °ÍÀÎÁö ¾Æ´Ï¸é Å×½ºÆ® ÀÚü¸¦ ¸ØÃâ°ÍÀÎÁö¸¦ ¼±ÅÃÇÕ´Ï´Ù ¿©±â¼± ±×³É 'Continue'·Î ÇÏÁö¿ä
±×´ÙÀ½ Ç׸ñÀÌ °¡Àå Áß¿äÇϹǷΠÀß ¼÷ÁöÇØ¾ß ÇÕ´Ï´Ù.
Number Of Threads ¶õ ÀÌ Thread GroupÀÌ »ý¼ºÇÒ Thread°¹¼ö¸¦ ¸»Çϴµ¥, ½±°Ô ¸»Çϸé ÀÌ ±×·ì¿¡¼´Â ¸î »ç¶÷À¸·Î Å×½ºÆ® ÇÒ °ÍÀÌ³Ä ¶ó°í »ý°¢ÇÏ¸é µË´Ï´Ù.
Ramp-Up Period (in seconds)´Â ÇÑ Thread°¡ ½ÃÀÛ µÈ ÈÄ ´ÙÀ½ Thread°¡ ½ÃÀÛ µÉ ¶§±îÁöÀÇ ´ë±â ½Ã°£À» ÀǹÌÇÕ´Ï´Ù ¿¹¸¦ µé¾î º¸ÀÚ¸é 10°³ÀÇ Thread°¡ »ç¿ëµÇ°í Ramp-up Period°¡ 50À̶ó¸é ÃÑ 10°³ÀÇ Thread°¡ ¸ðµÎ ½ÇÇàµÇ·Á¸é 50Ãʰ¡ °É¸°´Ù´Â °Ì´Ï´Ù. Áï Æò±ÕÀûÀ¸·Î º¸ÀÚ¸é ÇÑ Thread°¡ ½ÇÇà ÈÄ ´Ù¸§ Thread±îÁö 5(50/10)ÃÊÁ¤µµ ÈÄ¿¡ ½ÇÇà µÇ´Ù´Â °ÅÁö¿ä (ÈÞ ¾î·Æ´Ù =3)
Loop Count´Â ½ÇÇà Ƚ¼ö¸¦ ¸»ÇÕ´Ï´Ù. forever¿¡ üũÇÏ¸é ¹«ÇÑ ·çÇÁ¸¦ µ½´Ï´Ù. À̶§´Â »ç¿ëÀÚ°¡ ¼öµ¿À¸·Î STOP ½ÃÄÑÁà¾ß ÇÕ´Ï´Ù.
ÀÌÁ¦ 'Jakarta Project'¿¡ ¸¶¿ì½º¸¦ ¿À¸¥ÂÊÀ¸·Î Ŭ¸¯ ÈÄ 'Add -> Config Element -> HTTP Request Defaults'¸¦ ¼±ÅÃÇÕ´Ï´Ù.
ÀÌ 'HTTP Request Defaults'´Â HTTP request¸¦ ¼³Á¤ÇÔ¿¡ ÀÖ¾î¼ ÀÌ ³ëµå ÀÌÇÏÀÇ HTTP request´Â ¸ðµÎ HTTP Request Defaults¿¡¼ ¼³Á¤ÇÑ °ªÀ» µðÆúÆ®·Î »ó¼Ó ¹Þ¾Æ »ç¿ëÇϰڴٴ °Ì´Ï´Ù.
¹Ýµå½Ã Ãß°¡ÇØ¾ß ÇÒ Çʼö ¿ä¼Ò´Â ¾Æ´Õ´Ï´Ù¸¸ ÀÌÈÄÀÇ Ãß°¡ÇØ¾ß ÇÒ HTTP Request³ëµå°¡ ¸¹´Ù¸é ÀÏÀÏÀÌ ´Ù ´ÙÀ½°ú °°ÀÌ ¼¼ÆÃÇØ¾ß ÇÔÀ¸·Î À̸¦ Ãß°¡ÇØ ³õ´Â ÆíÀÌ ÁÁ½À´Ï´Ù.
Protocol¿¡´Â ´ç¿¬È÷ À¥ÀÌ´Ï HTTP¸¦ ½á¾ß°Ú°í Server name or ip¿¡´Â ¿¬°áÇÒ ¼¹öÀÇ À̸§À̳ª ip¸¦ Àû½À´Ï´Ù. ÁÖÀÇÇÒ°ÍÀº ÁÖ¼Ò±îÁö ¸ðµÎ ¿©±â¿¡ ÀûÀ¸¸é ¾ÈµË´Ï´Ù. ³ª¸ÓÁö ºÎºÐÀº path ºÎºÐ¿¡ Àû¾î¾ß ÇÕ´Ï´Ù.
¿¹¸¦µé¾î naver¿¡¼ jsp¸¦ ÀÔ·ÂÇÏ¿© ã±âÇÏ¸é ´ÙÀ½ ÁÖ¼Ò°¡ »ý±â´Âµ¥ ÀÌ ¿¹¸¦ µé¾îº¸µµ·Ï ÇÏÁö¿ä http://search.naver.com/search.naver?where=nexearch&query=jsp&frm=t1
protocol : http
servarname or ip : search.naver.com
path : search.naver
parameter name : where, query, frm
parameter value : nexearch, jsp, t1
À» ÀÔ·ÂÇϸé OK~
ÇÏÁö¸¸ À§ÀÇ ¼³Á¤°ª ¼¼ÆÃÀ¸·Î ¿Ï·áµÈ °ÍÀÌ ¾Æ´Õ´Ï´Ù. ÀÌÁ¦ºÎÅÍ Å×½ºÆ® ½ÇÇàÀ» Çϱâ À§ÇÑ
½ÇÁúÀûÀÎ ³ëµå¸¦ Ãß°¡ÇØ¾ß ÇÕ´Ï´Ù.
'Jakarta Project'¸¦ ¿À¸¥ÂÊ ¸¶¿ì½º·Î Ŭ¸¯ÇÏ¿© 'Add -> Sampler -> HTTP Request'¸¦ ¼±ÅÃÇÕ´Ï´Ù.
HTTP Request´Â HTTP¿äûÀ» À¥¼¹ö¿¡ Àü¼ÛÇÏ¿© ±× °á°ú¸¦ ¹Þ¾Æ¿À´Â SamplerÀÔ´Ï´Ù.
¿ì¸®´Â Á»Àü¿¡ ¼¼ÆÃÇÑ HTTP Request DefaultÀÇ °ªÀ» ¸ðµÎ »ó¼ÓÇÏ¿© »ç¿ëÇÒ °ÍÀ̱⠶§¹®¿¡ ¿©±â¼ Ưº°È÷ ¼¼ÆÃÇÒ °ÍÀÌ ¾ø½À´Ï´Ù.
ÀÌÁ¦ request¿¡ ´ëÇÑ Áغñ´Â µÇ¾ú°í.. ÀÌÁ¦ ±×¿¡ ´ëÇÑ ÀÀ´äÀ» ¾î¶»°Ô ºÐ¼® ÇÒ °ÍÀÎÁö¿¡ ´ëÇØ Áغñ¸¦ ÇØ º¾½Ã´Ù.
'Jakarta Project'¸¦ ¿ª½Ã³ª ¿À¸¥ÂÊ ¸¶¿ì½º·Î Ŭ¸¯ÇÏ¿© 'Add -> Listener -> View Results Tree¿Í Graph Results'¸¦ Ãß°¡ÇÕ´Ï´Ù
¸ðµç°Ô ¤§ ¤¿ ~ ÁغñµÇ¾ú½À´Ï´Ù. ÀÌÁ¦ ½ÇÇàÇØ º¸µµ·Ï ÇÏÁö¿ä!
ÀÌÁ¦ »óÀ§ ¸Þ´ºÁß 'RUN -> START'¸¦ Ŭ¸¯Çغ¾½Ã´Ù.
±×·¯¸é ¿ìÃø »ó´Ü¿¡ ÀÖ´ø ¾ÆÁÖ Àڱ׸¶ÇÑ ³×¸ð¹Ú½º°¡ ¿¬µÎ»ö À¸·Î Ç¥½ÃµË´Ï´Ù. ÀÌ Ç¥½Ã°¡ ÇöÀç Å×½ºÆ®ÁßÀ̶ó´Â Ç¥½ÃÀÔ´Ï´Ù. Thrad Group¿¡ ¼¼ÆÃµÈ Á¤º¸¿¡ ÀÇÇØ µü 10¹ø request°¡ °¡°Ô µÉ °ÍÀÔ´Ï´Ù.
¸ÕÀú View Result TreeºÎÅÍ Å×½ºÆ® ½ÇÇà °á°ú¸¦ º¾½Ã´Ù.
°¢ HTTP Request ¿¡ ´ëÇØ ¿©·¯ Á¤º¸µéÀ» Ç¥½ÃÇØ Áִ±º¿ä!
ù¹øÂ° ÅÇÀÎ 'Sampler result'¿¡´Â load time, response code, response header, server, content-type, lengthµîÀÇ Á¤º¸°¡ Ç¥½ÃµÈ´Ï´Ù.
µÎ¹øÂ° ÅÇÀÎ 'Request'¿¡´Â requestÇüŰ¡ Ç¥½Ã µÇ´Â±º¿ä
¼¼¹øÂ° ÅÜÀÎ 'Response data'¿¡´Â ÀÀ´ä¹ÞÀº Html Äڵ带 º¸¿©ÁÖ¸ç ¶ÇÇÑ À̸¦ RenderÇØ¼ º¸¿©ÁÝ´Ï´Ù.
'Graph Result'¸¦ º¾½Ã´Ù. ÀÌ ±×¸²Àº Thread Group¿¡¼ loop count¸¦ foreverÇØ¼ ³ªÅ¸³½ ±×¸²ÀÔ´Ï´Ù. ºñÁê¾ó ÇÏÁÒ?
°£´ÜÇÏÁÒ? ¿©±â¼ ¹è¿î°ÍÀ» ¹ÙÅÁÀ¸·Î ÀÀ¿ëÇÏ¸é ¾î¶°ÇÑ Å×½ºÆ® °èȹÀ̵çÁö ½ÇÇà °¡´É ÇÏ´ä´Ï´Ù. ÀÚ ´ÙÀ½ ½Ã°£¿¡´Â JMeterÀÇ °í±Þ»ç¿ë¹ýÀ» ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù.
=============================================
º»¹®¼´Â ÀÚÀ¯·Ó°Ô ¹èÆ÷/º¹»ç ÇÒ¼ö ÀÖÁö¸¸
À̹®¼ÀÇ ÀúÀÚ¿¡ ´ëÇÑ ¾ð±ÞÀ» »èÁ¦ÇÏ½Ã¸é ¾ÈµË´Ï´Ù
ÀúÀÚ : GoodBug (unicorn@jakartaproject.com)
ÃÖÃÊ : http://www.jakartaproject.com
=============================================