๋ฉˆ์ถฐ๋ฒ„๋ฆฐ EC2

Spring Boot ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐ€์ ธ์™€์„œ Docker Compose๋ฅผ ํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ๊นŒ ๊ฐ‘์ž๊ธฐ ๋นŒ๋“œ ๋„์ค‘์— EC2๊ฐ€ ์•„์˜ˆ ๋ฉˆ์ถฐ๋ฒ„๋ ธ๋‹ค. ์ง€๋‚œ๋ฒˆ์—๋Š” Docker๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋ƒฅ ๋ฐ”๋กœ Spring Application์„ ์‹คํ–‰ํ•˜๋‹ˆ๊นŒ CPU ์‚ฌ์šฉ๋Ÿ‰์ด ์ตœ๋Œ€์น˜๋ฅผ ์ดˆ๊ณผํ•˜์—ฌ ๋ฉˆ์ถ˜ ์ ์€ ์žˆ์ง€๋งŒ ๋นŒ๋“œ ๊ณผ์ •์—์„œ๋Š” ์ฒ˜์Œ์ด๋‹ค.

EC2 ์ธ์Šคํ„ด์Šค ๋ชจ๋‹ˆํ„ฐ๋ง์„ ๋ณด๋‹ˆ ์•„์ง ๋ชจ๋‘ ์ตœ๋Œ€์น˜๋Š” ๋„๋‹ฌํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ๋น„์Šทํ•œ ์ด์œ ๋กœ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ฉˆ์ถ˜ ๊ฒƒ ๊ฐ™๋‹ค. ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” OOM(Out of Memory)์ธ๋ฐ, AWS EC2 t2.micro์˜ ๊ธฐ๋ณธ ๋ฉ”๋ชจ๋ฆฌ๋Š” 1GB๋ฐ–์— ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Swap ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŒ๋“ค์ž

์šด์˜์ฒด์ œ ์ˆ˜์—…์—์„œ XV6 ๊ณผ์ œ ์ค‘์— Memory Swap์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋˜ ๊ธฐ์–ต์ด ๋‚œ๋‹ค. ๋นˆ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋น„ํŠธ๊ฐ’์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ์ด ๋น„ํŠธ๋งต์—์„œ ์—ฐ์†์ /๋น„์—ฐ์†์ ์œผ๋กœ ๋น„์–ด์žˆ๋Š” ์˜์—ญ์„ ์ฐพ์•„ ํ•ด๋‹น ์˜์—ญ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๊ฑฐ๊ธฐ์— Atomicity๋ฅผ ์œ„ํ•œ Lock๊นŒ์ง€โ€ฆ

XV6 ์ด์•ผ๊ธฐ๋Š” ์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๊ณ  ์Šค์™‘ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž.

์šฐ์„  dd command๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋””์Šคํฌ ์šฉ๋Ÿ‰์„ ํŒŒ์ผ์ฒ˜๋Ÿผ ๋‹ค๋ฃจ๋ฉด ๋œ๋‹ค. Input File๋กœ /dev/zero๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, /dev/null์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์ฝ์–ด์˜ค๋Š” ๋Œ€์‹ , ๋ชจ๋‘ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ์ฝ์–ด์˜จ๋‹ค. ์ด ์—ฐ์†์ ์ธ 0 ์ŠคํŠธ๋ฆผ์—์„œ, 128MB์งœ๋ฆฌ Block์„ 16๊ฐœ, ์ฆ‰ 2048MB ํฌ๊ธฐ์˜ ํŒŒ์ผ์„ /swapfile ์ด๋ผ๋Š” Output File๋กœ ๋งŒ๋“ ๋‹ค.

์ด Swap File์ด ๋งŒ๋“ค์–ด์ง€๋ฉด, ์ ์ ˆํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ณ , /swapfile ํŒŒ์ผ์„ Swap ๋ฉ”๋ชจ๋ฆฌ๋กœ ํฌ๋งทํ•œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ด Swap ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™œ์„ฑํ™”์‹œ์ผœ์ฃผ๋ฉด ๋œ๋‹ค.

์žฌ๋ถ€ํŒ… ์‹œ์—๋„ ์ด Swap ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์œ ์ง€๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ™•์ธํ•ด๋ณด๋ฉด 2GB ํฌ๊ธฐ์˜ Swap ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ๊ธด ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์ž˜ ์ž‘๋™ํ•˜๋Š” EC2