์๋ ,
๊ทธ๋ฃน ์บ์ ๋๋ถ์ ๊ฑฐ์ ์ฑ๊ณต์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋ด๊ฐ ๋ ์ดํดํ๊ณ ์ถ์ ํ ๊ฐ์ง๋ ์์ฉ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ ์๊ตฌ์ ์ํ์ ์ถ์ /์๊ณ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ๋จ์ํ ๊ทธ๋ฃน ์บ์์์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ 6GB vm์ ์คํ ์ค์ธ ๊ทธ๋ฃน ์บ์๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ์ฐ๋ฆฌ์ ์ฒซ ๋ฒ์งธ ์๋๋ ์ฌ์ฉ ๊ฐ๋ฅํ ์บ์ ํฌ๊ธฐ๋ฅผ 5GB๋ก ์ค์ ํ๊ณ 1GB๋ฅผ ์ด์ ์ฒด์ ์ ์ฌ๋ฌผ์ ์ํ ์ฌ์ ๊ณต๊ฐ์ผ๋ก ๋จ๊ฒจ๋๋ ๊ฒ์ด์์ต๋๋ค.
OOM ํฌ๋ฌ๊ฐ ํธ์ถ๋์ด ํ๋ก๋์ ๋ถํ์์ ์ฆ์ ์ถฉ๋ํ์ต๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ OOM ํฌ๋ฌ๊ฐ ์์๋๊ธฐ ์ ์ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ 6GB ๋ฏธ๋ง์ผ๋ก ์ ์ง๋๋๋ก ์ด ์ซ์๋ฅผ 2GB ๋ฏธ๋ง์ผ๋ก ๋ฎ์ถ์์ต๋๋ค.
๊ทธ๋์ ๋ค์ ๋จ๊ณ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๋กํ์ผ๋งํ๋ ๊ฒ์ด์๊ณ ํ ํฌ๊ธฐ๋ ๊ทธ๋ฃน ์บ์์์ ๊ตฌ์ฑํ 2GB๋ฅผ ํจ์ฌ ์ด๊ณผํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ๋ก์ธ์ค๋ 4-6GB์ ๋จ์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
๊ทธ๋์ ๊ฐ์ฅ ์ต๊ทผ์ ์๋๋ ๋ช ๋ถ๋ง๋ค ์๋์ผ๋ก debug.FreeOSMemory()๋ฅผ ํธ์ถํ๋ ๊ฒ์ด์๊ณ , ์ด๊ฒ์ด ์คํ๋๋ฉด ์ผ๋ง ์ง๋์ง ์์ ํ๋ก์ธ์ค์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ ์์ด ์ค์ด๋ค๊ณ OS์ ๋ง์ ๊ฒ์ด ๋ฐํ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ OOM ํฌ๋ฌ๋ก ์ธํด ๊ฐ๋ ์ถฉ๋์ด ๋ฐ์ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ๋ฅผ ๋ฒํผ๋งํ๊ธฐ ์ํด SSD ์ค์์ ์ถ๊ฐํ์ง๋ง ๋ฌธ์ ๊ฐ ์๋์ง 48์๊ฐ์ด ์ง๋ ํ ์ด๋ฌํ ์์คํ ์ ๋ํ ํธ๋ํฝ์ด ์ผ์์ ์ผ๋ก ์ฆ๊ฐํ์ฌ(์๋นํ ์ฆ๊ฐ) ๋จ์ผ ์์คํ ์์ OOM์ด ์ข ๋ฃ๋ ๋ค์ ์ด๋ฌํ ์ผ์ด ๋ฐ์ํ ๋ค๋ฅธ ์ฌ๋ฌ ์์คํ ์ผ๋ก ๋๋ฉ์ด์ฒ๋ผ ๋ถ์ด๋ฌ์ต๋๋ค.
๋ฐ๋ผ์ ์ด ์์ ์ ์ํํ๊ธฐ ์ํด 2GB ์บ์ ์ค์ (groupcache.NewGroup์ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ผ๊ณ ๋ ํจ)์ ๋ ๋ฎ์ ์ ์ 1GB๋ก ์ญ์ ํ ์ ์์ง๋ง ์บ์์ 1GB๋ง ์ฌ์ฉํ ์ ์๋ 6GB VM์ ๊ฐ๋ ๊ฒ์ ์ฝ๊ฐ ์ด๋ฆฌ์์ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
์ด๊ฒ์ ์บ์ฑ์ ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๋ํ go์ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒ์ ๋จ์ ์ผ ๋ฟ์ ๋๋ค.
์ค์ํ์ง ํ์คํ์ง ์์ง๋ง ์ฐ๋ฆฌ์ ์ฌ์ฉ ์ฌ๋ก๋ dl.google.com๊ณผ ๋งค์ฐ ์ ์ฌํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ค๊ฐ ํฌ๊ธฐ์ ํ์ผ(50mb-1gb, 100MB ์ฒญํฌ์ ์บ์๋จ)์ ๋ค์ด๋ก๋๋ฅผ ์ ๊ณตํ๊ณ ์์ผ๋ฉฐ ๊ทธ๋ฃน ์บ์๋ ์ฐ๋ฆฌ๊ฐ ์ ๊ณตํด์ผ ํ๋ ํ์ผ์ด ์๋ ๋ ๋๋ฆฌ๊ณ ๋ ๋น์ผ API ์์ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋์ ์์ฐ์ค๋ฝ๊ฒ ์ด๊ฒ์ ์ฐพ์ ๋ ๋ฌธ์ ์ ๋ํ ํ๋ฅญํ ํด๊ฒฐ์ฑ ์ฒ๋ผ ๋ณด์ ๋๋ค.
์ด๋ฌํ ์ ํ์ ๋ฌธ์ ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ๊ณต์ ํ ์ ์๋ ๋ชจ๋ ํ์ ๋ํด ๋๋จํ ๊ฐ์ฌํฉ๋๋ค. ์ ๊ฐ ๋์น๊ณ ์๋ ๋ถ๋ถ์ด ์๋ค๋ ์๊ฐ์ด ๊ณ์ ๋ญ๋๋ค.
๊ณต์ ํ ์ ์๋ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ด๋ ์ฃผ๋ก GCPrecent์ ๊ธฐ๋ณธ ์ค์ ์ 100%๋ก ์ค์ ํ์ฌ ๋ฐ์ํฉ๋๋ค. ์ฆ, ๋ง์ง๋ง GC ์คํ ์ดํ ๋ ๋ฐฐ์ ๊ธ์ก์ ํ ๋นํ ๊ฒฝ์ฐ์๋ง GC๊ฐ ์๋์ผ๋ก ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค.
๋๋ ๋น์ทํ ์ํฉ์ ์์๊ณ Groupcache์ ๊ฐ์ ํ๋กํ์ ๊ฒฝ์ฐ 10% ์ ๋๋ก ์กฐ์ ํ๋ ๊ฒ์ด ๋ ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. https://golang.org/pkg/runtime/debug/#SetGCPercent ์ฐธ์กฐ
๋ต์ฅ์ ๋ณด๋ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋๋ ์ด๊ฒ์ ๊ณง ์๋ํ๊ณ ๋ค์ ๋ณด๊ณ ํ ๊ฒ์ ๋๋ค! ๊ฐ๋ ์ ์ผ๋ก ์์ ํ ์ดํด๊ฐ ๋ฉ๋๋ค.
์กฐ๊ธ ์ ์ด์ง๋ง IIRC ์ค๋ฒํค๋๊ฐ 10% ์ด์, ์๋ง๋ 20 ์ ๋์์ ๋ - ์ ์์ด์๊ณ ์บ์ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ๋ ๋ฐฐ๋ฅผ ํ์๋ก ํ์ง ์์์ต๋๋ค.
@adg ์๋ง๋ README์์ ์ธ๊ธํ ๊ฐ์น๊ฐ ์์ ๊ฒ์ ๋๋ค. ์ผ๋ฐ์ ์ธ ํจ์ ์ฒ๋ผ ๋ณด์ ๋๋ค.
ํ์ ์กฐ์น๋ฅผ ์ทจํ๋ ๊ฒ๋ง์ผ๋ก๋ ์์ฒญ๋ ๋์์ด ๋์์ต๋๋ค. ๋ค์ ํ๋ฒ ๊ฐ์ฌํฉ๋๋ค. ์ด๊ฒ์ ๋ฌธ์์ ์ถ๊ฐํ๋ ค๋ฉด +1์ ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ํ์ ์กฐ์น๋ฅผ ์ทจํ๋ ๊ฒ๋ง์ผ๋ก๋ ์์ฒญ๋ ๋์์ด ๋์์ต๋๋ค. ๋ค์ ํ๋ฒ ๊ฐ์ฌํฉ๋๋ค. ์ด๊ฒ์ ๋ฌธ์์ ์ถ๊ฐํ๋ ค๋ฉด +1์ ๋๋ค.