JMeter๋??
Apach JMeter๋ ์จ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ์ ๋ ๋ค์ํ ์๋น์ค์ ์ฑ๋ฅ์ ๋ถ์ํ๊ณ ์ธก์ ํ๊ธฐ ์ํ ๋ก๋ ํ ์คํธ ๋๊ตฌ๋ก ์ฌ์ฉ ํ ์ ์๋ Apache ํ๋ก์ ํธ์ด๋ค(Wikipedia ์ฐธ์กฐ)
JMeter๋ฅผ ์ด์ฉํ๋ฉด ์น ์ดํ๋ฆฌ์ผ์ด์
์ ๋ถํ๋ฅผ ๊ฑธ์ด ์ฑ๋ฅ ํ
์คํธ๋ฅผ ํ ์ ์๋ค.
๋ง์นจ ํ์ฌ์์ JMeter์ ๋ํ ์ธ๋ฏธ๋๊ฐ ์ด๋ ค ์ฐธ์ ํ ์ด์ ๋ํ ๊ฐ๋จํ ํฌ์คํ
์ ํด๋ณด๋ ค๊ณ ํ๋ค.
JMeter ์ค์น
JMeter๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ์ผ๋จ ๋จผ์ ๋ค์ด๋ก๋๋ฅผ ํด์ผํ๋ค.
์ ํ์ด์ง์ ์ ์ํ๊ฒ ๋๋ฉด Binaries์ ๋๊ฐ์ง ๋ฒ์ ์ด ์กด์ฌํ๋ ๊ฒ์ ์ ์ ์๋๋ฐ,
zip์ ์๋์ฐ์์ tgz๋ ๋ฆฌ๋
์ค ํ๊ฒฝ์์ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ด ํฌ์คํ ์ zip๋ฒ์ ์ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํ๊ณ ์ ํ๋ค.
์์ถ์ ํด์ ํ๊ณ bin ํด๋์ ๋ค์ด๊ฐ๋ณด๋ฉด ApachJMeter Jar ํ์ผ์ ๋ณผ์ ์๋ค.
์ ํ์ผ์ ์คํํ๋ฉด JMeter ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ค.
์ ํ๋ฉด์ด ์ถ๋ ฅ๋์๋ค๋ฉด ์ค์นํ๋๋ฐ ์ฑ๊ณตํ ๊ฒ์ด๋ค
JMeter ์ฌ์ฉํด์ ํ ์คํธ ์ค๋นํ๊ธฐ
์ด์ JMeter๋ฅผ ์ค์นํ์ผ๋ ํ
์คํธ๋ฅผ ์งํํ๋ค.
์ข์ธก ์๋จ์ ๋ณด๋ฉด ํ
์คํธ ๊ณํ์ ํ์ ํญ๋ชฉ๋ค์ ์ถ๊ฐํ์ฌ ํ
์คํธ๋ฅผ ์งํํ๋ ๋ฐฉ์์ผ๋ก ์งํ๋๋ค.
Thread Group
Thread Group์ด๋, JMeter์์ ๋ค์ํ ํ์ Element ํญ๋ชฉ๋ค์ ์ ์ดํ๊ธฐ ์ํ ์์์ ์ด๋ค. Thread Group์ ์์ฑํ๋ฉด ๋ถํ ํ ์คํธ ์ํ ์ ์ํ๋ ํญ๋ชฉ๋ค๋ ๋ณ๊ฒฝํ๊ธฐ ์ํ ์ค์ ํญ๋ชฉ๋ค์ด ๋์จ๋ค.
ํ
์คํธ ๊ณํ์ ์ฐ๋ ๋ ๊ทธ๋ฃน์ ์ถ๊ฐํด๋ณด์
์ฐ๋ ๋ ๊ทธ๋ฃน์ ์ถ๊ฐํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ ๋ณผ ์ ์๋ค.
๋ค๋ฅธ ํญ๋ชฉ๋ค์ ํ๊ธ๋ก ํด์๋์ด ์๊ธฐ์ ramp up ์๊ฐ๋ง ๊ฐ๋จํ๊ฒ ์ค๋ช
ํ์๋ฉด ์ฐ๋ ๋๋ค์ ์คํ์ํค๊ธฐ ์ํ ์๊ฐ์ ์๋ฏธํ๋ค๊ณ ํ๋ค.
๋ง์ฝ ์ฐ๋ ๋๋ฅผ 30๊ฐ ์ฃผ๊ณ ramp-up์ 120์ด๋ฅผ ์ค๋ค๊ณ ํ๋ฉด, ๊ฐ 1๊ฐ์ ์ฐ๋ ๋๊ฐ 4์ด ๊ฐ๊ฒฉ์ผ๋ก ๋์ํ๋ค.
Loop Count
ํ Thread ๋น sampler๋ก ์๋ ํ ์คํธ ์๋๋ฆฌ์ค๋ฅผ ๋ช ๋ฒ ๋๋ฆด์ง๋ฅผ ์ค์
๋ค์ ์์ ์ผ๋ก ๋์ด๊ธฐ๊ฐ์ ์ ๋จผ์ ํ ์คํธํ๊ธธ ์ํ๋ ํ์ด์ง๋ฅผ ์คํํ๊ณ , Proxy์ค์ ์ ์งํํ๋ค.
Proxy๋?
Proxy๋ '๋๋ฆฌ'
๋ผ๋ ์๋ฏธ๋ก, ๋คํธ์ํฌ ๊ธฐ์ ์์๋ ํ๋กํ ์ฝ์ ์์ด์ ๋๋ฆฌ ์๋ต ๋ฑ์์ ์น์ํ ๊ฐ๋
์ด๋ค.
๋ณด์ ๋ถ์ผ์์๋ ์ฃผ๋ก ๋ณด์ ์์ ์ด์ ๋ก ์ง์ ํต์ ํ ์ ์๋ ๋ ์ ์ฌ์ด์์ ํต์ ์ ํ ๊ฒฝ์ฐ ๊ทธ ์ฌ์ด์ ์์ด์ ์ค๊ฒ๊ธฐ๋ก์ ๋๋ฆฌ๋ก ํต์ ์ ์ํํ๋ ๊ธฐ๋ฅ์ ๊ฐ๋ฆฌ์ผ 'ํ๋ก์'
, ๊ทธ ์ค๊ณ ๊ธฐ๋ฅ์ ํ๋ ๊ฒ์ 'ํ๋ก์ ์๋ฒ'
๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ฐ๋ฆฌ๋ ํ๋ก์ ์ค์ ์ ์งํํจ์ผ๋ก์จ JMeter๋ฅผ ์ค๊ณ๊ธฐ๋ก ๋๊ณ ํ ์คํธ๋ฅผ ์งํํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
์๋์ฐ ์ฌ์ฉ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฒ์์ฐฝ์ ํ๋ก์๋ฅผ ์
๋ ฅํ๋ฉด ํ๋ก์ ์ค์ ๋ณ๊ฒฝ ๋ฉ๋ด๊ฐ ์ถ๋ ฅ๋๋ค.
์ค์ ๋ฉ๋ด๋ก ์ง์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฉ๋ด๊ฐ ์ถ๋ ฅ๋๋ค.
ํ๋จ์ฒ๋ผ ์ฃผ์์๋ ํ ์คํธ ํ๊ณ ์ถ์ ์ฃผ์ ํฌํธ์๋ ์ํ๋ ํฌํธ๋ฅผ ์ ๋ ฅํด์ค๋ค.
๋๋ ๋ก์ปฌ์๋ฒ๋ก ์งํํ๊ณ ์๊ธฐ ๋๋ฌธ์ localhost๋ฅผ ์
๋ ฅํด์คฌ๋ค.
์ค์ ์ ์๋ฃํ๊ณ ์ ์ฅ๋ฒํผ์ ๋๋ฌ์ค๋ค. ์ด๋ ๊ฒ ํ๋ก์ ์ค์ ์ด ์๋ฃ ๋์๋ค.
HTTP(S) Test Script Recorder
Proxy๋ฅผ ์ค์ ํ์ฌ ์์ฒญ URL์ ์์งํ์ฌ sampler๋ฅผ ์๋์ผ๋ก ์์ฑํ๊ธฐ ์ํ ์์
์ด๋ค.
Recorder๋ฅผ ํค๊ณ ๋ด๊ฐ ํ๊ณ ์ถ์ ํ
์คํธ๋ฅผ ์น์์์ ์งํํ๊ฒ ๋๋ฉด ์ด ํ๋๋ค์ด ๋
นํ๋์ด ๋๊ฐ์ด ํ
์คํธ๋๋ค๊ณ ์ดํดํ๋ฉด ํธํ๋ค.
ํ ์คํธ ๊ณํ์ ์ ์์ ์ผ๋ก ์ถ๊ฐํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ด ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ด์ด์ ํ๋ก์ ์ค์ ์ ์งํํ ํฌํธ ๋ฒํธ์ ์ผ์นํ๋์ง ํ์ธํด์ฃผ๊ณ
ํ๊ฒ์ปจํธ๋กค๋ฌ์์ ํ
์คํธ ๊ณํ์์ฑ ํญ์์ ํ
์คํธ๊ณํ > ์ฐ๋ ๋ ๊ทธ๋ฃน์ผ๋ก ์ค์ ํด์ค๋ค.
๋ํ ํ๋จ์ Redirect๋ค์ ๋ฐ๋ผ๊ฐ๊ธฐ๋ฅผ ํด์ ํด์ค๋ค.
์ค์ ์ด ์๋ฃ๋์๋ค๋ฉด ์์๋ฒํผ์ ๋๋ฅด๊ณ ํ ์คํธ ์ํ๋ ์์ ์ ๋ นํํ๋ค.
์์
์ด ์๋ฃ๋์๋ค๋ฉด ์ค์ง๋ฒํผ์ ๋๋ฅด๊ณ ์ฐ๋ ๋ ๊ทธ๋ฃน์ ์ด์ด๋ณด์
๋ค์๊ณผ ๊ฐ์ด ๋ง์ ํญ๋ชฉ๋ค์ด ์๊ฒผ์ ๊ฒ์ด๋ค.
์ด sampler๋ฅผ ๊ฐ์ง๊ณ ํ
์คํธ๋ฅผ ์ํํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ด์ ํ
์คํธ๊ณํ์ ์ ์ฅํด๋ณด์
ํ
์คํธ ๊ณํ์ ์ ํํ๊ณ ์ ์ฅ๋ฒํผ์ ๋๋ฅด๋ฉด jmxํ์ผ๋ก ์ ์ฅ๋๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
JMeter๋ก ํ ์คํธ ํด๋ณด๊ธฐ
์์์ jmxํ์ผ๋ ์ค๋นํ๊ณ ์ค์น๋ ์๋ฃํ์ผ๋ ์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ํ
์คํธ๋ฅผ ์งํํด๋ณด๋๋ก ํ์.
๊ธฐ๋ณธ์ ์ผ๋ก ํ๋์ ์๋ฒ๋ฅผ ์คํํ๋ฉด ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ
์คํธํ๋ฉด ๋๋ค.
$(์์น)jmeter.sh -n -t (jmxํ์ผ์์น) -j (output์์น)/output/run.log -l (output์์น)/output/result.jtl -e -o (output์์น)/output/html
์ด ๋ช ๋ น์ด๋ฅผ ์ํํ๊ฒ ๋๋ฉด jmeter.sh๋ก jmx์ ์คํํ์ฌ outputํ์ผ๋ค์ ์์ฑํ๊ฒ ๋ฉ๋๋ค.
result ํ์ผ๋ค์ ๋ณด๋ฉฐ ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๋ค.
Jmeter๋ก ํ ์คํธ๋ฅผ ํ ๋ dstat์ ์ฌ์ฉํ๋ฉด cpu๋ ๋ฉ๋ชจ๋ฆฌ๋ฑ ํ๋์จ์ด ๋ถํ์ ๋ํ ์์น๋ฅผ ์ฝ๊ฒ ์ดํด ๋ณผ์ ์๋ค.
dstat
-
์ค์น
yum install dstat
-
์ฌ์ฉ
dstst
์ ์ต์ ์์ด ์คํํ๋ฉด -cdngy ์ต์ ์ ์ค๊ฒ๊ณผ ๋์ผํ๋ฉฐ, CPU,disk,network,paging,system ์ ๋ณด๋ฅผ ๊ฐฑ์ ํ๋ฉฐ ๋ณด์ฌ์ค๋ค. -
๋ก๊ทธํ์ผ ํ์ผ๋ก ์ ์ฅ
dstat --output dstat-log.csv -cdnpmrt
๋จผ์ dstat์ ์คํํ ๋ค์ run์ ์คํํ์ฌ jmeter๋ก result ํ์ผ์ผ๋ก๋ ์๋ต์๋๋ฅผ ํ ์คํธํ๊ณ , dstat์ผ๋ก ํ๋์จ์ด ๋ถํ๋์ ๋ํ์ฌ ์์๋ณผ์ ์๋ค.