๋ชฉ์ฐจ
- ์๋ฒ๊ฐ ๊ฐ์๊ธฐ ๋๋ ค์ก๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฌํ๋ผ
- swap ๋ฉ๋ชจ๋ฆฌ๋ ๋ฌด์์ธ๊ฐ?
- swap์ ์ฅ์ ๊ณผ ๋จ์
- swap์ด ํ์ํ ์ํฉ
- swap ์ค์ ํ๋ ๋ฐฉ๋ฒ (Ubuntu ๊ธฐ์ค)
- swap ์ฌ์ฉ๋ ํ์ธ ๋ฐ ์กฐ์
- ์ ๋ฆฌ ๋ฐ ๋ค์ ๋จ๊ณ
1. ์๋ฒ๊ฐ ๊ฐ์๊ธฐ ๋๋ ค์ก๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฌํ๋ผ
์ ๋ช ์ฒ ์์ง๋ฆฌ ์ ์ฌ์ ํด๋ผ์ฐ๋ ์๋ฒ(1GB RAM)๋ฅผ ์ด์ํ๋ค ๋ณด๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ์ํฉ์ด ์์ฃผ ๋ฐ์ํฉ๋๋ค. Nginx, Node.js, MySQL์ ๋์์ ๋์ฐ๋ฉด ์ด๋ ์๊ฐ ์๋ฒ๊ฐ ๊ทน๋๋ก ๋๋ ค์ง๊ฑฐ๋ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ ์ข ๋ฃ๋๋ ํ์์ด ๋ํ๋ฉ๋๋ค.
์ด๋ด ๋ ์๋ฒ ์ฉ๋์ ์ ๊ทธ๋ ์ด๋ํ๊ธฐ ์ ์ ๋จผ์ ๊ณ ๋ คํด๋ณผ ์ ์๋ ๊ฒ์ด ๋ฐ๋ก swap ๋ฉ๋ชจ๋ฆฌ ์ค์ ์ ๋๋ค.
2. swap ๋ฉ๋ชจ๋ฆฌ๋ ๋ฌด์์ธ๊ฐ?
swap์ ๋ฌผ๋ฆฌ์ ์ธ RAM์ด ๋ถ์กฑํ ๋ ํ๋๋์คํฌ(๋๋ SSD)์ ์ผ๋ถ ๊ณต๊ฐ์ ์์ ๋ฉ๋ชจ๋ฆฌ์ฒ๋ผ ์ฌ์ฉํ๋ ๊ธฐ์ ์ ๋๋ค.
์ฌ์ด ๋น์ ๋ก ์ค๋ช ํ๋ฉด ์ด๋ ์ต๋๋ค. ์ฑ ์(RAM)์ด ๊ฐ๋ ์ฐผ์ ๋ ์์ฃผ ์ฐ์ง ์๋ ๋ฌผ๊ฑด์ ๋ฐ๋ฅ(๋์คํฌ)์ ๋ด๋ ค๋๊ณ ๊ณต๊ฐ์ ํ๋ณดํ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ฅ์์ ๋ฌผ๊ฑด์ ๊บผ๋ด๋ ๊ฒ์ด ์ฑ ์์์ ๊บผ๋ด๋ ๊ฒ๋ณด๋ค ๋๋ฆฌ๋ฏ, swap์ RAM๋ณด๋ค ์๋๊ฐ ํจ์ฌ ๋๋ฆฝ๋๋ค.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ swap์ด ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ ํ ๊ณ ๊ฐ๋์ ๋ ์๋ฒ๊ฐ ์ฆ์ ๋ค์ด๋๋ ๋์ , ๋๋ฆฌ๋๋ผ๋ ๊ณ์ ๋์ํ ์ ์์ต๋๋ค.
3. swap์ ์ฅ์ ๊ณผ ๋จ์
์ฅ์
๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ผ๋ก ์ธํ ์๋ฒ ๋ค์ด์ ๋ฐฉ์งํฉ๋๋ค. ์ ์ฌ์ ์๋ฒ์์ ์ฌ๋ฌ ์๋น์ค๋ฅผ ๋์์ ์ด์ํ ์ ์์ต๋๋ค. ๋น์ฉ ์์ด ์ค์ ๊ฐ๋ฅํ๋ฉฐ, ๊ธํ ์ํฉ์์ ์ฆ๊ฐ์ ์ธ ์์ถฉ ์ญํ ์ ํฉ๋๋ค.
๋จ์
๋์คํฌ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ฒ๋ผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ RAM๋ณด๋ค ์์ญ ๋ฐฐ์์ ์๋ฐฑ ๋ฐฐ ๋๋ฆฝ๋๋ค. swap์ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ฉด ์๋ฒ ์ ์ฒด๊ฐ ์ฌ๊ฐํ๊ฒ ๋๋ ค์ง๋๋ค. SSD๋ฅผ swap์ผ๋ก ์ฌ์ฉํ๋ฉด SSD ์๋ช ์ด ๋จ์ถ๋ ์ ์์ต๋๋ค.
swap์ ๊ทผ๋ณธ์ ์ธ ํด๊ฒฐ์ฑ ์ด ์๋๋๋ค. ์ฅ๊ธฐ์ ์ผ๋ก๋ RAM์ ๋๋ฆฌ๊ฑฐ๋ ์๋ฒ๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ด ๋ง์ง๋ง, ๋จ๊ธฐ ์์ถฉ์ด๋ ๊ฐ๋ ๋ฐ์ํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ธ์ฆ ์ํฉ ๋์์๋ ํจ๊ณผ์ ์ ๋๋ค.
4. swap์ด ํ์ํ ์ํฉ
์๋ ์ํฉ ์ค ํ๋๋ผ๋ ํด๋น๋๋ค๋ฉด swap ์ค์ ์ ๊ณ ๋ คํด๋ณผ ์ ์์ต๋๋ค.
RAM์ด 1GB ์ดํ์ธ ์ ์ฌ์ ์๋ฒ๋ฅผ ์ด์ ์ค์ผ ๋, free -h ๋ช ๋ น์ด ์คํ ์ available ๊ฐ์ด ์์ฃผ 100MB ์ดํ๋ก ๋จ์ด์ง ๋, OOM Killer๊ฐ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ๋ ๋ก๊ทธ๊ฐ ์์ฃผ ๋ฐ๊ฒฌ๋ ๋, ์๋ฒ ๋น์ฉ์ ๋๋ฆฌ๊ธฐ ์ ์ ์์๋ก ๋ฒํ จ์ผ ํ๋ ์ํฉ์ผ ๋ swap์ด ์ ์ฉํฉ๋๋ค.
๋ฐ๋๋ก RAM์ด ๋๋ํ๊ณ ์๋ฒ ์ฑ๋ฅ์ด ์ถฉ๋ถํ๋ค๋ฉด swap์ ๊ตณ์ด ์ค์ ํ ํ์๋ ์์ต๋๋ค.
5. swap ์ค์ ํ๋ ๋ฐฉ๋ฒ (Ubuntu ๊ธฐ์ค)
1๋จ๊ณ. ํ์ฌ swap ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
sudo swapon --show
์๋ฌด๊ฒ๋ ์ถ๋ ฅ๋์ง ์์ผ๋ฉด swap์ด ์ค์ ๋์ด ์์ง ์์ ๊ฒ์ ๋๋ค.
2๋จ๊ณ. swap ํ์ผ์ ์์ฑํฉ๋๋ค.
2GB ํฌ๊ธฐ์ swap ํ์ผ์ ์์ฑํ๋ ์์์ ๋๋ค. ์๋ฒ RAM์ 1~2๋ฐฐ ํฌ๊ธฐ๋ฅผ ๊ถ์ฅํฉ๋๋ค.
sudo fallocate -l 2G /swapfile
3๋จ๊ณ. swap ํ์ผ ๊ถํ์ ์ค์ ํฉ๋๋ค.
root๋ง ์ฝ๊ณ ์ธ ์ ์๋๋ก ๊ถํ์ ์ ํํฉ๋๋ค.
sudo chmod 600 /swapfile
4๋จ๊ณ. swap ํ์ผ๋ก ์ง์ ํฉ๋๋ค.
sudo mkswap /swapfile
5๋จ๊ณ. swap์ ์ฆ์ ํ์ฑํํฉ๋๋ค.
sudo swapon /swapfile
6๋จ๊ณ. ์๋ฒ ์ฌ๋ถํ ํ์๋ swap์ด ์ ์ง๋๋๋ก ๋ฑ๋กํฉ๋๋ค.
sudo nano /etc/fstab ํ์ผ์ ์ด์ด ๋งจ ์๋์ ๋ค์ ์ค์ ์ถ๊ฐํฉ๋๋ค.
/swapfile none swap sw 0 0
์ ์ฅ ํ free -h ๋ช ๋ น์ด๋ก swap์ด ์ ์ ์ค์ ๋๋์ง ํ์ธํฉ๋๋ค. Swap ํญ๋ชฉ์ 2.0G๊ฐ ํ์๋๋ฉด ์ฑ๊ณต์ ๋๋ค.
6. swap ์ฌ์ฉ๋ ํ์ธ ๋ฐ ์กฐ์
swap ์ฌ์ฉ ํํฉ์ free -h ๋๋ swapon --show ๋ช ๋ น์ด๋ก ํ์ธํฉ๋๋ค.
swappiness ์ค์
swappiness๋ ๋ฆฌ๋ ์ค๊ฐ ์ผ๋ง๋ ์ ๊ทน์ ์ผ๋ก swap์ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ๋ ๊ฐ์ ๋๋ค. 0์์ 100 ์ฌ์ด์ ๊ฐ์ ๊ฐ์ง๋ฉฐ, ๊ธฐ๋ณธ๊ฐ์ 60์ ๋๋ค.
๊ฐ์ด ๋์์๋ก swap์ ๋ ์์ฃผ ์ฌ์ฉํ๊ณ , ๋ฎ์์๋ก RAM์ ์ต๋ํ ์ฌ์ฉํ ํ์๋ง swap์ ์ฌ์ฉํฉ๋๋ค. ์๋ฒ ํ๊ฒฝ์์๋ 10~30 ์ฌ์ด์ ๋ฎ์ ๊ฐ์ ๊ถ์ฅํฉ๋๋ค.
ํ์ฌ swappiness ๊ฐ์ ํ์ธํฉ๋๋ค.
cat /proc/sys/vm/swappiness
swappiness๋ฅผ 10์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
sudo sysctl vm.swappiness=10
์ฌ๋ถํ ํ์๋ ์ ์ง๋๊ฒ ํ๋ ค๋ฉด /etc/sysctl.conf ํ์ผ์ vm.swappiness=10 ์ค์ ์ถ๊ฐํฉ๋๋ค.
7. ์ ๋ฆฌ ๋ฐ ๋ค์ ๋จ๊ณ
์ค๋ ๋ฐฐ์ด ํต์ฌ์ ์ ๋ฆฌํฉ๋๋ค.
- swap์ RAM์ด ๋ถ์กฑํ ๋ ๋์คํฌ๋ฅผ ์์ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฌ์ฉํ๋ ๊ธฐ์ ์ ๋๋ค.
- RAM๋ณด๋ค ํจ์ฌ ๋๋ฆฌ์ง๋ง, ์๋ฒ ๋ค์ด์ ๋ง์์ฃผ๋ ์์ถฉ ์ญํ ์ ํฉ๋๋ค.
- 1GB RAM ์ดํ์ ์ ์ฌ์ ์๋ฒ๋ผ๋ฉด 1~2GB swap ์ค์ ์ ๊ถ์ฅํฉ๋๋ค.
- swappiness ๊ฐ์ ๋ฎ๊ฒ ์ค์ ํ๋ฉด RAM์ ์ต๋ํ ํ์ฉํ๊ณ swap์ ์ตํ์ ์๋จ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
- swap์ ์์๋ฐฉํธ์ด๋ฉฐ, ๊ทผ๋ณธ ํด๊ฒฐ์ฑ ์ RAM ์ฆ์ค์ ๋๋ค.
๋ค์ ๊ธ์์๋ Nginx ๋ฆฌ๋ฒ์ค ํ๋ก์ ์ค์ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.