Ilya Kosmodemyansky์ 2015๋ ๋ณด๊ณ ์ ๋ น์ทจ๋ก "PostgreSQL ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํ Linux ํ๋"
๋ฉด์ฑ ์กฐํญ: ์ด ๋ณด๊ณ ์์ ๋ ์ง๋ 2015๋ 4์์ ๋๋ค. 9.4๋ ์ด์์ด ํ๋ ๊ณ ๋ง์ ์๊ฐ์ด ํ๋ ์ต๋๋ค. ๋ณด๊ณ ์์์ ๋ ผ์๋ ๋ฒ์ 4๋ ๋ ์ด์ ์ง์๋์ง ์์ต๋๋ค. ์ง๋ 5๋ ๋์ 15๊ฐ์ ์๋ก์ด PostgreSQL ๋ฆด๋ฆฌ์ค๊ฐ ์ถ์๋์๊ณ XNUMX๊ฐ์ Linux ์ปค๋ ๋ฒ์ ์ด ์ถ์๋์์ต๋๋ค. ์ด ๊ตฌ์ ์ ๋ค์ ์ฐ๋ฉด ๊ฒฐ๊ตญ ๋ค๋ฅธ ๋ณด๊ณ ์๊ฐ ๋์ฌ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๊ธฐ์๋ ์ค๋๋ ์๋ ์ฌ์ ํ ๊ด๋ จ์ด ์๋ PostgreSQL์ ๋ํ ๊ธฐ๋ณธ์ ์ธ Linux ์กฐ์ ์ ๊ณ ๋ คํฉ๋๋ค.
๋ด ์ด๋ฆ์ Ilya Kosmodemyansky์ ๋๋ค. ์ ๋ PostgreSQL-Consulting์์ ์ผํ๊ณ ์์ต๋๋ค. ์ด์ ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํนํ PostgreSQL๊ณผ ๊ด๋ จํ์ฌ Linux๋ก ์ํํ ์์ ์ ๋ํด ์กฐ๊ธ ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. ์์น์ด ๋งค์ฐ ์ ์ฌํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ฐ๋ฆฌ๋ ๋ฌด์์ ๋ํด ์ด์ผ๊ธฐํ ๊น์? PostgreSQL๊ณผ ํต์ ํ๋ ค๋ฉด ์ด๋ ์ ๋ UNIX ๊ด๋ฆฌ์์ฌ์ผ ํฉ๋๋ค. ๋ฌด์จ ๋ป์ด์์? Oracle๊ณผ PostgreSQL์ ๋น๊ตํ๋ค๋ฉด Oracle์์๋ DBA ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์๊ฐ 80%, Linux ๊ด๋ฆฌ์๊ฐ 20%์ฌ์ผ ํฉ๋๋ค.
PostgreSQL์ ์ฌ์ฉํ๋ฉด ์กฐ๊ธ ๋ ๋ณต์กํด์ง๋๋ค. PostgreSQL์ ์ฌ์ฉํ๋ ค๋ฉด Linux ์๋ ๋ฐฉ์์ ํจ์ฌ ๋ ์ ์ดํดํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์์ ๊ธฐ๊ด์ฐจ๋ฅผ ์กฐ๊ธ ๋ฐ๋ผ ๋ฌ๋ ค๋ณด์ธ์. ์ต๊ทผ์๋ ๋ชจ๋ ๊ฒ์ด ์์ฃผ ํ๋ฅญํ๊ฒ ์ ๋ฐ์ดํธ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ก์ด ์ปค๋์ด ์ถ์๋๊ณ , ์๋ก์ด ๊ธฐ๋ฅ์ด ๋ํ๋๊ณ , ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ๋ฆฌ๋ ์ค์ ๋ํด ์ด์ผ๊ธฐํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์ฐ๋ฆฌ๊ฐ Linux ์ปจํผ๋ฐ์ค Peter์ ์ฐธ์ํ๊ธฐ ๋๋ฌธ์ด ์๋๋ผ ํ๋ ์ํฉ์์ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํนํ PostgreSQL์ ์ฌ์ฉํ๋ ๋ฐ ๊ฐ์ฅ ์ ๋นํ ์ด์ ์ฒด์ ์ค ํ๋๊ฐ Linux์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ถํํ๋ FreeBSD๋ ๋งค์ฐ ์ด์ํ ๋ฐฉํฅ์ผ๋ก ๋ฐ์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฑ๋ฅ๊ณผ ๋ค๋ฅธ ๋ง์ ๊ฒ๋ค ๋ชจ๋์ ๋ฌธ์ ๊ฐ ์์ ๊ฒ์ ๋๋ค. Windows์์ PostgreSQL์ ์ฑ๋ฅ์ ์ผ๋ฐ์ ์ผ๋ก Windows๊ฐ UNIX์ ๋์ผํ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง ์๋ ๋ฐ๋ฉด PostgreSQL์ ๋ค์ค ํ๋ก์ธ์ค ์์คํ ์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ด์ ๊ด๋ จ๋์ด ์๋ค๋ ์ฌ์ค์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ณ๋์ ์ฌ๊ฐํ ๋ฌธ์ ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค๋ค ์๋ผ๋ฆฌ์ค ๊ฐ์ ์ธ๋์ข ์๋ ๊ด์ฌ์ด ๋ํ ๊ฒ ๊ฐ์์ ๊ฐ๋ณด์ฃ .
์ต์ Linux ๋ฐฐํฌํ์๋ ์ปค๋ ๋น๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ 1๊ฐ๊ฐ ๋๋ syctl ์ต์ ์ด ์์ต๋๋ค. ๋์์, ๋ค๋ฅธ ๊ฒฌ๊ณผ๋ฅ๋ฅผ ์ดํด๋ณด๋ฉด ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค. ๋ง์ดํธ ๋ฐฉ๋ฒ์ ๋ํ ํ์ผ ์์คํ ๋งค๊ฐ๋ณ์๊ฐ ์์ต๋๋ค. ์์ ๋ฐฉ๋ฒ์ ๋ํด ์ง๋ฌธ์ด ์๋ ๊ฒฝ์ฐ: BIOS์์ ํ์ฑํํ ํญ๋ชฉ, ํ๋์จ์ด ๊ตฌ์ฑ ๋ฐฉ๋ฒ ๋ฑ
์ด๊ฒ์ ํ๋์ ์งง์ ๋ณด๊ณ ์๊ฐ ์๋๋ผ ๋ฉฐ์น ์ ๊ฑธ์ณ ๋ ผ์ํ ์ ์๋ ๋งค์ฐ ํฐ ๋ณผ๋ฅจ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ ์ค์ํ ์ฌํญ, ์ฆ Linux์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๋๋ก ์ฌ์ฉํ์ง ๋ชปํ๊ฒ ํ๋ ๋ ์ดํฌ๋ฅผ ํผํ๋ ๋ฐฉ๋ฒ์ ์ค์ ์ ๋ ๊ฒ์ ๋๋ค. ์์ ํ์ง ๋ง์ญ์์ค. ๊ทธ๋ฆฌ๊ณ ๋์์ ์ค์ํ ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ง๋ ์ค์ ์ ๋ง์ ๊ธฐ๋ณธ ๋งค๊ฐ๋ณ์๊ฐ ํฌํจ๋์ด ์์ง ์๋ค๋ ๊ฒ์ ๋๋ค. ์ฆ, ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋๋ก ์๋ํ์ง ์๊ฑฐ๋ ์ ํ ์๋ํ์ง ์์ต๋๋ค.
Linux์๋ ์ด๋ค ์ ํต์ ์ธ ํ๋ ๋์์ด ์์ต๋๊น? ์ฌ๋ฌ๋ถ ๋ชจ๋ Linux ๊ด๋ฆฌ๋ฅผ ๋ค๋ฃจ๊ณ ์์ผ๋ฏ๋ก ๋์์ด ๋ฌด์์ธ์ง ํน๋ณํ ์ค๋ช ํ ํ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ค์์ ์กฐ์ ํ ์ ์์ต๋๋ค.
- CPU.
- ๊ธฐ์ต.
- ์ ์ฅ.
- ๋ค๋ฅธ. ์ด์ ๋ํด์๋ ๋ง์ง๋ง์ ๊ฐ์์ผ๋ก ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์๋์ง ์ ์ฝ ์ ์ฑ ๊ณผ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ ๋งค์ฐ ์์ธกํ ์ ์๊ณ ๊ฐ์ฅ ๊ธฐ๋ถ ์ข์ ๋ฐฉ์์ด ์๋ ๋ฐฉ์์ผ๋ก ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
PostgreSQL๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ๋ฐ์ ์ธ ํน์ง์ ๋ฌด์์ ๋๊น? ๋ฌธ์ ๋ ๊ฐ๋ณ ๋ํธ๋ฅผ ์กฐ์ ํ ์ ์์ผ๋ฉฐ ์ฑ๋ฅ์ด ํฌ๊ฒ ํฅ์๋์์์ ํ์ธํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
์, ๊ทธ๋ฌํ ์ฅ์น๊ฐ ์์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ณต์กํ ๊ฒ์ ๋๋ค. ์๋ฒ๊ฐ ๊ฐ์ง๊ณ ์๊ณ ์ต๋ํ ์ํธ ์์ฉํ๊ธฐ๋ฅผ ์ ํธํ๋ ๋ชจ๋ ๋ฆฌ์์ค์ ์ํธ ์์ฉํฉ๋๋ค. ํธ์คํธ OS ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ํ Oracle์ ํ์ฌ ๊ถ์ฅ ์ฌํญ์ ์ดํด๋ณด๋ฉด ๋ชฝ๊ณจ ์ฐ์ฃผ ๋นํ์ฌ์ ๋ํ ๋๋ด๊ณผ ๊ฐ์ ๊ฒ์ ๋๋ค. ๊ฐ์๊ฒ ๋จน์ด๋ฅผ์ฃผ๊ณ ์๋ฌด๊ฒ๋ ๋ง์ง์ง ๋ง์ญ์์ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฒด๊ฐ ๋ชจ๋ ๊ฒ์ ์ ๋ ฌํฉ๋๋ค.
์์น์ ์ผ๋ก ์ํฉ์ PostgreSQL๊ณผ ์ด๋ ์ ๋ ๋์ผํฉ๋๋ค. ์ฐจ์ด์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ง ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์์ฒด์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ฆ, Linux ์์ค ์ด๋๊ฐ์์ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์ง์ ์ ๋ ฌํด์ผ ํฉ๋๋ค.
์ฃผ์ ์์ด๋์ด๋ ๋ฉ๋ชจ๋ฆฌ, CPU ๋ฑ๊ณผ ๊ฐ์ ๋จ์ผ ๋์์ ์ ํํ๊ณ ํ๋์ ์์ํ๋ ๊ฒ์ด ์๋๋ผ ์์ ๋ถํ๋ฅผ ๋ถ์ํ๊ณ ๊ฐ๋ฅํ ํ ์ฒ๋ฆฌ๋์ ํฅ์์์ผ ์ข์ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ง๋ ๋ถํ๊ฐ ๋ฐ์ํ๋๋ก ๋ ธ๋ ฅํ๋ ๊ฒ์ ๋๋ค. ์ฌ์ฉ์๋ฅผ ํฌํจํ ์ฐ๋ฆฌ๋ฅผ ์ํด.
์ด๊ฒ์ด ๋ฌด์์ธ์ง ์ค๋ช ํ๊ธฐ ์ํ ์ฌ์ง์ด ์์ต๋๋ค. Linux OS ๋ฒํผ๊ฐ ์๊ณ , ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๊ณ , PostgreSQL ๊ณต์ ๋ฒํผ๊ฐ ์์ต๋๋ค. Oracle๊ณผ ๋ฌ๋ฆฌ PostgreSQL์ ์ปค๋ ๋ฒํผ๋ฅผ ํตํด์๋ง ์ง์ ์๋ํฉ๋๋ค. ์ฆ, ๋์คํฌ์ ํ์ด์ง๊ฐ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ด๊ฐ๋ ค๋ฉด ์ปค๋ ๋ฒํผ๋ฅผ ํต๊ณผํ๊ณ ๋ค์ ๋์๊ฐ์ผ ํฉ๋๋ค. ์ฆ, ๋๊ฐ์ ์ํฉ์ ๋๋ค.
๋์คํฌ๋ ์ด ์์คํ ์๋์ ์์ต๋๋ค. ์ ๋ ์ด๊ฒ์ ๋์คํฌ๋ก ๊ทธ๋ ธ์ต๋๋ค. ์ค์ ๋ก RAID ์ปจํธ๋กค๋ฌ ๋ฑ์ด ์์ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ์ ์ถ๋ ฅ์ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ์ด ๋ฌธ์ ๋ฅผ ํตํด ๋ฐ์ํฉ๋๋ค.
PostgreSQL์ ํด๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค. ์์ ํ์ด์ง๊ฐ ์์ด์. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ํ์ด์ง๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ํ์ด์ง๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋ก์ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑํ๊ณ ์์ต๋๋ค. ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์์ผ๋ฉด ๊ทธ๋ฅ ์ฝ์ ๋ค์ ์ ์ฐจ์ ์ผ๋ก ์ด ์บ์์ ๊ณต์ ๋ฒํผ์์ ์ฌ๋ผ์ ธ ๋์คํฌ์ ๋ค์ ์ ์ฅ๋ฉ๋๋ค.
์ด๋๊ฐ์์ ๋ฌด์ธ๊ฐ๋ฅผ ๊ต์ฒดํ๋ฉด ์ ์ฒด ํ์ด์ง๊ฐ ๋ํฐ๋ก ํ์๋ฉ๋๋ค. ์ฌ๊ธฐ ํ๋์์ผ๋ก ํ์ํ์ด์. ๊ทธ๋ฆฌ๊ณ ์ด๋ ์ด ํ์ด์ง๊ฐ ๋ธ๋ก ์คํ ๋ฆฌ์ง์ ๋๊ธฐํ๋์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ์ฆ, ์ฐ๋ฆฌ๊ฐ ๋๋ฌ์์ก์ ๋ WAL์ ํญ๋ชฉ์ ๋ง๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ์๊ฐ, ์ฒดํฌํฌ์ธํธ๋ผ๋ ํ์์ด ์ฐพ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ผ์ง์ ๊ทธ๊ฐ ๋์ฐฉํ๋ค๋ ์ ๋ณด๊ฐ ๊ธฐ๋ก๋์์ต๋๋ค. ์ด๋ ๊ทธ ์๊ฐ ๊ณต์ ๋ฒํผ์ ์๋ ๋ชจ๋ ๋ํฐ ํ์ด์ง๊ฐ ์ปค๋ ๋ฒํผ๋ฅผ ํตํด fsync๋ฅผ ์ฌ์ฉํ์ฌ ์คํ ๋ฆฌ์ง ๋์คํฌ์ ๋๊ธฐํ๋์์์ ์๋ฏธํฉ๋๋ค.
์ด ์์ ์ด ์ํ๋๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์ ์์ด ์์ค๋๋ฉด ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์์ค๋๋ ์ํฉ์ด ๋ฐ์ํ์ง ์์ต๋๋ค. ๋ชจ๋๊ฐ ์ฐ๋ฆฌ์๊ฒ ๋งํ ์๊ตฌ ๋ฉ๋ชจ๋ฆฌ๋ ์ง๊ธ๊น์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ก ์ ์ํฉ๋๋ค. ์ด๊ฒ์ ๋ฌผ๋ก ์ฐ๋ฆฌ๊ฐ ๋ ธ๋ ฅํ๊ณ ์ข์ํ๋ ๋ฐ์ ๋ฏธ๋์ด์ง๋ง ์ง๊ธ์ ์ํ 20๋ ์์ ์ด๊ณ ์์ต๋๋ค. ๋ฌผ๋ก ์ด ๋ชจ๋ ๊ฒ์ ๋ชจ๋ํฐ๋งํด์ผ ํฉ๋๋ค.
์ฒ๋ฆฌ๋์ ์ต๋ํํ๋ ์์ ์ ๋ชจ๋ ๋จ๊ณ๋ฅผ ๋ฏธ์ธ ์กฐ์ ํ์ฌ ๋ชจ๋ ๋จ๊ณ๊ฐ ๋น ๋ฅด๊ฒ ์๋ค๋ก ์ด๋ํ๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ด์ง ์บ์์ ๋๋ค. PostgreSQL์์๋ ์ ํ ์ฟผ๋ฆฌ ๋ฑ์ ๋ณด๋๊ณ ๋์คํฌ์์ ์ด ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ์ต๋๋ค. ๊ทธ๋ค์ ๊ฒฐ๊ตญ ๊ณต์ ๋ฒํผ์ ๋ค์ด๊ฐ์ต๋๋ค. ๋ฐ๋ผ์ ์ด๊ฒ์ด ๋ ์ ์๋ํ๋ ค๋ฉด ๋ง์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ด์ผ ํฉ๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ด ์ํํ๊ณ ๋น ๋ฅด๊ฒ ์๋ํ๋ ค๋ฉด ๋ชจ๋ ๋จ๊ณ์์ ์ด์ ์ฒด์ ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ท ํ ์กํ ํ๋์จ์ด๋ฅผ ์ ํํ์ญ์์ค. ์๋ํ๋ฉด ์ด๋ค ๋ถ๋ถ์ ๋ถ๊ท ํ์ด ์์ผ๋ฉด ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง๋ค ์ ์์ง๋ง ์ถฉ๋ถํ ์๋๋ก ์๋น์ค๋์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๊ฐ ์ฌํญ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ด๋ฌํ ํ์ด์ง๋ฅผ ๋ ๋น ๋ฅด๊ฒ ์๋ค๋ก ์ด๋ํ๋ ค๋ฉด ๋ค์์ ๋ฌ์ฑํด์ผ ํฉ๋๋ค.
- ์ฒซ์งธ, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์์ ํด์ผ ํฉ๋๋ค.
- ๋์งธ, ๋ฉ๋ชจ๋ฆฌ์์ ๋์คํฌ๋ก ํ์ด์ง๊ฐ ์ด๋ํ๋ ์ ํ์ด ๋ ํจ์จ์ ์ด์ด์ผ ํฉ๋๋ค.
- ์ ์งธ, ์ข์ ๋์คํฌ๊ฐ ์์ด์ผ ํฉ๋๋ค.
์๋ฒ์ 512GB์ RAM์ด ์๊ณ ๋ชจ๋ RAM์ด ์บ์ ์์ด SATA ํ๋ ๋๋ผ์ด๋ธ์ ์ ์ฅ๋๋ค๋ฉด ์ ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ ๋จ์ํ ํธ๋ฐ์ด ์๋๋ผ SATA ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ถ ํธ๋ฐ์ผ๋ก ๋ณํฉ๋๋ค. ๋น์ ์ ์ง์ ์ ์ผ๋ก ๊ทธ๊ฒ์ ์ง๋ฉดํ๊ฒ ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฌด๊ฒ๋ ๋น์ ์ ๊ตฌํ ์ ์์ต๋๋ค.
๊ธฐ์ต๊ณผ ๊ด๋ จ๋ ์ฒซ ๋ฒ์งธ ์ ๊ณผ ๊ด๋ จํ์ฌ, ์ถ์ ๋งค์ฐ ์ด๋ ต๊ฒ ๋ง๋๋ ์ธ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
๊ทธ ์ค ์ฒซ ๋ฒ์งธ๋ NUMA์ ๋๋ค. NUMA๋ ์ฑ๋ฅ ํฅ์์ ์ํด ๋ง๋ค์ด์ง ๊ฒ์ ๋๋ค. ์์ ๋์ ๋ฐ๋ผ ๋ค์ํ ๊ฒ์ ์ต์ ํํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ก์ด ํ์ฌ ํํ์์๋ ํ์ด์ง ์บ์ ๊ณต์ ๋ฒํผ๋ฅผ ์ง์ค์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์๋ ๊ทธ๋ค์ง ์ข์ง ์์ต๋๋ค.
๊ฐ๋จํ ๋งํด์. NUMA์ ๋ฌธ์ ๊ฐ ์๋์ง ์ด๋ป๊ฒ ์ ์ ์๋์? ๋ถ์พํ ๋ ธํฌ๊ฐ ๋ฐ์ํ์ฌ ๊ฐ์๊ธฐ ์ผ๋ถ CPU์ ๊ณผ๋ถํ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋์์ PostgreSQL์ ์ฟผ๋ฆฌ๋ฅผ ๋ถ์ํ๊ณ ์ ์ฌํ ๊ฒ์ด ์์์ ํ์ธํฉ๋๋ค. ์ด๋ฌํ ์ฟผ๋ฆฌ๋ CPU๋ฅผ ๋๋ฌด ๋ง์ด ์ฌ์ฉํด์๋ ์ ๋ฉ๋๋ค. ์ค๋ซ๋์ ์ก์ ์ ์์ต๋๋ค. PostgreSQL์ฉ NUMA๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ฒ์๋ถํฐ ์ฌ๋ฐ๋ฅธ ๊ถ์ฅ ์ฌํญ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ฝ์ต๋๋ค.
์ ๋ง ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋ ๊ฑธ๊น์? NUMA๋ ๋น๊ท ์ผ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค(Non-Uniform Memory Access)๋ฅผ ๋ํ๋ ๋๋ค. ์ ์ ๋ฌด์์ธ๊ฐ? CPU๊ฐ ์๊ณ ๊ทธ ์์๋ ๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ฉ๋ชจ๋ฆฌ ์ํธ ์ฐ๊ฒฐ์ ๋ค๋ฅธ CPU์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ด์ฌ ์ ์์ต๋๋ค.
๋น์ ์ด ์คํํ๋ ๊ฒฝ์ฐ numactl --hardware
, ๊ทธ๋ฌ๋ฉด ๊ทธ๋ ๊ฒ ํฐ ์ํธ๋ฅผ ์ป๊ฒ ๋ ๊ฒ์
๋๋ค. ๋ฌด์๋ณด๋ค๋ ๊ฑฐ๋ฆฌ ํ๋๊ฐ ์์ต๋๋ค. 10-20๊ณผ ๊ฐ์ ์ซ์๊ฐ ์์ต๋๋ค. ์ด ์ซ์๋ ์ด ์๊ฒฉ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ํํ๊ณ ๋ก์ปฌ์์ ์ฌ์ฉํ๊ธฐ ์ํ ํ ์์ ์ง๋์ง ์์ต๋๋ค. ์์น์ ์ผ๋ก๋ ์ข์ ์๊ฐ์
๋๋ค. ์ด๋ฅผ ํตํด ๋ค์ํ ์ํฌ๋ก๋์์ ์ฑ๋ฅ ์๋๊ฐ ํฌ๊ฒ ํฅ์๋ฉ๋๋ค.
์ด์ ํ๋์ CPU๊ฐ ๋จผ์ ๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ์๋ํ ๋ค์ ์ธํฐ์ปค๋ฅํธ๋ฅผ ํตํด ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ํ๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. ๊ทธ๋ฆฌ๊ณ ์ด CPU๋ ์ ์ฒด PostgreSQL ํ์ด์ง ์บ์๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ์ฆ, ๋ช ๊ธฐ๊ฐ๋ฐ์ดํธ์ ํด๋นํฉ๋๋ค. CPU์๋ ์ผ๋ฐ์ ์ผ๋ก ํด๋น ๋ชจ๋ ์์ฒด์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฑฐ์ ์๊ธฐ ๋๋ฌธ์ ํญ์ ์ต์ ์ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋น์ค๋๋ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ๋ ์ด๋ฌํ ์ํธ ์ฐ๊ฒฐ์ ํต๊ณผํฉ๋๋ค. ๋๋ฆฌ๊ณ ์ฌํ ๊ฒ์ผ๋ก ๋ฐํ์ก์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ ธ๋๋ฅผ ์๋น์คํ๋ ํ๋ก์ธ์๋ ์ง์์ ์ผ๋ก ๊ณผ๋ถํ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ก์ธ์ค ์๊ฐ์ด ๋์๊ณ ๋๋ฆฝ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๊ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ํ์ง ์๋ ์ํฉ์ ๋๋ค.
๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๋ ์ ํํ ์ต์ ์ Linux ์ด์ ์ฒด์ ๊ฐ ๊ฑฐ๊ธฐ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ ํ ๋ชจ๋ฅด๋ ๊ฒ์ ๋๋ค. ๊ทธ๋์ ๊ทธ๊ฒ์ ๊ทธ๋๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ก์ธ์คํฉ๋๋ค.
์ ๊ทธ๋ฐ ๊ฒ๋๊น? ๊ทธ ๋ฐ๋๊ฐ๋์ด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ ํ ๊ฐ์ง ๊ฐ๋จํ ์ด์ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค. ํ์ด์ง ์บ์๋ฅผ ์ํด ์์ญ, ์๋ฐฑ ๊ธฐ๊ฐ๋ฐ์ดํธ์ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๋ชจ๋ ๊ฒ์ ํ ๋นํ๊ณ ๊ฑฐ๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ์บ์ํ๋ฉด ์บ์๋ฅผ ์ฌ์ฉํ์ฌ ์ป์ ์ ์๋ ์ด๋์ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ๊น๋ค๋ก์ด ์ก์ธ์ค๋ก ์ป์ ์ ์๋ ์ด๋๋ณด๋ค ํจ์ฌ ๋ ํด ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ NUMA๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ ํจ์จ์ ์ผ๋ก ์ก์ธ์คํ ์ ์๋ค๋ ์ฌ์ค๊ณผ ๋น๊ตํ ์ ์๋ ์ด์ ์ ์ป๊ฒ ๋ ๊ฒ์ ๋๋ค.
๋ฐ๋ผ์ ๋ฐ์ ๋ฏธ๋๊ฐ ๋๋ํ ๋๊น์ง ํ์ฌ ์ฌ๊ธฐ์๋ ๋ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ด ์์ผ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฒด๋ ์ด๋ค CPU์์ ์คํ ์ค์ด๊ณ ์ด๋์์ ๋ฌด์ธ๊ฐ๋ฅผ ๊ฐ์ ธ์์ผ ํ๋์ง ํ์ ํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ฌ๋ฐ๋ฅธ ์ ๊ทผ ๋ฐฉ์์ NUMA๋ฅผ ์์ ํ ๋นํ์ฑํํ๋ ๊ฒ์ ๋๋ค., ์๋ฅผ ๋ค์ด ์ฌ๋ถํ ํ ๋. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์๊ธ์ ์ด๋ ๊ฒ์ด ๋ ๋์์ง์ ๋ํ ์ง๋ฌธ์ด ์ ํ ๋ฐ์ํ์ง ์์ ์ ๋์ ๊ท๋ชจ์ ๋๋ค.
๋ ๋ค๋ฅธ ์ต์ ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ง์์ ์ํด ์ฐ๋ฆฌ์๊ฒ ์ฌ ๋ ์๋ฒ๋ฅผ ์ฌ๋ถํ ํ๋ ๊ฒ์ด ๊ทธ์๊ฒ ํฐ ์ผ์ด๊ธฐ ๋๋ฌธ์ ์ฒซ ๋ฒ์งธ ๊ฒ๋ณด๋ค ๋ ์์ฃผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ ๊ฑฐ๊ธฐ์ ์ฌ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ NUMA ๋๋ฌธ์ ๋ฌธ์ ๋ฅผ ๊ฒฝํํฉ๋๋ค. ๋ฐ๋ผ์ ์ฌ๋ถํ ๋ณด๋ค ๋ ์นจํด์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ๋นํ์ฑํํ๋ ค๊ณ ๋ ธ๋ ฅํ์ง๋ง ๋นํ์ฑํ๋์ด ์๋์ง ์ฃผ์ ๊น๊ฒ ํ์ธํ์ญ์์ค. ๊ฒฝํ์์ ์ ์ ์๋ฏ์ด ์์ PostgreSQL ํ๋ก์ธ์ค์์ NUMA๋ฅผ ๋นํ์ฑํํ๋ ๊ฒ์ด ์ข์ง๋ง ์๋ํ ํ์๋ ์ ํ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๋ ๊ฐ ์ ๋ง๋ก ์ ์์ ๊ป๋์ง ํ์ธํ๊ณ ํ์ธํด์ผ ํฉ๋๋ค.
Robert Haas์ ์ข์ ๊ฒ์๋ฌผ์ด ์์ต๋๋ค. ์ด๊ฒ์ PostgreSQL ์ปค๋ฏธํฐ ์ค ํ๋์ ๋๋ค. ๋ชจ๋ ์ ๋ ๋ฒจ ๊ณฑ์ฐฝ์ ํต์ฌ ๊ฐ๋ฐ์ ์ค ํ ๋ช . ๊ทธ๋ฆฌ๊ณ ์ด ๊ฒ์๋ฌผ์ ๋งํฌ๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉด NUMA๊ฐ ์ด๋ป๊ฒ ์ฌ๋๋ค์ ์ถ์ ์ด๋ ต๊ฒ ๋ง๋ค์๋์ง์ ๋ํ ๋ช ๊ฐ์ง ๋ค์ฑ๋ก์ด ์ด์ผ๊ธฐ๋ฅผ ์ค๋ช ํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ๋๋ก ์๋ํ๋ ค๋ฉด ์๋ฒ์์ ๊ตฌ์ฑํด์ผ ํ ์ฌํญ์ ๋ํ ์์คํ ๊ด๋ฆฌ์ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ์ฐ๊ตฌํ์ธ์. ์ด๋ฌํ ์ค์ ์ ๊ธฐ๋กํ๊ณ ํ์ธํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ทธ๋ค์ง ์ข์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๋ ์ ๊ฐ ์ค๋ช ํ ๋ชจ๋ ์ค์ ์ ์ ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ด๊ฒฐํจ์ฑ์ ์ํด ๋ง์คํฐ-์ฌ๋ ์ด๋ธ ๋ชจ๋๋ก ์์ง๋ฉ๋๋ค. ์ธ์ ๊ฐ ์ฌ๊ณ ๊ฐ ๋์ ์ฌ๋ ์ด๋ธ๋ก ์ ํํ์ฌ ๋ง์คํฐ๊ฐ ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฌ๋ ์ด๋ธ์์ ์ด๋ฌํ ์ค์ ์ ์ํํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค.
๊ธด๊ธ ์ํฉ์์ ๋ชจ๋ ๊ฒ์ด ๋งค์ฐ ๋์๊ณ ์ ํ๊ฐ ๊ณ์ ์ธ๋ฆฌ๊ณ ์์ฌ๊ฐ ํฐ ๋ง๋๊ธฐ๋ฅผ ๋ค๊ณ ๋ฌ๋ ค ์ค๋ฉด ํ์ธํ ์๊ฐ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ ๋งค์ฐ ๋น์ฐธํ ์ ์์ต๋๋ค.
๋ค์ ์์ ์ ๊ฑฐ๋ํ ํ์ด์ง์ ๋๋ค. ๊ฑฐ๋ํ ํ์ด์ง๋ ๋ณ๋๋ก ํ ์คํธํ๊ธฐ ์ด๋ ต๊ณ ์ด๋ฅผ ์ํํ ์ ์๋ ๋ฒค์น๋งํฌ๊ฐ ์๋๋ผ๋ ๊ทธ๋ ๊ฒ ํ ํ์๊ฐ ์์ต๋๋ค. Google์์๋ ์ฝ์ต๋๋ค.
์ ์ ๋ฌด์์ธ๊ฐ? ์๋ฅผ ๋ค์ด 30GB๊ฐ ๋๋ RAM์ ๊ฐ์ถ ๊ทธ๋ค์ง ๋น์ธ์ง ์์ ์๋ฒ๊ฐ ์์ต๋๋ค. ๊ฑฐ๋ํ ํ์ด์ง๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ธก๋ฉด์์ ํ์คํ ์ค๋ฒํค๋๊ฐ ์์์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ค๋ฒํค๋๋ ๊ฐ์ฅ ์ฆ๊ฑฐ์ด ๊ฒ๊ณผ๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ์ต๋๋ค.
์ ๊ทธ๋ฐ ๊ฒ๋๊น? ๊ทธ๋์ ๋ฌด์จ ์ผ์ด์ผ? ์ด์ ์ฒด์ ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ ์กฐ๊ฐ์ผ๋ก ํ ๋นํฉ๋๋ค. ์ ๋ง ํธ๋ฆฌํด์. ์ญ์ฌ์ ์ผ๋ก ๊ทธ๋ฐ ์ผ์ด ์ผ์ด๋ฌ๊ฑฐ๋ ์. ๊ทธ๋ฆฌ๊ณ ์์ธํ ์ดํด๋ณด๋ฉด OS๋ ๊ฐ์ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ก ๋ณํํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ํ๋ก์ธ์ค๋ ๊ฐ์ฅ ๊ฐ๋จํ์ง ์์ผ๋ฏ๋ก OS๋ ์ด ์์ ์ ๊ฒฐ๊ณผ๋ฅผ TLB(Translation Lookaside Buffer)์ ์บ์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ TLB๋ ์บ์์ด๊ธฐ ๋๋ฌธ์ ์บ์์ ๋ด์ฌ๋ ๋ชจ๋ ๋ฌธ์ ๋ ์ด ์ํฉ์์ ๋ฐ์ํฉ๋๋ค. ์ฒซ์งธ, RAM์ด ๋ง๊ณ ๋ชจ๋ ์์ ๋ฉ์ด๋ฆฌ๋ก ํ ๋น๋ ๊ฒฝ์ฐ ์ด ๋ฒํผ๋ ๋งค์ฐ ์ปค์ง๋๋ค. ์บ์๊ฐ ํฌ๋ฉด ๊ฒ์ ์๋๊ฐ ๋๋ ค์ง๋๋ค. ์ค๋ฒํค๋๋ ์ ์์ด๋ฉฐ ์์ฒด์ ์ผ๋ก ๊ณต๊ฐ์ ์ฐจ์งํฉ๋๋ค. ์ฆ, RAM์ด ์๋ชป๋ ๊ฒ์ ์ํด ์๋น๋๊ณ ์์ต๋๋ค. ์ด ์๊ฐ.
๋์งธ, ์ด๋ฌํ ์ํฉ์์ ์บ์๊ฐ ๋ ๋ง์ด ์ปค์ง์๋ก ์บ์ ๋๋ฝ์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋ ๋์์ง๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์บ์์ ํจ์จ์ฑ์ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ๊ธ๊ฒฉํ ๊ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์ ์ด์ ์ฒด์ ๋ ๊ฐ๋จํ ์ ๊ทผ ๋ฐฉ์์ ์ ์ํ์ต๋๋ค. ์ค๋ซ๋์ ๋ฆฌ๋ ์ค์์ ์ฌ์ฉ๋์ด ์์ต๋๋ค. ์ผ๋ง ์ FreeBSD์ ๋ฑ์ฅํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ Linux์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ ๊ฑฐ๋ํ ํ์ด์ง์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์๋ ๊ฑฐ๋ํ ํ์ด์ง๋ผ๋ ์์ด๋์ด๊ฐ ์ด๊ธฐ์ Oracle ๋ฐ IBM์ ํฌํจํ๋ ์ปค๋ฎค๋ํฐ์ ์ํด ์ถ์ง๋์๋ค๋ ์ ์ ์ฃผ๋ชฉํด์ผ ํฉ๋๋ค. ์ฆ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์กฐ์ ์ฒด๋ ์ด๊ฒ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ์ ์ฉํ ๊ฒ์ด๋ผ๊ณ ๊ฐ๋ ฅํ๊ฒ ์๊ฐํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด PostgreSQL๊ณผ ์ด๋ป๊ฒ ์น๊ตฌ๊ฐ ๋ ์ ์์ต๋๊น? ์ฒซ์งธ, Linux ์ปค๋์์ ๊ฑฐ๋ํ ํ์ด์ง๋ฅผ ํ์ฑํํด์ผ ํฉ๋๋ค.
๋์งธ, sysctl ๋งค๊ฐ๋ณ์๋ก ๋ช ์์ ์ผ๋ก ์ง์ ํด์ผ ํฉ๋๋ค. ์ฆ, ๊ฐ์๊ฐ ๋ช ๊ฐ์ธ์ง ์ง์ ํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์ ์๋ ์ซ์๋ ์ผ๋ถ ์ค๋๋ ์๋ฒ์์ ๊ฐ์ ธ์จ ๊ฒ์ ๋๋ค. ๊ฑฐ๋ํ ํ์ด์ง๊ฐ ๋ค์ด๊ฐ ์ ์๋๋ก ๊ณต์ ๋ฒํผ ์๋ฅผ ๊ณ์ฐํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์ฒด ์๋ฒ๊ฐ PostgreSQL ์ ์ฉ์ธ ๊ฒฝ์ฐ ์ข์ ์์์ ์ RAM์ 25%๋ฅผ ๊ณต์ ๋ฒํผ์ ํ ๋นํ๊ฑฐ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํ์คํ ์ด 75%์ ๋ง์ ๊ฒ์ด๋ผ๊ณ ํ์ ํ๋ ๊ฒฝ์ฐ 75%๋ฅผ ํ ๋นํ๋ ๊ฒ์ ๋๋ค. ์์์ 256. ๊ทธ๋ฆฌ๊ณ 64GB์ RAM์ด ์์ผ๋ฉด ๊ทธ์ ๋ฐ๋ผ XNUMXGB์ ๋ํ ๋ฒํผ๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. ์ฝ๊ฐ์ ์ฌ๋ฐฑ์ ๋๊ณ ๋๋ต์ ์ผ๋ก ๊ณ์ฐํ์ญ์์ค. ์ด ์์น๋ ๋ฌด์์ผ๋ก ์ค์ ๋์ด์ผ ํฉ๋๊น?
๋ฒ์ 9.2 ์ด์ (์ค์ํ์ง ์๋๋ค๋ฉด ๋ฒ์ 8.2 ์ดํ)์๋ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ PostgreSQL์ ๊ฑฐ๋ํ ํ์ด์ง์ ์ฐ๊ฒฐํ๋ ๊ฒ์ด ๊ฐ๋ฅํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ํญ์ ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค. ์ฒซ์งธ, ๊ฑฐ๋ํ ํ์ด์ง๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ํ ๋นํ๋ ค๋ฉด ์ปค๋์ด ํ์ํฉ๋๋ค. ๋์งธ, ์ด๋ค๊ณผ ํจ๊ป ์๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๊ธฐ ์ํจ์ ๋๋ค. ๊ทธ๋ฐ ์์ผ๋ก๋ง ์ฌ์ฉ๋์ง๋ ์์ ๊ฒ์ ๋๋ค. PostgreSQL์ ์์คํ 5 ์คํ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ธฐ ๋๋ฌธ์ libhugetlbfs๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์์ ์ ์ํํ ์ ์์ต๋๋ค. ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์ฒด ์ด๋ฆ์ ๋๋ค.
9.3์์๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ PostgreSQL ์ฑ๋ฅ์ด ํฅ์๋์์ผ๋ฉฐ ์์คํ 5 ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐฉ๋ฒ์ด ์ค๋จ๋์์ต๋๋ค. ๋ชจ๋๊ฐ ๋งค์ฐ ๊ธฐ๋ปํ์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํ ์ปดํจํฐ์์ ๋ ๊ฐ์ PostgreSQL ์ธ์คํด์ค๋ฅผ ์คํํ๋ ค๊ณ ํ ๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถฉ๋ถํ์ง ์๋ค๊ณ ๋งํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ sysctl์ ์์ ํด์ผ ํ๋ค๊ณ ๋งํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ ํ ์ฌ๋ถํ ์ด ํ์ํ sysctl์ด ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋๊ฐ ํ๋ณตํ์ต๋๋ค. ๊ทธ๋ฌ๋ mmap ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ผ๋ก ์ธํด ๊ฑฐ๋ํ ํ์ด์ง ์ฌ์ฉ์ด ์ค๋จ๋์์ต๋๋ค. ๋๋ถ๋ถ์ ํด๋ผ์ด์ธํธ๋ ๋๊ท๋ชจ ๊ณต์ ๋ฒํผ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ 9.3์ผ๋ก ์ ํํ์ง ๋ง ๊ฒ์ ์ ๊ทน ๊ถ์ฅํฉ๋๋ค. ์๋ํ๋ฉด ์ค๋ฒํค๋๊ฐ ์ข์ ๋น์จ๋ก ๊ณ์ฐ๋๊ธฐ ์์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํ์ง๋ง ์ปค๋ฎค๋ํฐ์์๋ ์ด ๋ฌธ์ ์ ์ฃผ๋ชฉํ๊ณ 9.4์์๋ ์ด ์ด๋ฒคํธ๋ฅผ ์์ฃผ ์ ์ฌ์์ ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ 9.4์์๋ ์๋๋ฅผ ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํ ์ ์๋ ๋งค๊ฐ๋ณ์๊ฐ postgresql.conf์ ๋ํ๋ฌ์ต๋๋ค.
์๋ํ๋ ๊ฒ์ด ๊ฐ์ฅ ์์ ํ ์ ํ์ ๋๋ค. PostgreSQL์ด ์์๋๋ฉด ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ ๋ ๊ฑฐ๋ํ ํ์ด์ง์์ ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ํฉ๋๋ค. ์๋ํ์ง ์์ผ๋ฉด ์ผ๋ฐ ์ ํ์ผ๋ก ๋กค๋ฐฑ๋ฉ๋๋ค. FreeBSD๋ Solaris๊ฐ ์๋ค๋ฉด ์๋ํด ๋ณผ ์ ์์ต๋๋ค. ํญ์ ์์ ํฉ๋๋ค.
์ผ์ ธ ์์ผ๋ฉด ๊ฑฐ๋ํ ํ์ด์ง์์ ์ ํํ ์ ์์ผ๋ฉด ์์๋์ง ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ์ด๋ฏธ ๋๊ตฌ์ ๋ฌด์์ด ๋ ์ข์์ง์ ๊ดํ ๋ด์ฉ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋ํ๋ค๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ฌ์ง๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ๊ฐ์กฐํด์ผ ํ ๋ด์ฉ์ด ์ค์ ๋ก ์๋์ง ํ์ธํ์ญ์์ค. ํ์ฌ ์ด ๊ธฐ๋ฅ์ Linux์์๋ง ์๋ํฉ๋๋ค.
๋ ์งํํ๊ธฐ ์ ์ ์์ ๋ฉ๋ชจ๋ฅผ ํ๋ ๋ ํ๊ฒ ์ต๋๋ค. ํฌ๋ช ํ ๊ฑฐ๋ํ ํ์ด์ง๋ ์์ง PostgreSQL์ ๊ดํ ๊ฒ์ด ์๋๋๋ค. ๊ทธ๋ ๊ทธ๊ฒ๋ค์ ์ ์์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ์ํฌ๋ก๋๋ฅผ ์ํ ํฌ๋ช ๊ฑฐ๋ ํ์ด์ง๋ฅผ ์ฌ์ฉํ๋ฉด ๋๊ท๋ชจ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ ๋ ๋งค์ฐ ํฐ ๋ณผ๋ฅจ์์๋ง ์ด์ ์ ์ป์ ์ ์์ต๋๋ค. ํ ๋ผ๋ฐ์ดํธ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ค๋ฉด ์ด๊ฒ์ด ์๋ํ ์ ์์ต๋๋ค. ๋ ์ผ์์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒฝ์ฐ ์ปดํจํฐ์ 32, 64, 128, 256GB์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ผ๋ฉด ์ผ๋ฐ์ ์ธ ๋์ฉ๋ ํ์ด์ง๋ OK์ด๋ฏ๋ก Transparent๋ฅผ ๋นํ์ฑํํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ธฐ์ต์ ๊ดํ ๋ง์ง๋ง ๊ฒ์ ์ด๋งค์ ์ง์ ์ ์ธ ๊ด๋ จ์ด ์์ผ๋ฉฐ, ๊ทธ๊ฒ์ ๋น์ ์ ์ถ์ ์ ๋ง๋ก ๋ง์น ์ ์์ต๋๋ค. ์๋ฒ๊ฐ ์ง์์ ์ผ๋ก ๊ต์ฒด๋๋ค๋ ์ฌ์ค์ ๋ชจ๋ ์ฒ๋ฆฌ๋์ ํฐ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ฌ๋ฌ ๋ฉด์์ ๋งค์ฐ ๋ถ์พํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฃผ์ ๋ฌธ์ ๋ ์ต์ ์ปค๋์ด ์ด์ Linux ์ปค๋๊ณผ ์ฝ๊ฐ ๋ค๋ฅด๊ฒ ๋์ํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๋ฐ๊ธฐ ๋งค์ฐ ๋ถ์พํ ์ผ์ ๋๋ค. ์๋ํ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ค์ ์์ ์ ๋ํด ์ด์ผ๊ธฐํ ๋ OOM-killer์ ์๊ธฐ์ ์ ํ ๋์ฐฉ์ผ๋ก ๋๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋์ ๋์ฐฉํ์ง ์๊ณ PostgreSQL์ ๋จ์ด๋จ๋ฆฐ OOM-killer๋ ๋ถ์พํฉ๋๋ค. ์ฆ, ๋ง์ง๋ง ์ฌ์ฉ์๊น์ง ๋ชจ๋ ์ฌ๋์ด ์ด์ ๋ํด ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
๋ฌด์จ ์ผ์ด์ผ? ๊ฑฐ๊ธฐ์ ๋ง์ ์์ RAM์ด ์๊ณ ๋ชจ๋ ๊ฒ์ด ์ ์๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ค ์ด์ ๋ก ์๋ฒ๊ฐ ์ค์์์ ์ค๋จ๋๊ณ ์ด๋ก ์ธํด ์๋๊ฐ ๋๋ ค์ง๋๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ง์ ๊ฒ ๊ฐ์ง๋ง ์ด๋ฐ ์ผ์ด ๋ฐ์ํฉ๋๋ค.
์ด์ ์๋ vm.swappiness๋ฅผ 32์ผ๋ก ์ค์ ํ๋ ๊ฒ, ์ฆ ์ค์์ ๋นํ์ฑํํ๋ ๊ฒ์ ๊ถ์ฅํ์ต๋๋ค. ์ด์ ์๋ XNUMXGB์ RAM๊ณผ ์ด์ ์์ํ๋ ๊ณต์ ๋ฒํผ๊ฐ ์์ฒญ๋ ์์ธ ๊ฒ์ฒ๋ผ ๋ณด์์ต๋๋ค. ์ค์์ ์ฃผ์ ๋ชฉ์ ์ ์ฐ๋ฆฌ๊ฐ ๋จ์ด์ง๋ฉด ํฌ๋ฌ์คํธ๋ฅผ ๋์ง ์ฅ์๋ฅผ ๋ง๋ จํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋ ์ด์ ํน๋ณํ ์ฑ์ทจ๋์ง ์์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด ๊ป์ง๋ก ๋ฌด์์ ํ ๊ฑด๊ฐ์? ํนํ ์ด๋ฌํ ๊ท๋ชจ์ ๊ฒฝ์ฐ ์ค์์ด ํ์ํ ์ด์ ๊ฐ ๋ช ํํ์ง ์์ ์์ ์ ๋๋ค.
๊ทธ๋ฌ๋ ๋ณด๋ค ํ๋์ ์ธ ์ปค๋ ๋ฒ์ ์์๋ ๋์์ด ๋ณ๊ฒฝ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์์ XNUMX์ผ๋ก ์ค์ ํ๋ฉด, ์ฆ ๋๋ฉด ์กฐ๋ง๊ฐ RAM์ด ๋จ์ ์๋๋ผ๋ ๊ฐ์ฅ ์ง์ฝ์ ์ธ ์๋น์๋ฅผ ์ฃฝ์ด๊ธฐ ์ํด OOM ํฌ๋ฌ๊ฐ ์ฌ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๊ทธ๋ฌํ ์์ ๋์ด ์์ง ์กฐ๊ธ ๋จ์ ์๋ค๊ณ ์๊ฐํ๊ณ ๋ฐ์ด ๋ด๋ฆด ๊ฒ์ ๋๋ค. ์ฆ, ์์คํ ํ๋ก์ธ์ค๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ด ์๋๋ผ ๋ ์ค์ํ ๊ฒ์ ๊ฒฐ์ ํ๊ธฐ ์ํด ๋ฐ์ด๋ค ๊ฒ์ ๋๋ค. ๋ ์ค์ํ ๊ฒ์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ค์ ์ผ๋ก ์๋นํ๋ ํฌ์คํธ๋ง์คํฐ์ ๋๋ค. ๊ทธ ํ์๋ ๊ธฐ์ง๋ฅผ ๋ณต์ํ ํ์๊ฐ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
๋ฐ๋ผ์ ์ด์ ๋ด๊ฐ ๊ธฐ์ตํ๋ ํ ๊ธฐ๋ณธ๊ฐ์ ๋๋ถ๋ถ 6 ์ ๋์ ๋๋ค. ์ฆ, ๋จ์ ๋ฉ๋ชจ๋ฆฌ ์์ ๋ฐ๋ผ ์ค์ ์ฌ์ฉ์ ์์ํด์ผ ํ๋ ์์ ์ ์ด๋์ ๋๊น? ์ด์ vm.swappiness = 1๋ก ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๋ํ๋ฉด ์ด๋ ๊ฒ ํ๋ฉด ์ค์ง์ ์ผ๋ก ๊ธฐ๋ฅ์ด ๊บผ์ง์ง๋ง ์๊ธฐ์น ์๊ฒ ๋์ฐฉํ์ฌ ๋ชจ๋ ๊ฒ์ ์ข ๋ฃํ๋ OOM-killer์ ๋์ผํ ํจ๊ณผ๋ฅผ ์ ๊ณตํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฌด์ ํฅํ ๊ณํ? ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ์ ์ด์ผ๊ธฐํ๋ค ์ ์ฐจ ๋์คํฌ ์ชฝ์ผ๋ก ์ฎ๊ฒจ๊ฐ๋ค ๋ณด๋ฉด ๋ค๋ค ๊ณ ๊ฐ๋ฅผ ๊ฐธ์ฐ๋ฑํ๊ธฐ ์์ํฉ๋๋ค. ๋์คํฌ๋ ๋๋ฆฌ๊ณ ๋ฉ๋ชจ๋ฆฌ๋ ๋น ๋ฅด๋ค๋ ์ฌ์ค์ ์ด๋ฆด ๋๋ถํฐ ๋๊ตฌ์๊ฒ๋ ์ต์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋์คํฌ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ๋๊ตฌ๋ ์๊ณ ์์ต๋๋ค.
์ฒดํฌํฌ์ธํธ ์คํ์ดํฌ์ ๊ด๋ จ๋ ์ฃผ์ PostgreSQL ์ฑ๋ฅ ๋ฌธ์ ๋ ๋์คํฌ ์๋๊ฐ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ์ง ์์ต๋๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ๋์คํฌ ๋์ญํญ์ ๊ท ํ์ด ๋ง์ง ์๊ธฐ ๋๋ฌธ์ผ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ค๋ฅธ ์์น์์๋ ๊ท ํ์ด ๋ง์ง ์์ ์๋ ์์ต๋๋ค. PostgreSQL์ด ๊ตฌ์ฑ๋์ง ์์๊ณ , OS๊ฐ ๊ตฌ์ฑ๋์ง ์์์ผ๋ฉฐ, ํ๋์จ์ด๊ฐ ๊ตฌ์ฑ๋์ง ์์๊ณ , ํ๋์จ์ด๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ฌธ์ ๋ ๋ชจ๋ ๊ฒ์ด ์ ์์ ์ผ๋ก ๋ฐ์ํ๋ ๊ฒฝ์ฐ์๋ง ๋ฐ์ํ์ง ์์ต๋๋ค. ์ฆ, ๋ถํ๊ฐ ์๊ฑฐ๋ ์ค์ ๊ณผ ํ๋์จ์ด๊ฐ ์ ์ ํ๋์ด ์์ต๋๋ค.
๊ทธ๊ฒ์ ๋ฌด์์ด๋ฉฐ ์ด๋ป๊ฒ ์๊ฒผ์ต๋๊น? ์ผ๋ฐ์ ์ผ๋ก PostgreSQL์ ์ฌ์ฉํ๋ ์ฌ๋๋ค์ ์ด ๋ฌธ์ ๋ฅผ ๋ ๋ฒ ์ด์ ๊ฒฝํํ์ต๋๋ค. ์ค๋ช ํ๊ฒ ์ต๋๋ค. ์์ ๋งํ๋ฏ์ด PostgreSQL์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ๋ํฐ ํ์ด์ง๋ฅผ ๋์คํฌ์ ๋คํํ๊ธฐ ์ํด ์ฃผ๊ธฐ์ ์ผ๋ก ์ฒดํฌํฌ์ธํธ๋ฅผ ๋ง๋ญ๋๋ค. ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ง์ ๊ฒฝ์ฐ ์ฒดํฌํฌ์ธํธ๋ fsync๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ํ์ด์ง๋ฅผ ๋คํํ๋ฏ๋ก ๋์คํฌ์ ์ง์ค์ ์ธ ์ํฅ์ ๋ฏธ์น๊ธฐ ์์ํฉ๋๋ค. ์ปค๋ ๋ฒํผ์ ๋์ฐฉํ๊ณ fsync๋ฅผ ์ฌ์ฉํ์ฌ ๋์คํฌ์ ๊ธฐ๋ก๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ฌ์ ์ ๊ท๋ชจ๊ฐ ํฌ๋ฉด ๋ถ์พํ ํจ๊ณผ, ์ฆ ๋์คํฌ ์ฌ์ฉ๋ฅ ์ด ๋งค์ฐ ๋์์ง๋ ๊ฒ์ ๊ด์ฐฐํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋ ์ฅ์ ์ฌ์ง์ด ์์ต๋๋ค. ์ด์ ๊ทธ๊ฒ์ด ๋ฌด์์ธ์ง ์ค๋ช ํ๊ฒ ์ต๋๋ค. ์ด๋ ๋ ๊ฐ์ ์๊ฐ ์๊ด ๊ทธ๋ํ์ ๋๋ค. ์ฒซ ๋ฒ์งธ ๊ทธ๋ํ๋ ๋์คํฌ ํ์ฉ๋์ ๋๋ค. ํ์ฌ ์์ ์์๋ ๊ฑฐ์ 90%์ ๋๋ฌํฉ๋๋ค. RAID ์ปจํธ๋กค๋ฌ ์ฌ์ฉ๋ฅ ์ด 90%์ด๊ณ ๋ฌผ๋ฆฌ์ ๋์คํฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฅ๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ ๋์ ์์์ ๋๋ค. ์ฆ, ์กฐ๊ธ ๋ ์ง๋๋ฉด 100์ ๋๋ฌํ๊ณ I/O๊ฐ ์ค์ง๋ฉ๋๋ค.
๋์คํฌ ์ด๋ ์ด๊ฐ ์๋ค๋ฉด ์ด์ผ๊ธฐ๋ ์ฝ๊ฐ ๋ค๋ฆ ๋๋ค. ๊ตฌ์ฑ ๋ฐฉ๋ฒ, ๋ฐฐ์ด ์ข ๋ฅ ๋ฑ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
๋์์ ๋ด๋ถ postgres ๋ณด๊ธฐ์ ๊ทธ๋ํ๊ฐ ์ฌ๊ธฐ์ ๊ตฌ์ฑ๋์ด ์ฒดํฌํฌ์ธํธ๊ฐ ์ด๋ป๊ฒ ๋ฐ์ํ๋์ง ์๋ ค์ค๋๋ค. ์ฌ๊ธฐ์ ๋ น์์ ํด๋น ์๊ฐ ๋๊ธฐํ๋ฅผ ์ํด ์ด ์ฒดํฌํฌ์ธํธ์ ๋์ฐฉํ ๋ฒํผ, ์ฆ ๋ํฐ ํ์ด์ง์ ์๋ฅผ ๋ํ๋ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ์ฌ๊ธฐ์ ์์์ผ ํ ์ฃผ์ ์ฌํญ์ ๋๋ค. ์ฌ๊ธฐ์ ๋ง์ ํ์ด์ง๊ฐ ์๋ค๋ ๊ฒ์ ์ ์ ์์ผ๋ฉฐ ์ด๋ ์์ ์์ ์ฐ๋ฆฌ๋ ๋ณด๋๋ฅผ ์ณค์ต๋๋ค. ์ฆ, ์ฐ๊ณ ์ผ์ต๋๋ค. ์ฌ๊ธฐ์ ๋์คํฌ ์์คํ ์ ๋ถ๋ช ํ ๋งค์ฐ ๋ฐ์ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ์ ์ฒดํฌํฌ์ธํธ๋ ๋์คํฌ์ ๋งค์ฐ ๊ฐํ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ด์์ ์ผ๋ก ์ํฉ์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค. ์ฆ, ์ฌ๊ธฐ์๋ ๋ น์ ํ์๊ฐ ์ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ณ์ํด์ ์ด๋ฐ ์ํ๊ฐ ๋๋๋ก ์ค์ ์ผ๋ก ์์ ํ๋ฉด ๋ฉ๋๋ค. ์ฆ, ์ฌํ์ฉ ๊ท๋ชจ๋ ์์ง๋ง ์ด๋๊ฐ์ ์ฌ๊ธฐ์ ๋ฌด์ธ๊ฐ๋ฅผ ์ฐ๊ณ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ๊ทน๋ณตํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ IO๋ฅผ ์ค์งํ ๊ฒฝ์ฐ ์ด๋ ์์ฒญ์ ์ดํํ๊ธฐ ์ํด ์จ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ๋๊ธฐํ๋ค๋ ์๋ฏธ์ ๋๋ค.
Linux์ ๊ด์ ์์ ๋ณด๋ฉด ์ข์ ํ๋์จ์ด๋ฅผ ์ ํํ๊ณ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑํ๊ณ PostgreSQL์ ์ ์์ ์ผ๋ก ๊ตฌ์ฑํ์ฌ ์ด๋ฌํ ์ฒดํฌํฌ์ธํธ๋ฅผ ๋ ๋น๋ฒํ๊ฒ ๋ง๋ค๊ณ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์๋ก ๊ฐ์ ๋ถ์ฐ์ํจ ๋ค์ ๊ธฐ๋ณธ Debian ๋งค๊ฐ๋ณ์๋ก ๋ค์ด๊ฐ๋๋ค. ๋๋ถ๋ถ์ Linux ๋ฐฐํฌํ์ ๊ฒฝ์ฐ vm.dirty_ratio=20, vm.dirty_Background_ratio=10๊ณผ ๊ฐ์ต๋๋ค.
๋ฌด์จ ๋ป์ด์์? ์ปค๋ 2.6๋ถํฐ ํ๋์ ํ๋ฌ์ฑ ๋ฐ๋ชฌ์ด ๋ํ๋ฌ์ต๋๋ค. Pdglush๋ ๋๊ฐ ๋ฌด์์ ์ฌ์ฉํ๋์ง์ ๋ฐ๋ผ ์ปค๋ ๋ฒํผ์์ ๋ํฐ ํ์ด์ง๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ํ๊ธฐํ๊ณ ๋ฌด์จ ์ผ์ด ์์ด๋ ๋ํฐ ํ์ด์ง๋ฅผ ํ๊ธฐํด์ผ ํ ๋ ํ๊ธฐํ๋ ๋ฐ ๊ด์ฌํ๋ฉฐ, ๋ฐฑ๊ทธ๋ฃจ์ธ๋ ํ๊ธฐ๋ ๋์์ด ๋์ง ์์ต๋๋ค.
๋ฐฐ๊ฒฝ์ ์ธ์ ์ค๋์? ์๋ฒ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ด RAM์ 10%๊ฐ ์ปค๋ ๋ฒํผ์ ๋ํฐ ํ์ด์ง์ ์ํด ์ ์ ๋๋ฉด ํน์ ์ฐ๊ธฐ ํด์ ๊ธฐ๋ฅ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ํธ์ถ๋ฉ๋๋ค. ์ ๋ฐฐ๊ฒฝ์ธ๊ฐ์? ๋งค๊ฐ๋ณ์๋ก ์ธ ํ์ด์ง ์๋ฅผ ๊ณ ๋ คํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฐ N ํ์ด์ง๋ฅผ ์ผ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ ๋์ ์ด๊ฒ์ ์ ๋ค์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ ๊ทธ๋ ๋ ๋ค์ ์์ ๋ช ํ์ด์ง๋ฅผ ๋ ๋ณต์ฌํ์ต๋๋ค.
์ด๊ฒ์ ์ง๊ทนํ ๋จ์ํ ์ด์ผ๊ธฐ์ด๋ค. ์ฌ๊ธฐ์ ๋ฌธ์ ๋ ์์์ฅ๊ณผ ๊ฐ์ต๋๋ค. ํ ํ์ดํ์ ๋ฌผ์ด ๋ค์ด๊ฐ๋ฉด ๋ค๋ฅธ ํ์ดํ๋ก ํ๋ฌ๊ฐ๋๋ค. ์ฒดํฌํฌ์ธํธ๊ฐ ๋์ฐฉํ๊ณ ํ๊ธฐํ๊ธฐ ์ํด ๋ช ๊ฐ์ ๋ํฐ ํ์ด์ง๋ฅผ ๋ณด๋๋ค๋ฉด ์ ์ฐจ์ ์ผ๋ก ๋ชจ๋ ๊ฒ์ด ์ปค๋ ๋ฒํผ pgflush์์ ๊น๋ํ๊ฒ ํด๊ฒฐ๋ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ๋ํฐ ํ์ด์ง๊ฐ ๊ณ์ํด์ ๋์ ๋๋ฉด ์ต๋ 20%๊น์ง ๋์ ๋๋ฉฐ, ๊ทธ ์ดํ OS ์ฐ์ ์์๋ ๋ชจ๋ ๊ฒ์ ๋์คํฌ์ ๊ธฐ๋กํ๋ ๊ฒ์ ๋๋ค. ์ ์์ด ๊บผ์ง๊ณ ๋ชจ๋ ๊ฒ์ด ์ฐ๋ฆฌ์๊ฒ ์ข์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ด ๋ฐ์ดํฐ๋ ์์ค๋ฉ๋๋ค.
๋น๊ฒฐ์ ๋ฌด์์ ๋๊น? ๋น๊ฒฐ์ ํ๋ ์ธ๊ณ์์ ์ด๋ฌํ ๋งค๊ฐ๋ณ์๊ฐ ์์คํ ์ ์๋ ์ ์ฒด RAM์ 20~10%์ด๋ฉฐ, ๋ณด์ ํ ๋์คํฌ ์์คํ ์ ์ฒ๋ฆฌ๋ ์ธก๋ฉด์์ ์ ๋์ ์ผ๋ก ์์ฒญ๋ ์์ค์ด๋ผ๋ ๊ฒ์ ๋๋ค.
128GB์ RAM์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด์ธ์. 12,8GB๊ฐ ๋์คํฌ ์์คํ ์ ๋์ฐฉํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฑฐ๊ธฐ์ ์ด๋ค ์บ์๊ฐ ์๋ , ์ด๋ค ์ด๋ ์ด๊ฐ ์๋ ์๊ด์์ด ์ค๋ ์ง์๋์ง๋ ์์ต๋๋ค.
๋ฐ๋ผ์ RAID ์ปจํธ๋กค๋ฌ์ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ์ด๋ฌํ ์์น๋ฅผ ์ฆ์ ์กฐ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ ๋ ์ฌ๊ธฐ์ ์ฆ์ 512MB์ ์บ์๊ฐ ์๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์ถ์ฒํ์ต๋๋ค.
๋ชจ๋ ๊ฒ์ด ๋งค์ฐ ๊ฐ๋จํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. vm.dirty_Background๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ๋ฃ์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ์ค์ ์ ์ด์ ๋ ๊ฐ์ง๋ฅผ ์ทจ์ํฉ๋๋ค. ๋น์จ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์ ๋์ด ์๊ฑฐ๋ ๋ฐ์ดํธ๊ฐ ์๋ ๋น์จ์ด ํ์ฑํ๋๋ฉด ๋ฐ์ดํธ๊ฐ ์๋ ๋น์จ์ด ์๋ํฉ๋๋ค. ํ์ง๋ง ์ ๋ DBA ์ปจ์คํดํธ์ด๊ณ ๋ค์ํ ํด๋ผ์ด์ธํธ์ ์์ ํ๊ธฐ ๋๋ฌธ์ ์ง์ ๊ทธ๋ฆฌ๋ ค๊ณ ๋ ธ๋ ฅํ๋ฏ๋ก ๋ฐ์ดํธ ๋จ์๋ผ๋ฉด ๋ฐ์ดํธ ๋จ์์ ๋๋ค. ์ข์ ๊ด๋ฆฌ์๊ฐ ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ถ๊ฐํ์ง ์๊ณ ์ฌ๋ถํ ํด๋ ์์น๊ฐ ๊ทธ๋๋ก ์ ์ง๋๋ค๋ ๋ณด์ฅ์ ์๋ฌด๋ ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ๋ณด์ฅ๋๋๋ก ์ด ์ซ์๋ฅผ ๊ณ์ฐํด ๋ณด์ธ์.
์ ์ํ์ง ๋ชปํ๋ฉด ์ด๋ป๊ฒ ๋๋์? ๋๋ ๋ชจ๋ ํ๋ฌ์ฑ์ด ํจ๊ณผ์ ์ผ๋ก ์ค๋จ๋๋ค๊ณ ์ผ์ง๋ง ์ค์ ๋ก ์ด๊ฒ์ ๋น์ ์ ์ธ ํํ์ ๋๋ค. ์ด์ ์ฒด์ ์๋ ํฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ํฐ ํ์ด์ง๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ๊ฐ ์์ฑํ๋ IO๊ฐ ํจ๊ณผ์ ์ผ๋ก ์ค์ง๋ฉ๋๋ค. ์ฆ, ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ SQL ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ด๋ ค๊ณ ์๋๋ฐ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ฒดํฌํฌ์ธํธ์ ์ํด ์ ์ ๋๋ฏ๋ก ์ด์ ๋ํ ๋ชจ๋ ์ ๋ ฅ/์ถ๋ ฅ์ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋ฎ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๊ฐ ์ธ์ ๋๋ผ์ง๋ ์์ ํ ๋ถ๋ถ๋ช ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋น๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ฌ์๋ฅผ ๋ฌ์ฑํ๋ค๋ฉด ์ด๋ ๋ชจ๋ IO๊ฐ ํด๋น ํ๋ฌ์์ ์ํด ์ ์ ๋์์์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ๋๊น์ง ๋น์ ์ ์๋ฌด๊ฒ๋ ํ์ง ์์ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์๋ ์ด ๋ณด๊ณ ์์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๋ ๊ฐ์ง ์ค์ํ ์ฌํญ์ด ๋ ์์ต๋๋ค. ์ด๋ฌํ ์ค์ ์ postgresql.conf์ ์ค์ , ์ฆ ์ฒดํฌํฌ์ธํธ ์ค์ ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์คํฌ ์์คํ ์ด ์ ์ ํ๊ฒ ๊ตฌ์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค. RAID์ ์บ์๊ฐ ์๋ ๊ฒฝ์ฐ ๋ฐฐํฐ๋ฆฌ๊ฐ ์์ด์ผ ํฉ๋๋ค. ์ฌ๋๋ค์ ๋ฐฐํฐ๋ฆฌ ์์ด ์ข์ ์บ์๋ฅผ ๊ฐ์ถ RAID๋ฅผ ๊ตฌ๋งคํฉ๋๋ค. RAID์ SSD๊ฐ ์๋ ๊ฒฝ์ฐ ์๋ฒ SSD์ฌ์ผ ํ๋ฉฐ ๊ฑฐ๊ธฐ์ ์ปคํจ์ํฐ๊ฐ ์์ด์ผ ํฉ๋๋ค. ์์ธํ ์ฒดํฌ๋ฆฌ์คํธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ด ๋งํฌ์๋ PostgreSQL์์ ์ฑ๋ฅ ๋์คํฌ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ณด๊ณ ์๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๊ฑฐ๊ธฐ์๋ ๋ชจ๋ ์ฒดํฌ๋ฆฌ์คํธ๊ฐ ์์ต๋๋ค.
๋ ๋ฌด์์ด ์ธ์์ ๋งค์ฐ ์ด๋ ต๊ฒ ๋ง๋ค ์ ์์ต๋๊น? ์ด๋ ๋ ๊ฐ์ง ๋งค๊ฐ๋ณ์์ ๋๋ค. ๊ทธ๊ฒ๋ค์ ๋น๊ต์ ์๋ก์ด ๊ฒ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌํจ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ชป ์ผ๋ฉด ์ํ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๋ ค์์ง ์ ์์ต๋๋ค.
๋น๊ต์ ์๋ก์ด ๊ฒ์ด ๋ ๊ฐ์ง ์์ต๋๋ค. ๊ทธ๋ค์ ์ด๋ฏธ ์ธ ๋ฒ์งธ ์ฝ์ด์ ๋ํ๋ฌ์ต๋๋ค. ์ด๋ ๋๋ ธ์ด ๋จ์์ sched_migration_cost ๋ฐ sched_autogroup_enabled(๊ธฐ๋ณธ๊ฐ)์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ ๋น์ ์ ์ธ์์ ์ด๋ป๊ฒ ๋ง์น๋์? sched_migration_cost๋ ๋ฌด์์ ๋๊น? Linux์์ ์ค์ผ์ค๋ฌ๋ ํ CPU์์ ๋ค๋ฅธ CPU๋ก ํ๋ก์ธ์ค๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ PostgreSQL์ ๊ฒฝ์ฐ ๋ค๋ฅธ CPU๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ด ์์ ํ ๋ถ๋ถ๋ช ํฉ๋๋ค. ์ด์์ฒด์ ์ ์ฅ์์๋ ์คํ์คํผ์ค์ ํฐ๋ฏธ๋ ์ฌ์ด์์ ์ฐฝ์ ์ ํํ ๋ ์ด๊ฒ์ด ์ข์ ์๋ ์์ง๋ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒฝ์ฐ ์ด๊ฒ์ ๋งค์ฐ ๋์ฉ๋๋ค. ๋ฐ๋ผ์ ํฉ๋ฆฌ์ ์ธ ์ ์ฑ ์ migration_cost๋ฅผ ์ต์ํ ์์ฒ ๋๋ ธ์ด ์ด์์ ํฐ ๊ฐ์ผ๋ก ์ค์ ํ๋ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ ์ค์ผ์ค๋ฌ์๊ฒ ๋ฌด์์ ์๋ฏธํฉ๋๊น? ์ด ์๊ฐ ๋์ ํ๋ก์ธ์ค๋ ์ฌ์ ํ ๋จ๊ฒ๋ค๊ณ ๊ฐ์ฃผ๋ฉ๋๋ค. ์ฆ, ์ค๋ซ๋์ ์ด๋ค ์์ ์ ์ํํด ์จ ์ฅ๊ธฐ ์คํ ํธ๋์ญ์ ์ด ์๋ ๊ฒฝ์ฐ ์ค์ผ์ค๋ฌ๋ ์ด๋ฅผ ์ดํดํฉ๋๋ค. ๊ทธ๋ ์ด ์ ํ ์๊ฐ์ด ๊ฒฝ๊ณผํ ๋๊น์ง ์ด ํ๋ก์ธ์ค๋ฅผ ์ด๋๋ก๋ ๋ง์ด๊ทธ๋ ์ด์ ํ ํ์๊ฐ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๋์์ ํ๋ก์ธ์ค๊ฐ ์ด๋ค ์์ ์ ์ํํ๋ฉด ๋ค๋ฅธ ๊ณณ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ๋์ง ์๊ณ ํ ๋น๋ CPU์์ ์กฐ์ฉํ ์๋ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ ํ๋ฅญํฉ๋๋ค.
๋ ๋ฒ์งธ ์์ ์ ์๋ ๊ทธ๋ฃน์ ๋๋ค. ์ต์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๋ จ๋์ง ์์ ํน์ ์์ ๋ถํ์ ๋ํ ์ข์ ์์ด๋์ด๊ฐ ์์ต๋๋ค. ์ด๋ ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ ๊ฐ์ ํฐ๋ฏธ๋์ ๊ธฐ์ค์ผ๋ก ํ๋ก์ธ์ค๋ฅผ ๊ทธ๋ฃนํํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ์ผ๋ถ ์์ ์ ํธ๋ฆฌํฉ๋๋ค. ์ค์ ๋ก PostgreSQL์ ๋จ์ผ ํฐ๋ฏธ๋์์ ์คํ๋๋ ํ๋ฆฌํฌํฌ๋ฅผ ๊ฐ์ถ ๋ค์ค ํ๋ก์ธ์ค ์์คํ ์ ๋๋ค. ์ ๊ธ ์์ฑ์, ์ฒดํฌํฌ์ธํธ๊ฐ ์์ผ๋ฉฐ ๋ชจ๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ CPU๋น ํ๋์ ์ค์ผ์ค๋ฌ๋ก ๊ทธ๋ฃนํ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ ์๋ก ๊ฐ์ญํ๊ณ ๊ทธ๋ฅผ ๋ ์ค๋ ์ ์ ํ๊ธฐ ์ํด ๊ทธ๊ฐ ์์ ๋ก์์ง๊ธฐ๋ฅผ ํ๋ง์์ผ๋ก ๊ธฐ๋ค๋ฆด ๊ฒ์ ๋๋ค. ์ด๋ฐ ๋ถํ์ ๊ฒฝ์ฐ ์ ํ ๋ถํ์ํ ์ด์ผ๊ธฐ์ด๋ฏ๋ก ๊บผ์ผํฉ๋๋ค.
๋ด ๋๋ฃ Alexey Lesovsky๋ ๊ฐ๋จํ pgbench๋ก ํ ์คํธ๋ฅผ ์ํํ๋๋ฐ, ์ฌ๊ธฐ์ ๊ทธ๋ migration_cost๋ฅผ ๋ช ๋ฐฐ๋ ๋๋ฆฌ๊ณ ์๋ ๊ทธ๋ฃน์ ๊ป์ต๋๋ค. ๋ถ๋ ํ๋์จ์ด์ ์ฐจ์ด๋ ๊ฑฐ์ 10%์์ต๋๋ค.. ์ฌ๋๋ค์ด ์ฟผ๋ฆฌ ์๋์ ๋ํด ์ ์ฌํ ๋ณ๊ฒฝ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ๋ postgres ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์ ๋ํ ํ ๋ก ์ด ์์ต๋๋ค. 50% ์ํฅ์ ๋ฐ์. ๊ทธ๋ฐ ์ด์ผ๊ธฐ๊ฐ ๊ฝค ๋ง์ด ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ ์ ์ ์ฑ ์ ๋ํด ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ข์ ์ ์ ์ด์ ๋ ธํธ๋ถ์์๋ Linux๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ง๋ ๋ฐฐํฐ๋ฆฌ๋ฅผ ์ ์๋ชจํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐ์๊ธฐ ์ด๋ฐ ์ผ์ด ์๋ฒ์์๋ ์ผ์ด๋ ์ ์๋ค๋ ๊ฒ์ด ๋ฐํ์ก์ต๋๋ค.
๋ํ ์ผ๋ถ ํธ์คํฐ๋ก๋ถํฐ ์๋ฒ๋ฅผ ์๋ํ๋ ๊ฒฝ์ฐ "์ข์" ํธ์คํฐ๋ ๊ทํ์ ์ฑ๋ฅ์ด ๋ ๋์์ง ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. ๊ทธ๋ค์ ์๋ฌด๋ ์ฒ ๋ถ์ ์ต๋ํ ํจ์จ์ ์ผ๋ก ํ์ฉํ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด์ ์ฒด์ ์์ ๋ฉํฑ ์ ์ ๋ชจ๋๋ฅผ ํ์ฑํํ ์ ์์ต๋๋ค.
๋ก๋๊ฐ ๋ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ์๋ฒ์์ ์ด ํญ๋ชฉ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ acpi_cpufreq + ์ฑ๋ฅ์ ์ ํํฉ๋๋ค. ์จ๋๋งจ๋์๋ ๋ฌธ์ ๊ฐ ์์ ์ ์์ต๋๋ค.
Intel_pstate๋ ์ฝ๊ฐ ๋ค๋ฅธ ๋๋ผ์ด๋ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ ๋ ์ด๊ฒ์ด ๋ ๋์ค์ด๊ณ ๋ ์ ์๋ํ๊ธฐ ๋๋ฌธ์ ์ ํธ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์ฃผ์ง์ฌ๋ ๋จ์ง ์ฑ๊ณผ์ผ ๋ฟ์ ๋๋ค. ์จ๋๋งจ๋, ์ ์ ๋ฐ ๊ธฐํ ๋ชจ๋ ๊ฒ์ ๊ทํ์ ๊ดํ ๊ฒ์ด ์๋๋๋ค.
PostgreSQL ๋ถ์ ๊ฒฐ๊ณผ๋ ์ ์ ๊ธฐ๋ฅ์ ํ์ฑํํ ๊ฒฝ์ฐ ๋ช ๋ฐฐ๋ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ์ค์ ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋์ CPU๋ ์์ ํ ์์ธกํ ์ ์๋ ๋ฐฉ์์ผ๋ก ์คํ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๋ฌํ ํญ๋ชฉ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํจ๋ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์๋์ง ์ฃผ์ ๊น๊ฒ ์ดํด๋ณด์ธ์. ์ด๊ฒ์ ์ ๋ง ํฐ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก, ๋งค์ผ ์ด ๋ฌธ์ ์ ์์ฅ์๊ณ ์๋ PosgreSQL-์ปจ์คํ DBA ํ์ Max Boguk ๋ฐ Alexey Lesovsky ํ์๋ค์๊ฒ ๊ฐ์ฌ ์ธ์ฌ๋ฅผ ์ ํ๊ณ ์ถ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ณ ๊ฐ์ ์ํด ์ต์ ์ ๋คํ์ฌ ๋ชจ๋ ๊ฒ์ด ๊ณ ๊ฐ์๊ฒ ๋์์ด ๋๋๋ก ๋ ธ๋ ฅํฉ๋๋ค. ํญ๊ณต ์์ ์ง์นจ๊ณผ ๊ฐ์ต๋๋ค. ์ฌ๊ธฐ์ ๋ชจ๋ ๊ฒ์ ํผ๋ก ์ฐ์ฌ ์์ต๋๋ค. ์ด ๊ฒฌ๊ณผ๋ฅ ๊ฐ๊ฐ์ ์ผ์ข ์ ๋ฌธ์ ๊ณผ์ ์์ ๋ฐ๊ฒฌ๋ฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๋น์ ๊ณผ ๊ณต์ ํ๊ฒ ๋์ด ๊ธฐ์๊ฒ ์๊ฐํฉ๋๋ค.
์ง๋ฌธ :
๊ฐ์ฌํฉ๋๋ค! ์๋ฅผ ๋ค์ด, ํ์ฌ๊ฐ ๋น์ฉ์ ์ ๊ฐํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ํ๋์ ์๋ฒ์ ๋ฐฐ์นํ๋ ค๋ ๊ฒฝ์ฐ ๋๋ ํ์ฌ๊ฐ PostgreSQL์ด ์ปจํ ์ด๋์์ ์คํ๋๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์ ์ ํ ์ถ์ธ๋ฅผ ๋ฐ๋ฅด๋ ๊ฒฝ์ฐ์ ๋๋ค. ๋น๊ฒฐ์ ๋ฌด์์ ๋๊น? Sysctl์ ์ ์ฒด ์ปค๋์ ์ ์ญ์ ์ผ๋ก ์ํฅ์ ๋ฏธ์นฉ๋๋ค. sysctls๊ฐ ์ด๋ป๊ฒ๋ ๊ฐ์ํ๋์ด ์ปจํ ์ด๋์์ ๋ณ๋๋ก ์๋ํ๋ค๋ ์ด์ผ๊ธฐ๋ฅผ ๋ค์ด๋ณธ ์ ์ด ์์ต๋๋ค. cgroup๋ง ์๊ณ ์ปจํธ๋กค์ ์ผ๋ถ๋ง ์์ต๋๋ค. ์ด๊ฑธ ๊ฐ์ง๊ณ ์ด๋ป๊ฒ ์ด ์ ์๋์? ์๋๋ฉด ์ฑ๋ฅ์ ์ํ๋ค๋ฉด ๋ณ๋์ ํ๋์จ์ด ์๋ฒ์์ PostgreSQL์ ์คํํ๊ณ ์กฐ์ ํ์๊ฒ ์ต๋๊น?
๊ทํ์ ์ง๋ฌธ์ ๋ํด ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ต๋ณํ์ต๋๋ค. ์กฐ์ ๋ฑ์ด ๊ฐ๋ฅํ ํ๋์จ์ด ์๋ฒ์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒ์ด ์๋๋ผ๋ฉด ์์ฌํ์ธ์. ์ด๋ฌํ ์ค์ ์์ด๋ ๋ชจ๋ ๊ฒ์ด ์ ์๋ํ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ์ค์ ์ด ํ์ํ ๋ถํ๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์ค์ ๋ณด๋ค ๋จผ์ ์์ด์ธ ์๋ฒ์ ์ ์ํ๊ฒ ๋ฉ๋๋ค.
๋ฌธ์ ๋ ๋ฌด์์ ๋๊น? ์ด๊ฒ์ด ๊ฐ์ ๋จธ์ ์ธ ๊ฒฝ์ฐ, ์๋ฅผ ๋ค์ด ๋๋ถ๋ถ์ ๊ฐ์ ๋จธ์ ์์ ๋์คํฌ์ ๋๊ธฐ ์๊ฐ์ด ๋งค์ฐ ์ผ๊ด๋์ง ์๋๋ค๋ ์ฌ์ค๊ณผ ๊ฐ์ ๋ง์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ๋์คํฌ ์ฒ๋ฆฌ๋์ด ์ํธํ๋๋ผ๋ ์ฒดํฌํฌ์ธํธ ์์ ์ด๋ WAL์ ์ธ ๋ ๋ฐ์ํ ํ๊ท ์ฒ๋ฆฌ๋์ ํฐ ์ํฅ์ ๋ฏธ์น์ง ์๋ I/O ํธ๋์ญ์ ํ๋๊ฐ ์คํจํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ด๋ก ์ธํด ํฐ ์ด๋ ค์์ ๊ฒช๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ ์ด๋ฅผ ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
๋์ผํ ์๋ฒ์ NGINX๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ทธ๋ ๊ณต์ ๊ธฐ์ต์ ์ํด ์ธ์ธ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ์ค๋ช ๋ ๋ฌธ์ ๋ ํด๊ฒฐ๋์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ฐ๋ฉด์ ์ด๋ฌํ ๋งค๊ฐ๋ณ์ ์ค ์ผ๋ถ๋ ์ฌ์ ํ ๊ทํ์ ๊ด๋ จ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋๋ฌด ์ด์ํ์ง ์๋๋ก sysctl๋ก dirty_ratio๋ฅผ ์ค์ ํ์ญ์์ค. ์ด์จ๋ ์ด๊ฒ์ด ๋์์ด ๋ ๊ฒ์ ๋๋ค. ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ๋์คํฌ์ ์ํธ ์์ฉํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์๋ชป๋ ํจํด์ ๋ฐ๋ฅด๊ฒ ๋ ๊ฒ์ ๋๋ค. ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์ ๊ฐ ๋ณด์ฌ๋๋ฆฐ ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์จ๋ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ทธ๋ฌ๋ NUMA์ ๋ฌธ์ ๊ฐ ์์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด VmWare๋ ์ ๋ฐ๋์ ์ค์ ์ผ๋ก NUMA์ ์ ์๋ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ์ฒ ์ ์๋ฒ ๋๋ ๋น์ฒ ์ ์๋ฒ๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
Amazon AWS ๊ด๋ จ ์ง๋ฌธ์ด ์์ต๋๋ค. ์ฌ์ ๊ตฌ์ฑ๋ ์ด๋ฏธ์ง๊ฐ ์์ต๋๋ค. ๊ทธ ์ค ํ๋๊ฐ Amazon RDS์ ๋๋ค. ์ด์ ์ฒด์ ์ ๋ํ ์ฌ์ฉ์ ์ ์ ์ค์ ์ด ์์ต๋๊น?
๊ฑฐ๊ธฐ์ ์ค์ ์ด ์์ง๋ง ๋ค๋ฅธ ์ค์ ์ ๋๋ค. ์ฌ๊ธฐ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋ฐ๋ผ ์ด์ ์ฒด์ ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฑํ๊ณผ ๊ฐ์ด ์ง๊ธ ์ด๋๋ก ๊ฐ์ผํ ์ง ๊ฒฐ์ ํ๋ ๋งค๊ฐ ๋ณ์๊ฐ ์์ต๋๋ค. ์ฆ, ์์์ด ๋๋ฌด ๋ง์ด ํ์ํด์ ์ด์ ๋ค ๋จน์ด์น์ธ ๊ฒ์ ๋๋ค. ๊ทธ ํ์๋ Amazon RDS๊ฐ ์ด๋ฌํ ๋ฆฌ์์ค๋ฅผ ๊ฐํํ๊ณ ์ฑ๋ฅ์ด ์ ํ๋ฉ๋๋ค. ์ฌ๋๋ค์ด ์ด๋ป๊ฒ ์ด ๋ฌธ์ ๋ฅผ ์ด์ง๋ฝํ๊ธฐ ์์ํ๋์ง์ ๋ํ ๊ฐ์ธ์ ์ธ ์ด์ผ๊ธฐ๊ฐ ์์ต๋๋ค. ๋๋ก๋ ์์ฃผ ์ฑ๊ณต์ ์ด๊ธฐ๋ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ OS ์ค์ ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. ํด๋ผ์ฐ๋๋ฅผ ํดํนํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ๊ทธ๊ฒ์ ๋ค๋ฅธ ์ด์ผ๊ธฐ์ ๋๋ค.
ํฌ๋ช ๊ฑฐ๋ ํ์ด์ง๊ฐ ๊ฑฐ๋ TLB์ ๋นํด ํจ๊ณผ๊ฐ ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ฃผ์ง ๋ง. ์ด๊ฒ์ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ค๋ช ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก ๊ทธ๋ค์ ๊ทธ๊ฒ์ ์ฃผ์ง ์์ต๋๋ค. PostgreSQL์ ์ญ์ฌ๋ ๋ฌด์์ ๋๊น? ์์ ์ ๋ง์ ์์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํฉ๋๋ค. ํฌ๋ช ์ฌ๋ถ๋ ์ ํ ๊ด๋ จ์ด ์์ต๋๋ค. ๊ทธ๋ค์ด ์ฒ์๋ถํฐ ๋์ ๋๋ ์ฌ์ค์ด ๋ชจ๋ ๊ฒ์ ์ค๋ช ํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ง๊ณ shared_memory ์ธ๊ทธ๋จผํธ๋ฅผ ๋ค์ ๋น๋ํด์ผ ํ๋ ๊ฒฝ์ฐ ํฌ๋ช ๊ฑฐ๋ ํ์ด์ง๊ฐ ์ ํฉํฉ๋๋ค. PostgreSQL์์๋ ์ฒ์์ ํฐ ๋ฉ์ด๋ฆฌ๋ก ํ ๋น๋๊ธฐ๋ง ํ๋ฉด ๋๊ณ , ๊ทธ ๋ค์์๋ ํน๋ณํ ์ผ์ด ๋ฐ์ํ์ง ์์ต๋๋ค. ๋ฌผ๋ก ์ฌ์ฉํ ์ ์์ง๋ง ๋ฌด์ธ๊ฐ๋ฅผ ๋ค์ ํ ๋นํ ๋ shared_memory๊ฐ ์์๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. PostgreSQL์ ์ด์ ๋ํด ์์ง ๋ชปํฉ๋๋ค.
์ถ์ฒ : habr.com