๐ ๊ฐ์
์ฌํ๊น์ง API ์๋ฒ๋ฅผ ๊ฐ๋ฐํ๋ฉด์ ์คํ๋ง๋ถํธ๋ฅผ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํด์์ต๋๋ค. ๋ณ๋ชฉ์ด ๋ฐ์ํ ๋งํผ ๋ง์ ํธ๋ํฝ์ ๊ณ ๋ คํ์ง ์์๊ธฐ ๋๋ฌธ์ API ์์ฒญ์ ์ฒ๋ฆฌํ๋ ํฐ์บฃ ์ฐ๋ ๋ ์๋ฅผ ๋ค๋ค๋ณธ ์ ์ด ์์ต๋๋ค.
๊ทธ๋์!
ํด๋น ๋ถ๋ถ์ ํ์ตํ๊ณ ์ค์ ๋ก ์ ์ฉํ ๊ฐ์ด ์์๋๋ก ๋์ํ๋์ง ํ์ธํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
๋ชฉ์ฐจ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- API ์์ฒญ๋ถํฐ ํฐ์บฃ ์ฐ๋ ๋๊ฐ ์คํํ๊ธฐ๊น์ง
- ํฐ์บฃ ์ฐ๋ ๋ ํ๋ผ๋ฏธํฐ
- ํฐ์บฃ ์ฐ๋ ๋ ์กฐ์ ์ค์ต
- ๋ง์น๋ฉฐ
๐ API ์์ฒญ๋ถํฐ ํฐ์บฃ ์ฐ๋ ๋๊ฐ ์คํํ๊ธฐ๊น์ง
Spring MVC๋ก ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ๋ฉด ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์๋ธ๋ฆฟ์ ์ฌ์ฉํฉ๋๋ค. ์คํ๋ง๋ถํธ๋ก ์์ฑํ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ธ ํฐ์บฃ์ด ๋ด์ฅ๋ผ ์์ต๋๋ค. ๋ฐ๋ก ์ด ํฐ์บฃ์ด ์๋ธ๋ฆฟ ์ปจํ ์ด๋ ์ญํ ์ ํ๋ฉด์ ์์ฒญ ์ฐ๋ ๋๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋๋ฐ์. ํด๋น ์ฐ๋ ๋๋ฅผ ์ผ๋ง๋ ๋ฏธ๋ฆฌ ์์ฑํด๋์์ง, ์ต๋ ๋ช ๊ฐ๊น์ง ์์ฑํ ์ง ๋ฑ ์คํ๋ง ์ค์ ํ์ผ์ ํตํด ์ ํ ์ ์์ต๋๋ค.
๊ฐ ์ค์ ํ๋ผ๋ฏธํฐ์ ์ํฅ์ ์์๋ณด๊ธฐ์ ์ API ์์ฒญ๋ถํฐ ํฐ์บฃ ์ฐ๋ ๋ ์คํ๊น์ง์ ๊ณผ์ ์ ๊ฐ๋จํ๊ฒ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํด๋ผ์ด์ธํธ HTTP ์์ฒญ
์ข์ธก ์ด๋ก์ ์์ผ๋ก, ์์ง ์์ฒญ์ด ๋ค์ด์ค๊ธฐ ์ ์ ๋๋ค.
OS TCP ๋ฐฑ๋ก๊ทธ ํ
TCP ์ฐ๊ฒฐ ์์ฒญ์ ๋๊ธฐํ๋ ํฌํธ๋ง๋ค OS์ TCP ๋ฐฑ๋ก๊ทธ ํ๊ฐ ํ ๋น๋๋๋ฐ ํฐ์บฃ์ด ๋น์ฅ์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค๋ฉด ๋ฐฑ๋ก๊ทธ ํ์์ ๋๊ธฐํ๊ฒ ๋ฉ๋๋ค. ์ง์ ํ ์ฌ์ด์ฆ์ ๋ฐ๋ผ์ TCP ์ฐ๊ฒฐ ์์ฒญ์ด ํ์์ ๋๊ธฐํ ์ ์๊ณ ํด๋น ํ๊ฐ ๊ฐ๋์ฐจ๋ฉด ์ถ๊ฐ์ ์ธ TCP ์ฐ๊ฒฐ์ ํด๋ผ์ด์ธํธ ์ธก์์ ์คํจํ๊ฒ ๋ฉ๋๋ค.
ํฐ์บฃ ์์ฒญ ์ฒ๋ฆฌ ํ
ํฐ์บฃ์ ์ต๋ TCP ์ฐ๊ฒฐ ์์ฒญ ์๋ฅผ ์ง์ ํ๊ณ ์ฐ๋ ๋ ํ์ ์ฌ์ฉ๊ฐ๋ฅํ ์ฐ๋ ๋๊ฐ ์๊ฑฐ๋ ์์ฑํ์ง ๋ชปํ ๊ฒฝ์ฐ ํด๋น ํ์์ ์์ฒญ์ด ๋๊ธฐํฉ๋๋ค.
HTTP ์์ฒญ ์ฒ๋ฆฌ ์ฐ๋ ๋
ํฐ์บฃ์ ์ฐ๋ ๋ ํ์์ ์์ฑ๋ ์ฐ๋ ๋๊ฐ ์์ฒญ์ด ๋ค์ด์์ ๋ ์ฒ๋ฆฌํฉ๋๋ค. ์ฐ๋ ๋ ํ์ ์ฐ๋ ๋ ์ต์ ์ ์ง ๊ฐ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ๋ํ, ๋ชจ๋ ์ฐ๋ ๋๊ฐ ์ฌ์ฉ์ค์ผ ๋ ์๋ก ์ฐ๋ ๋๋ฅผ ์์ฑํ์ฌ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์ต๋ ์์ฑ ๊ฐ์๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์ ์์์์๋ ์ฐ๋ ๋ ํ์์ ์ต์ 1๊ฐ์ ์ฐ๋ ๋๋ฅผ ์ ์งํ๊ณ ์ต๋ 2๊ฐ์ ์ฐ๋ ๋๋ฅผ ๊ด๋ฆฌํ๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
HTTP ์์ฒญ(์ด๋ก์ ์)์ด ๋ค์ด์๊ณ ๋ฐฑ๋ก๊ทธ ํ์ ํฐ์บฃ ์์ฒญ ์ฒ๋ฆฌํ์์ ๋๊ธฐํ๋ ์์ฒญ์ด ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ ๋ ํ์ ์๋ ์ฐ๋ ๋(ํฑ๋๋ฐํด)๊ฐ ์คํ๋ง ์ฑ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ์คํํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ์์ฒญ์ด ์ฒ๋ฆฌ๋๊ณ ์๋ ์ฌ์ด์ ๋ ๋ค๋ฅธ ์์ฒญ์ด ํ๋ ๋ ๋ค์ด์์ต๋๋ค. ํด๋น ์์ฒญ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐฑ๋ก๊ทธ ํ์ ํฐ์บฃ ์์ฒญ ์ฒ๋ฆฌ ํ์์ ๋๊ธฐํ๋ ์์ฒญ์ด ์๊ธฐ ๋๋ฌธ์ ์ญ์ญ ๋ค์ด์ต๋๋ค. ์ฐ๋ ๋ ํ์์ ์ฐ๋ ๋ 1๊ฐ๋ฅผ ์์ฑํ ์ฑ๋ก ์ ์งํ๊ณ ํด๋น ์ถ๊ฐ ์์ฒญ์ด ๋ค์ด์์ ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฐ๋ ๋๊ฐ ์์ ๊ฒฝ์ฐ ์ฐ๋ ๋ ํ๋๋ฅผ ์์ฑํ๋๋ก ์ค์ ํ๊ธฐ ๋๋ฌธ์ ์๋ก ํ ๋น๋ฐ์์ ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ์์ฒญ๊ณผ ๋ ๋ฒ์งธ ์์ฒญ์ผ๋ก ์ธํด์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ ์ฐ๋ ๋๊ฐ ๋ชจ๋ ์ฌ์ฉ์ค์ธ ์ํ์์ 10๊ฐ์ ์์ฒญ์ด ๋ฐ๋ ค์ต๋๋ค. ๊ฐ์ฉํ ์ฐ๋ ๋๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฐ์ ํฐ์บฃ ์์ฒญ ์ฒ๋ฆฌ ํ์ 5๊ฐ์ ์์ฒญ์ด ๋๊ธฐํ๊ฒ ๋ฉ๋๋ค. ์ดํ์ ๋ค์ด์จ 5๊ฐ์ ์์ฒญ์ ํฐ์บฃ์ด ์์ฉํ ์ ์๋ ๋๊ธฐ ์์ฒญ ํ๊ฐ ๊ฐ๋ ์ฐพ๊ธฐ ๋๋ฌธ์ OS ๋ ๋ฒจ์ TCP ๋ฐฑ๋ก๊ทธ ํ์์ ๋๊ธฐํ๊ฒ ๋ฉ๋๋ค.
๊ทธ ์์ค์ ๋ ๋ค๋ฅธ ์์ฒญ๋ค์ด ๋ฏธ์น๋ฏ์ด ๋ชฐ๋ ค์ต๋๋ค. ํ์ฌ ๋ฐฑ๋ก๊ทธ ํ๊น์ง ๊ฐ๋์ฐฌ ์ํ์ด๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ ์ธก์์๋ TCP ์ฐ๊ฒฐ ์คํจ๋ฅผ ์ธ์งํ๊ฒ ๋๊ณ ํด๋ผ์ด์ธํธ์ ์ค์ ์ ๋ฐ๋ผ ์ฌ์๋ ํน์ ์คํจ์ฒ๋ฆฌ๋ฅผ ์งํํฉ๋๋ค.
์ดํ, ์คํ๋ง์์ ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ๋๋ธ ์ฐ๋ ๋๊ฐ ์ฐ๋ ๋ ํ๋ก๋ฐ๋ฉ๋๋ฉด ํฐ์ผ ์์ฒญ ์ฒ๋ฆฌ ํ์ ์์ธ ๋ ์๋ถํฐ ํ๋์ฉ ์ฒ๋ฆฌํฉ๋๋ค.
ํฐ์บฃ์ด ๊ด๋ฆฌํ๋ ์ฐ๋ ๋๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ํ๋ฆ์ ๊ฐ๋จํ๊ฒ ๊ทธ๋ฆผ์ผ๋ก ํ์ธํด๋ดค์ต๋๋ค.
์คํ ํ๊ฒฝ์ ๋ฆฌ์์ค(CPU, ๋ฉ๋ชจ๋ฆฌ) ์ํฉ์ ๋นํด ์ค๋ ๋ ๊ฐ์๋ฅผ ๊ณผ๋ํ๊ฒ ๋๋ฆฌ๋ฉด, ์ปจํ ์คํธ ์ค์์นญ ๋น์ฉ์ด ์ปค์ ธ ์ฑ๋ฅ์ด ๊ธ๊ฒฉํ ์ ํ๋ ์ ์์ต๋๋ค. ๋ฐ๋๋ก ๋๋ฌด ์ ๊ฒ ์ค์ ํ๋ฉด ์ฌ์ฉ ๊ฐ๋ฅํ ์์์ด ๋๊ฒ ๋์ด ์ฒ๋ฆฌ๋์ด ์ค์ด๋ค ์ ์์ต๋๋ค.
๋ํ, ๋๊ธฐ ํ(Task Queue) ํฌ๊ธฐ๋ฅผ ์ง๋์น๊ฒ ํค์ฐ๋ฉด, ์์ฒญ์ด ๋๊ธฐํ๋ ๋์ ์์ผ·๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ์ ์ ํ ์ฑ๋ก ๋จธ๋ฌด๋ฅด๊ฒ ๋ฉ๋๋ค. ํนํ HTTP Keep-Alive๊ฐ ํ์ฑํ๋์ด ์๋ค๋ฉด, ์๋ฏธ ์์ด ์ฐ๊ฒฐ์ด ์ฅ์๊ฐ ์ ์ง๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์๋น์ค์ API ํน์ฑ๊ณผ ๋ฐฐํฌ ํ๊ฒฝ์ ๊ณ ๋ คํ์ฌ ์ ์ ํ ๋ถํ ํ ์คํธ๋ฅผ ๊ฑฐ์น ๋ค ์ค๋ ๋ ํ๊ณผ ๋๊ธฐ ํ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
โ๏ธ ํฐ์บฃ ์ฐ๋ ๋ ํ๋ผ๋ฏธํฐ
์์์ ๋์ ํ๋ฆ์ ์ดํด๋ดค๋๋ฐ ๊ทธ๋ฆผ์์ ๋ฑ์ฅํ ์์๋ค์ ์ด๋ค ํ๋ผ๋ฏธํฐ๋ก ์ด๋ป๊ฒ ์กฐ์ ํ๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
ํฐ์บฃ ์์ฒญ ์ฐ๋ ๋ ๊ด๋ จ ์ค์ ๊ฐ์ ์คํ๋ง ํ๋ก์ ํธ๋ฅผ ์ธํ ํ ํ application.properties ํน์ application.yml์ ์์ฑํ์ฌ ์ ์ฉํ ์ ์์ต๋๋ค.
server.tomcat.threads.min-spare (๊ธฐ๋ณธ๊ฐ: 10)
ํฐ์บฃ์ด ์ค๋ ๋ ํ์ ์ ์งํ ์ต์ ์ค๋ ๋ ์์ ๋๋ค.
์ค๋ ๋ ์์ฑ ์ค๋ฒํค๋ ์์ด ์์ฒญ์ด ๋ค์ด์ค๋ ๋๋ก ๋ฐ๋ก ์ฒ๋ฆฌ๋ฅผ ์งํํ ์ฐ๋ ๋์ ๋๋ค.
server.tomcat.threads.max (๊ธฐ๋ณธ๊ฐ: 200)
ํฐ์บฃ์ด ๋์์ ์คํํ ์ ์๋ ์ต๋ ์์ฒญ ์ฒ๋ฆฌ ์ค๋ ๋ ์์ ๋๋ค.
min-spare๋งํผ ์ ์งํ๊ณ ์๋ ์ฐ๋ ๋๊ฐ ๋ชจ๋ ์คํ์ค์ผ ๋ ์ฐ๋ ๋์ ์ด ๊ฐ์๊ฐ max๊ฐ์ด ๋ ๋๊น์ง ์ถ๊ฐ์ ์ผ๋ก ์์ฑํ์ฌ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ๋ง์ฝ min-spare๋ณด๋ค max๊ฐ์ ๋ ์๊ฒ ์ค์ ํ๋ค๋ฉด ์ฐ๋ ๋ ํ์๋ max๊ฐ๋งํผ ์ฐ๋ ๋๊ฐ ๋๊ธฐํ๊ฒ๋๊ณ ์ถ๊ฐ ์์ฑ์ ํ์ง ์์ต๋๋ค.
server.tomcat.max-connections (๊ธฐ๋ณธ๊ฐ: 8192)
ํฐ์บฃ์ด ๋์์ ํ์ฉํ ์ ์๋ ์ต๋ TCP ์ฐ๊ฒฐ์ ์์ ๋๋ค.
ํ์ฌ ์คํ๋๊ณ ์๋ ์ฐ๋ ๋๋ TCP ์ฐ๊ฒฐ์ ์ ์งํ๊ณ ์์ผ๋ฏ๋ก ๋น์ฐํ ํฌํจ๋๊ณ , ์ฐ๋ ๋๋ฅผ ์ก์ง ๋ชปํ ์์ฒญ๋ค์ ํฐ์บฃ์ด ๊ด๋ฆฌํ๋ ์์ฒญ ํ์์ ๋๊ธฐํ๊ฒ ๋ฉ๋๋ค. ํ์์ ๋๊ธฐํ๋ ์์ฒญ๋ค๋ TCP ์ฐ๊ฒฐ์ด ์๋ฆฝ๋ ์ํ์ด๊ณ ๋๊ธฐ ํ์ ์ฌ์ด์ฆ๋ [max-connections - threads.max]๊ฐ ๋ฉ๋๋ค.
server.tomcat.accept-count (๊ธฐ๋ณธ๊ฐ: 100)
ํฐ์บฃ์ด OS์ ์์ฒญํ๋ ๋ฐฑ๋ก๊ทธ ํ ์ฌ์ด์ฆ์ ๋๋ค.
ํฐ์บฃ์ ์ฐ๋ ๋๊ฐ ๋ชจ๋ ์ฌ์ฉ์ค์ด๊ณ ์์ฒญ ๋๊ธฐ ํ๊ฐ ๊ฐ๋ ์ฐผ์ ๋ TCP ์ฐ๊ฒฐ์ด ์๋ฆฝ๋ ์ํ๋ก ๋ฐฑ๋ก๊ทธ ํ์์ ๋๊ธฐํ๊ฒ ๋ฉ๋๋ค.
๐งช ํฐ์บฃ ์ฐ๋ ๋ ์กฐ์ ์ค์ต
์์์ ์ธ๊ธํ 4๊ฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์กฐ์ ํ๋ฉด์ ์์ํ๋๋ก ๋์ํ๋์ง ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
์ค์ตํ๊ฒฝ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- macOS Sequoia 15.5
๋ก์ปฌํ๊ฒฝ์์ ์งํํ์ต๋๋ค. - SpringBoot 3.5.4
๊ฐ๋จํ๊ฒ ์ฐ๋ ๋๊ฐ 5์ด ๋์ sleepํ ํ ์ ์ ์๋ตํ๋ API๋ฅผ ์์ฑํ์ต๋๋ค. - VisualVM 2.1.10
ํ์ฌ ํ์ฑ ์ฐ๋ ๋ ์ํ๋ฅผ ํ์ธํ๊ธฐ ์ํด ์ฌ์ฉํ์ต๋๋ค. - Jmeter 5.6.3
์ค์ ํ ๊ฐ์ ๋ฐ๋ผ์ ์ฐ๋ ๋๊ฐ ์ผ๋งํผ ์ฌ์ฉ๋๊ณ ์ด๋ค ์๋ต์ด ์ค๋์ง ํ์ธํ๊ธฐ ์ํด ์ฌ์ฉํ์ต๋๋ค.
๊ธฐ๋ณธ๊ฐ ์ค์ ๊ณผ ์์๋ก ์กฐ์ ํ ๊ฐ์ผ๋ก ์ค์ต์ ์งํํด๋ณด๊ณ์ต๋๋ค.
๊ธฐ๋ณธ๊ฐ
server:
port: 8080
tomcat:
threads:
max: 200
min-spare: 10
max-connections: 8192
accept-count: 100
application.yml์ ์์ ๊ฐ์ด ์์ฑํ๊ณ ์คํํ์์ต๋๋ค. ๋ชจ๋ ๊ธฐ๋ณธ๊ฐ์ด๋ฉฐ, ๋ฐ๋ก ์ค์ ํ์ง ์์๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ๋ฉ๋๋ค.
์ค์ ๊ฐ์ ๋ฐ๋ฅด๋ฉด, ํฐ์บฃ์ max-connections ์ค์ ์ ๋ฐ๋ผ ๋์์ ์ต๋ 8,192๊ฐ์ TCP ์ฐ๊ฒฐ์ ์ ์งํ ์ ์์ต๋๋ค. ์ด ์ค max ๊ฐ๋งํผ ์ค์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ฉฐ, ๋๋จธ์ง ์ฐ๊ฒฐ์ ํฐ์บฃ์ ์์ฒญ ์ฒ๋ฆฌ ํ(TaskQueue)์์ ๋๊ธฐํ๊ฒ ๋ฉ๋๋ค. ๋ง์ฝ max-connections ํ๋๊น์ง ์ฐ๊ฒฐ์ด ์ ์ง๋๊ณ ์๋ค๋ฉด, ์ถ๊ฐ๋ก ๋ค์ด์ค๋ ์ฐ๊ฒฐ์ OS ์ปค๋์ ๋ฐฑ๋ก๊ทธ ํ(accept queue)์์ accept-count ๊ฐ์๋งํผ ๋๊ธฐํ ์ ์์ต๋๋ค.
์คํ๋ง ์ฑ์ ์คํ์ํค๊ณ VisualVM์์ Threads ํญ์ ํ์ธํฉ๋๋ค.
์ค์ ํ ๊ฐ์ ๋ง์ถฐ ์ต์ 10๊ฐ์ ์ฐ๋ ๋๊ฐ ๋๊ธฐ์ค์์ ํ์ธํ ์ ์์ต๋๋ค.
ํ ์คํธ๋ฅผ ์ํด jmeter์์ ์ฐ๋ ๋ ๊ทธ๋ฃน์ ์์ฑํ๊ณ ํ ๋ฒ์ 100๊ฐ์ ์ฐ๋ ๋๊ฐ GET ์์ฒญ์ ๋ณด๋ ๋๋ค.
jmeter ์ฐ๋ ๋ ์ ์ฅ์์ TCP ์ฐ๊ฒฐ์ ์คํจํ ๊ฒฝ์ฐ ์ฆ์ ์คํจ ์ฒ๋ฆฌ๋๋๋ก Connect timeout์ 1ms๋ก ์ค์ ํ์์ต๋๋ค.
์คํ๋ง๋ถํธ ์ค์ ์ ๋ฐ๋ผ์ ๊ฐ ์์ฒญ์ 5์ด๊ฐ ๊ฑธ๋ฆฌ๋ ์์ ์ด๊ณ ํ ๋ฒ์ 200๊ฐ์ ์ฐ๋ ๋๊ฐ ํ์ฑํ๋ ์ ์์ผ๋ Error 0%, ์ฐ๋ ๋ ์์ฑ๊ณผ ์ปจํ ์คํธ ์ค์์นญ ๋น์ฉ์ ๊ณ ๋ คํ์ฌ Throughput 20/sec ๋ณด๋ค ์กฐ๊ธ ์์ ๊ฒ์ผ๋ก ์์ํ ์ ์์ต๋๋ค.
jmeter ์คํ๊ฒฐ๊ณผ์ ๋๋ค.
์์ํ๋๋๋ก Error 0%, Throughput 20/sec๋ณด๋ค ์์ 16.7/sec๋ก ์ธก์ ๋์์ต๋๋ค.
์์ ์ค์ ๊ฐ
server:
port: 8080
tomcat:
threads:
max: 20
min-spare: 5
max-connections: 50
accept-count: 30
์ด๋ฒ์ ์กฐ๊ธ ๋ ์ ํ์ ์ธ ๊ฐ์ผ๋ก ์ค์ ํด๋ณด๊ฒ ์ต๋๋ค.
VisualVM์์ Threads ํญ์ ํ์ธํฉ๋๋ค.
์ค์ ํ ๊ฐ์ ๋ง์ถฐ ์ต์ 5๊ฐ์ ์ฐ๋ ๋๊ฐ ๋๊ธฐ์ค์์ ํ์ธํ ์ ์์ต๋๋ค.
์ฒ์๊ณผ ๊ฐ์ jmeter ์ฐ๋ ๋ ๊ทธ๋ฃน์ ์ฌ์ฉํ์ฌ ํ ์คํธ ํด๋ณด๊ฒ ์ต๋๋ค.
๊ฐ ์์ฒญ์ 5์ด๊ฐ ๊ฑธ๋ฆฌ๋ ์์ ์ด๊ณ ํ ๋ฒ์ 20๊ฐ์ ์ฐ๋ ๋๊ฐ ํ์ฑํ๋ ์ ์์ต๋๋ค. ๋ํ max ๊ฐ๋งํผ ์ฐ๋ ๋๊ฐ ํ์ฑ ์ํ๋ผ๋ฉด max-connections: 50์์ 20๊ฐ๋ฅผ ์ ์ธํ 30๊ฐ๊ฐ ํฐ์บฃ ์์ฒญ ์ฒ๋ฆฌ ํ์์ ๋๊ธฐํ ์ ์์ต๋๋ค. ์ถ๊ฐ์ ์ผ๋ก accept-count: 30๋งํผ ๋๊ธฐํ ์ ์์ต๋๋ค.
ํ ๋ฒ์ 100๊ฐ์ ์์ฒญ์ด ๋ค์ด๊ฐ์ ๋ 20๊ฐ๋ ์ฆ์ ์ฒ๋ฆฌ, 30๊ฐ๋ ํฐ์บฃ ๋ด๋ถ ํ์ ๋๊ธฐํ์ฌ ์ดํ ์ฒ๋ฆฌ, 30๊ฐ๋ ๋ฐฑ๋ก๊ทธ ํ์์ ๋๊ธฐํ์ ์ฒ๋ฆฌ, ๋๋จธ์ง๋ 20๊ฐ์ ์์ฒญ์ jmeter ์ธก์์ TCP ์ฐ๊ฒฐ ์คํจ ์ฒ๋ฆฌ๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก Error 20%, Throughput 5/sec ๋ณด๋ค ์์ ๊ฐ์ด ์์๋ฉ๋๋ค.
jmeter ์คํ๊ฒฐ๊ณผ์ ๋๋ค.
์์ํ๋๋๋ก Error 20%, Throughput 5/sec๋ณด๋ค ์์ 4.9/sec๋ก ์ธก์ ๋์์ต๋๋ค.
๐๐ป ๋ง์น๋ฉฐ
์ด๋ฒ ๊ธฐํ์ ์ฐ๋ ๋ ์๋ฅผ ์กฐ์ ํ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ์ดํดํ๊ณ ์ด์์ฒด์ ์ ๋ฐฑ๋ก๊ทธ ํ์์๋ ๋๊ธฐ๋ฅผ ํ๋ค๋ ์๋ก์ด ์ฌ์ค์ ์๊ฒ๋์์ต๋๋ค.
๋ฐฑ๋ก๊ทธ ํ์ ๋๊ธฐ ์ํฉ์ ์กฐํํ ์ ์๋์ง ํ์ธํ๊ธฐ ์ํด netstat๊ณผ watch๋ผ๋ ํด์ ์ฌ์ฉํด๋ดค์๋๋ฐ Recv-Q์ ์์ฒญ๋ณ๋ก ์กฐํ๊ฐ ์๋ ๋ฐ์ดํธ ๋จ์๋ก ๊ธฐ๋ก๋๊ณ ์์ด์ ๋ช ํํ๊ฒ ๋ช ๊ฐ์ ์์ฒญ์ด ๋ฐฑ๋ก๊ทธ ํ์ ์๋์ง ํ์ธํ๊ธฐ๋ ์ฝ์ง ์์์ต๋๋ค. ํ ๋ฒ์ HTTP ์์ฒญ์ ๋ํ ๋ฉ์์ง ์ฌ์ด์ฆ๋ฅผ ์ ํํ๊ฒ ์๋ค๋ฉด ๋ช ๊ฐ์ ์์ฒญ์ด ๋๊ธฐํ๊ณ ์๋์ง๋ ์ค์๊ฐ์ผ๋ก ์กฐํํ ์ ์์ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๊ถ๊ธํ ์ ์ ๋ํ ์ง๋ฌธ ํ์ํฉ๋๋ค!
๋ถ์กฑํ, ์๋ชป๋ ์ค๋ช ์ด ์๋ค๋ฉด ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค ๐๐ป
'DrillDown > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] SpringMVC (0) | 2025.08.22 |
---|