์ด์ ์ Ngrinder๋ฅผ ์ด์ฉํด ๋ถํํ ์คํธ๋ฅผ ์งํํด๋ณธ ์ ์ด ์๋ค. Naver์์ ์ ์ํ ์คํ ์์ค ํด์ด๋ผ์ ๋น๊ต์ ์์์๊ถ์์ ๋ง์ด ์ฌ์ฉํ๋ ๋๋์ด์๋ค. ์ด๋ก ์ธํด ์ฐธ๊ณ ํ ๋ฌธ์๊ฐ ๋ง์ ํธ์ ์๋์๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ์ ๊ฝค ๋ง์ ์๊ฐ์ด ํ์ํ๋ค. ๋ฟ๋ง ์๋๋ผ Ngrinder๋ ๋ถํํ ์คํธ ๋ฐ์ดํฐ๋ค์ `.csv`ํ์ผ๋ก ์ ๊ณตํ๋๋ฐ ๋งค๋ฒ ์ด๊ณ , ๋ซ์ผ๋ฉฐ ๊ด๋ฆฌํ๋๊ฒ ์กฐ๊ธ ๊ท์ฐฎ์๋ค.
๊ทธ๋์ ์ด๋ฒ์๋ Jmeter๋ฅผ ์ฌ์ฉํด๋ณด๊ณ ์ ํ๋ค. Jmeter๋ Apache์์ ์ ์ํ Java ๊ธฐ๋ฐ์ ์คํ ์์ค ํด์ด๋ค.
๊ตฌ๊ธ ๊ฒ์ ํธ๋ ๋๋ง ๋ณด๋๋ผ๋ Ngrinder์ ๋น๊ต๊ฐ ๋์ง ์๋๋ค. ๊ทธ ๋ง์ ๋ ํผ๋ฐ์ค๊ฐ ํจ์ฌ ๋ง๋ค๋ ๊ฒ์ด๋ค. ๋ฟ๋ง ์๋๋ผ Jmeter๋ swing์ผ๋ก ๋ง๋ค์ด์ง GUI ํด ๋ด์์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ํ์ธํ ์ ์๋ค. ๋ ์์ธํ ๋ด์ฉ์ ์ฒ์ฒํ ์ดํด๋ณด๋๋ก ํ์.
Jmeter ์ค์น ๋ฐ ์คํ
์ค์น
ํ๋จ์ ๋งํฌ์ ๋ค์ด๊ฐ๋ฉด Binaries ํ์ผ๊ณผ Source ํ์ผ์ด ์ ๊ณต๋๋๋ฐ ์์ ํด์ ์ฌ์ฉํ ๊ฒ์ด ์๋๋ผ๋ฉด Binaries ํ์ผ์ ๋ฐ์ผ๋ฉด ๋๋ค.
Apache JMeter - Download Apache JMeter
Download Apache JMeter We recommend you use a mirror to download our release builds, but you must verify the integrity of the downloaded files using signatures downloaded from our main distribution directories. Recent releases (48 hours) may not yet be ava
jmeter.apache.org
Jmeter๋ฅผ ์คํํ๊ธฐ ์ํด์๋ Java 8๋ฒ์ ์ด์์ด ํ์ํ๋ฐ ๋์ด๊ฐ๋๋ก ํ๊ฒ ๋ค.
์คํ
์คํ์ Mac์ ๊ธฐ์ค์ผ๋ก ๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด jmeter.sh ํ์ผ์ ์คํํด์ฃผ๋ฉด ๋๋ค.
$ sh apache-jmeter-{VERSION}/bin/jmeter.sh
ํ ์คํธ ์ธํ
- ํ ์คํธ ํ๊ฒฝ: Mac M1 Max / RAM 64GB / SSD 1TB
- ํ ์คํธ ์๋๋ฆฌ์ค: 10๋ช ์ ์ฌ์ฉ์๊ฐ 10์ด๊ฐ ํํ์ด์ง`localhost:8080`์กฐํ
- ํ ์คํธ ๋ชฉ์ : ํํ์ด์ง์ ๊ฑธ๋ ค์๋ Cache ์ฑ๋ฅ๊ณผ ์์ ์ฑ ๊ฒ์ฆ
1๋จ๊ณ. Thread Group ๊ตฌ์ฑ
๋ถํ ํ ์คํธ๋ ๊ฐ์ ์ฌ์ฉ์๋ฅผ ๊ตฌ์ฑํด ์๋ฒ์ ์์ฒญํ๋ ๋ฐฉ์์ด๋ฉฐ Thread๊ฐ ๊ฐ์ ์ฌ์ฉ์ ์ญํ ์ ๋ด๋นํ๋ค. ๋ค์ ๋งํด Thread Group์ ๊ตฌ์ฑํด์ผ ํ๊ณ Jmeter์์ ์ ๊ณตํ๋ ์ต์ ์ ์ด 4๊ฐ์ง์ด๋ค.
- Open Model Thread Group: ํน์ ํ ์คํธ ์ผ์ด์ค์ ์คํ๋ ์ฌ์ฉ์ ํ๊ณผ ์ค์ผ์ค(ํจํด)์ ์ ์ํ๋ฉด ์ค์ผ์ค์ ๋ฐ๋ผ ์ฌ์ฉ์๊ฐ ์์ฑ๋๋ฉด์ ํ ์คํธํ๋ ์ต์ ์ด๋ค. (์์ง ์คํ์ ์ธ ์ต์ ์ผ๋ก ๋ฐฐํฌ ๊ณผ์ ์์ ๋ณ๊ฒฝ๋ ์ ์๋ค๊ณ ํ๋ค.)
- Setup Thread Group: ๋ณธ ํ ์คํธ๋ฅผ ์ํํ๊ธฐ ์ ์ ์ด๊ธฐํ ์์ ์ ์ํํ ์ฌ์ฉ์ ํ์ ์ ์ํ๋ ์ต์ ์ด๋ค.
- Thread Group: ํน์ ํ ์คํธ ์ผ์ด์ค์ ์คํ๋ ์ฌ์ฉ์ ํ, (๋ชจ๋ ์ค๋ ๋๋ฅผ ์์ํ๋ ๋ฐ์ ๊ฑธ๋ฆฌ๋) ๋จํ์ ์๊ฐ, ํ ์คํธ๋ฅผ ์ํดํ ํ์ ํน์ ์๊ฐ์ ์ ์ํด ํ ์คํธํ๋ ์ต์ ์ด๋ค.
- Teardown Thread Group: ๋ณธ ํ ์คํธ๋ฅผ ์ํํ ์ดํ์ ํด๋ฆฐ ์์ ์ ์ํํ ์ฌ์ฉ์ ํ์ ์ ์ํ๋ ์ต์ ์ด๋ค.
๋จ์ํ ํ์ด์ง๋ฅผ ์กฐํํ๋ ํ ์คํธ์ด๊ธฐ ๋๋ฌธ์ Thread Local ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ด ์ธํ ํด์คฌ๋ค.
- Numbers of Threads: 10๋ช ์ ์ฌ์ฉ์
- Duration: 10์ด๋์
- Action ... Sampler error Continue: ์๋ฌ๊ฐ ๋ฐํํด๋ ๊ณ์ ์์ฒญ
2๋จ๊ณ. Sampler ๊ตฌ์ฑ
์ฌ์ฉ์๋ฅผ ๊ตฌ์ฑํ์ผ๋๊น ์ฌ์ฉ์์ ํ๋์ ์ ์ํ ์ฐจ๋ก์ด๋ค. Jmeter์์๋ Sampler ์ธํ ์ผ๋ก ํ๋์ ์ ์ํ ์ ์๋ค. ๋ค์ํ ์ต์ ๋ค์ ์ง์ํ๋๋ฐ ์น ์์ฒญ์ ๋ํ ํ ์คํธ๋ Http Request๋ฅผ ์ฌ์ฉํ๋ค.
3๋จ๊ณ. Listener ๊ตฌ์ฑ
Sampler์ ์ ์ํ ํจํด๋๋ก ์ฌ์ฉ์๊ฐ ์์ฒญ์ ํ๋ฉด ๊ฒฐ๊ณผ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์ผ ํ๋ค. Listener๊ฐ ๊ทธ ์ญํ ์ ์ํํ๋ค.
Listener๋ ์ข ๋ฅ๊ฐ ๊ต์ฅํ ๋ง์ผ๋ ์์ธํ ๋ด์ฉ์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ๊ธธ ๋ฐ๋๋ค.
4๋จ๊ณ. Assertions ๊ตฌ์ฑ
์ถ๊ฐ์ ์ผ๋ก Sampler๊ฐ ์์ฒญ์ ์ํํ๊ณ ๋ฐ์ ์๋ต ๊ฒฐ๊ณผ์ ๋ํ ์์ธํ ๊ฒ์ฆ์ด ํ์ํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ํน์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋๋ฐ, ์๋์น ์๊ฒ ๋ก๊ทธ์ธ์ด ๋์ง ์์์ 3XX ์ํ ์ฝ๋์ ํจ๊ป ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธํ๋ ์ํฉ์ ์๊ฐํด๋ณด์. ์ํ ์ฝ๋๋ ์คํจ๋ฅผ ์๋ฏธํ์ง ์์ง๋ง ์๋ฒ ๋ก์ง์ ์คํจ๋ฅผ ์๋ฏธํ๋ ๊ฒฝ์ฐ์๋ ๋ณ๋์ ๊ฒ์ฆ์ ํตํด ์คํจ๋ก ์ฒ๋ฆฌํด์ผ ํ๋ค. ์ด ๋ Assertions๋ฅผ ํตํด ๊ฒ์ฆ ์ ์ฐจ๋ฅผ ์ถ๊ฐํ ์ ์๋ค. (ํํ์ด์ง์ ์กฐํ์ ๋ํ ํ ์คํธ์์๋ ๊ตณ์ด ํ์ํ์ง ์์ผ๋ฏ๋ก ์๋ตํ๋๋ก ํ๊ฒ ๋ค.)
ํ ์คํธ ๊ฒฐ๊ณผ
์์์ ์ธ๊ธํ ์๋๋ฆฌ์ค์ ๋ชฉ์ ๋๋ก "์บ์ฑ์ ๋ฏธ์ ์ฉํ ์ํฉ"๊ณผ "์บ์ฑ์ ์ ์ฉํ ์ํฉ"์ผ๋ก ๋๋ ๋ค, ๋์ผํ ์กฐ๊ฑด์ผ๋ก ๊ฐ๊ฐ 10๋ฒ์ ํ ์คํธ๋ฅผ ์งํํ๋ค. ๋ชจ๋ ํ ์คํธ์์ ๋น์ทํ ์์์ ๋์๊ธฐ ๋๋ฌธ์ 10๊ฐ์ ํ๋ณธ ์ค ํ๋๋ฅผ ๊ฐ์ ธ์ ๊ฒฐ๊ณผ๋ฅผ ๋ถ์ํด๋ณด๊ฒ ๋ค.
์บ์ฑ ๋ฏธ์ ์ฉ
์บ์ฑ ์ ์ฉ
๊ฒฐ๊ณผ ๋ถ์
๊ฐ์ฅ ๋์ฌ๊ฒจ๋ณผ ๋ถ๋ถ์ "ํ๋ณธ ์"์ "์ฒ๋ฆฌ๋"์ด๋ค. ์บ์ฑ์ ๋ฏธ์ ์ฉํ ๊ฒฝ์ฐ 4316๊ฐ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ์ด๋น 431.1์ ์ฒ๋ฆฌ๋์ ๋ณด์๋ค. ๋ฐ๋ฉด, ์บ์ฑ์ ์ ์ฉํ ๊ฒฝ์ฐ 7060๊ฐ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ์ด๋น 708.8์ ์ฒ๋ฆฌ๋์ ๋ณด์๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์บ์ฑ์ ์ ์ฉํ์ ๋ ์ฝ 70ํผ์ผํธ์ ์ฑ๋ฅ ํฅ์์ ๋ณด์์ ์ ์ ์์๋ค.
์ฐธ๊ณ ๋ก ์บ์ฑ์ ์ ์ฉ๊ณผ๋ ๋ฌด๊ดํ๊ฒ 10๊ฐ์ ์ค๋ ๋๊ฐ ์ฒ์ ์์ฒญํ ๋์ ์ฒ๋ฆฌ์๊ฐ์ด ์ ๋ ๊ธด ๊ฒ์ ํ์ธํ ์ ์๋๋ฐ, ์ด๋ Ramp-up ์๊ฐ์ 1์ด๋ก ์ค์ ํด๋๊ธฐ ๋๋ฌธ์ด๋ค. Ramp-up ์๊ฐ์ ์ง์ ํ๋ ์ด์ ๋ ์ค์ ์ฌ์ฉ์๊ฐ ์์คํ ์ ์ ์ํ๋ ๊ฒ์ ๋ชจ๋ฐฉํ๊ณ , ๋ถํ๋ฅผ ์ ์ง์ ์ผ๋ก ์ฆ๊ฐ์ํค๊ธฐ ์ํจ์ด๋ค.
์๋ ๋ด์ฉ์ Jmeter ์ฌ์ฉ๊ณผ ์ง์ ์ ์ธ ๊ด๋ จ์ด ์์ผ๋ฏ๋ก ์คํตํ์ ๋ ๋ฉ๋๋ค.
์ด์. CodeCache is full
ํ ์คํธ๋ฅผ ์งํํ๋ ๊ณผ์ ์์ ์ด์๋ฅผ ๋ฐ๊ฒฌํ๋ค.
๋จผ์ CodeCache๋ ๋ฌด์์ผ๊น? JVM์ ๊ฒฝ์ฐ JIT ์ปดํ์ผ๋ฌ๋ฅผ ํตํด ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ณํํด ์บ์ฑํ๋๋ฐ, ์ด๋ฅผ CodeCache๋ผ๊ณ ํ๋ค. ์๋ฌ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ฉด CodeCache์ ํฌ๊ธฐ๋ ์ฝ 48MB๋ก ์ค์ ๋ผ ์๋๋ฐ ๋ถํํ ์คํธ๋ฅผ ํตํด ํธ๋ํฝ์ด ํ๋ฒ์ ๋ชฐ๋ฆฌ๋ฉด์ CodeCache๊ฐ 3KB๋ฅผ ์ ์ธํ๊ณ ๊ฐ๋์ฐฌ ์ํ์ด๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก CodeCache๋ JVM ๋ด๋ถ ๋ฉ์ปค๋์ฆ์ ์ํด ๊ด๋ฆฌ๋๋ค๊ณ ํ๋ค. ๋ฐ๋ผ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ReservedCodeCacheSize ์ต์ ์ ํตํด CodeCache ํฌ๊ธฐ๋ฅผ ๋๋ ค์ค์ผ ํ๋ค.
'๐ง๐ปโ๐ป ๊ฐ๋ฐ > Java & Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring ํต์ฌ ๊ฐ๋ ์ ๋ฆฌ (0) | 2024.11.21 |
---|---|
๋ก์ปฌ์์ DB ์ด์คํ ๊ตฌ์ถํ๊ธฐ (with Docker, MySQL) (0) | 2024.02.15 |
Scouter ๋ชจ๋ํฐ๋ง ํด ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2024.02.14 |
Spring Boot ๋ก๊ทธ ํ์ผ ๋จ๊ธฐ๊ธฐ (with Log4j2) (0) | 2024.02.08 |
Spring AOP - Master & Slave DB ์ฟผ๋ฆฌ ๋ถ์ฐํ๊ธฐ (0) | 2024.02.05 |