PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

Ilya Kosmodemyansky์˜ 2015๋…„ ๋ณด๊ณ ์„œ ๋…น์ทจ๋ก "PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ํŠœ๋‹"

๋ฉด์ฑ… ์กฐํ•ญ: ์ด ๋ณด๊ณ ์„œ์˜ ๋‚ ์งœ๋Š” 2015๋…„ 4์›”์ž…๋‹ˆ๋‹ค. 9.4๋…„ ์ด์ƒ์ด ํ˜๋ €๊ณ  ๋งŽ์€ ์‹œ๊ฐ„์ด ํ˜๋ €์Šต๋‹ˆ๋‹ค. ๋ณด๊ณ ์„œ์—์„œ ๋…ผ์˜๋œ ๋ฒ„์ „ 4๋Š” ๋” ์ด์ƒ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ 5๋…„ ๋™์•ˆ 15๊ฐœ์˜ ์ƒˆ๋กœ์šด PostgreSQL ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ถœ์‹œ๋˜์—ˆ๊ณ  XNUMX๊ฐœ์˜ Linux ์ปค๋„ ๋ฒ„์ „์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ตฌ์ ˆ์„ ๋‹ค์‹œ ์“ฐ๋ฉด ๊ฒฐ๊ตญ ๋‹ค๋ฅธ ๋ณด๊ณ ์„œ๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์„œ๋Š” ์˜ค๋Š˜๋‚ ์—๋„ ์—ฌ์ „ํžˆ ๊ด€๋ จ์ด ์žˆ๋Š” PostgreSQL์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ 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์€ ๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค ์‹œ์Šคํ…œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋‘ ์ด์™€ ๊ด€๋ จ๋˜์–ด ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋ณ„๋„์˜ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹ค๋“ค ์†”๋ผ๋ฆฌ์Šค ๊ฐ™์€ ์™ธ๋ž˜์ข…์—๋Š” ๊ด€์‹ฌ์ด ๋œํ•œ ๊ฒƒ ๊ฐ™์•„์„œ ๊ฐ€๋ณด์ฃ .

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

์ตœ์‹  Linux ๋ฐฐํฌํŒ์—๋Š” ์ปค๋„ ๋นŒ๋“œ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ 1๊ฐœ๊ฐ€ ๋„˜๋Š” syctl ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์—, ๋‹ค๋ฅธ ๊ฒฌ๊ณผ๋ฅ˜๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์šดํŠธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์งˆ๋ฌธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ: BIOS์—์„œ ํ™œ์„ฑํ™”ํ•  ํ•ญ๋ชฉ, ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ ๋ฐฉ๋ฒ• ๋“ฑ

์ด๊ฒƒ์€ ํ•˜๋‚˜์˜ ์งง์€ ๋ณด๊ณ ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฉฐ์น ์— ๊ฑธ์ณ ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ํฐ ๋ณผ๋ฅจ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ๋Š” ์ค‘์š”ํ•œ ์‚ฌํ•ญ, ์ฆ‰ Linux์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ๋ ˆ์ดํฌ๋ฅผ ํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•์— ์ค‘์ ์„ ๋‘˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ˆ˜์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ๋ฆฌ๊ณ  ๋™์‹œ์— ์ค‘์š”ํ•œ ์ ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋งž๋Š” ์„ค์ •์— ๋งŽ์€ ๊ธฐ๋ณธ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ „ํ˜€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

Linux์—๋Š” ์–ด๋–ค ์ „ํ†ต์ ์ธ ํŠœ๋‹ ๋Œ€์ƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘ Linux ๊ด€๋ฆฌ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋Œ€์ƒ์ด ๋ฌด์—‡์ธ์ง€ ํŠน๋ณ„ํžˆ ์„ค๋ช…ํ•  ํ•„์š”๋Š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • CPU.
  • ๊ธฐ์–ต.
  • ์ €์žฅ.
  • ๋‹ค๋ฅธ. ์ด์— ๋Œ€ํ•ด์„œ๋Š” ๋งˆ์ง€๋ง‰์— ๊ฐ„์‹์œผ๋กœ ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์—๋„ˆ์ง€ ์ ˆ์•ฝ ์ •์ฑ…๊ณผ ๊ฐ™์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋„ ๋งค์šฐ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๊ณ  ๊ฐ€์žฅ ๊ธฐ๋ถ„ ์ข‹์€ ๋ฐฉ์‹์ด ์•„๋‹Œ ๋ฐฉ์‹์œผ๋กœ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

PostgreSQL๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ผ๋ฐ˜์ ์ธ ํŠน์ง•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋ฌธ์ œ๋Š” ๊ฐœ๋ณ„ ๋„ˆํŠธ๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ, ๊ทธ๋Ÿฌํ•œ ์žฅ์น˜๊ฐ€ ์žˆ์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ณต์žกํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ์ตœ๋Œ€ํ•œ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ธฐ๋ฅผ ์„ ํ˜ธํ•˜๋Š” ๋ชจ๋“  ๋ฆฌ์†Œ์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ OS ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ Oracle์˜ ํ˜„์žฌ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ์‚ดํŽด๋ณด๋ฉด ๋ชฝ๊ณจ ์šฐ์ฃผ ๋น„ํ–‰์‚ฌ์— ๋Œ€ํ•œ ๋†๋‹ด๊ณผ ๊ฐ™์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐœ์—๊ฒŒ ๋จน์ด๋ฅผ์ฃผ๊ณ  ์•„๋ฌด๊ฒƒ๋„ ๋งŒ์ง€์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž์ฒด๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

์›์น™์ ์œผ๋กœ ์ƒํ™ฉ์€ PostgreSQL๊ณผ ์–ด๋Š ์ •๋„ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ฐจ์ด์ ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์•„์ง ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ์ž์ฒด์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, Linux ์ˆ˜์ค€ ์–ด๋”˜๊ฐ€์—์„œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ์ง์ ‘ ์ •๋ ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ์•„์ด๋””์–ด๋Š” ๋ฉ”๋ชจ๋ฆฌ, CPU ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹จ์ผ ๋Œ€์ƒ์„ ์„ ํƒํ•˜๊ณ  ํŠœ๋‹์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ž‘์—… ๋ถ€ํ•˜๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๊ฐ€๋Šฅํ•œ ํ•œ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ํ–ฅ์ƒ์‹œ์ผœ ์ข‹์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋งŒ๋“  ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜๋„๋ก ๋…ธ๋ ฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋ฅผ ํฌํ•จํ•œ ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

์ด๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•œ ์‚ฌ์ง„์ด ์žˆ์Šต๋‹ˆ๋‹ค. Linux OS ๋ฒ„ํผ๊ฐ€ ์žˆ๊ณ , ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ๊ณ , PostgreSQL ๊ณต์œ  ๋ฒ„ํผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Oracle๊ณผ ๋‹ฌ๋ฆฌ PostgreSQL์€ ์ปค๋„ ๋ฒ„ํผ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ง์ ‘ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋””์Šคํฌ์˜ ํŽ˜์ด์ง€๊ฐ€ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์— ๋“ค์–ด๊ฐ€๋ ค๋ฉด ์ปค๋„ ๋ฒ„ํผ๋ฅผ ํ†ต๊ณผํ•˜๊ณ  ๋‹ค์‹œ ๋Œ์•„๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋˜‘๊ฐ™์€ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

๋””์Šคํฌ๋Š” ์ด ์‹œ์Šคํ…œ ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ด๊ฒƒ์„ ๋””์Šคํฌ๋กœ ๊ทธ๋ ธ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ RAID ์ปจํŠธ๋กค๋Ÿฌ ๋“ฑ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ์ž…์ถœ๋ ฅ์€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ์ด ๋ฌธ์ œ๋ฅผ ํ†ตํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

PostgreSQL์€ ํด๋ž˜์‹ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค. ์•ˆ์— ํŽ˜์ด์ง€๊ฐ€ ์žˆ์–ด์š”. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์€ ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ธ”๋ก์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์œผ๋ฉด ๊ทธ๋ƒฅ ์ฝ์€ ๋‹ค์Œ ์ ์ฐจ์ ์œผ๋กœ ์ด ์บ์‹œ์™€ ๊ณต์œ  ๋ฒ„ํผ์—์„œ ์‚ฌ๋ผ์ ธ ๋””์Šคํฌ์— ๋‹ค์‹œ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

์–ด๋”˜๊ฐ€์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ต์ฒดํ•˜๋ฉด ์ „์ฒด ํŽ˜์ด์ง€๊ฐ€ ๋”ํ‹ฐ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ํŒŒ๋ž€์ƒ‰์œผ๋กœ ํ‘œ์‹œํ–ˆ์–ด์š”. ๊ทธ๋ฆฌ๊ณ  ์ด๋Š” ์ด ํŽ˜์ด์ง€๊ฐ€ ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€์™€ ๋™๊ธฐํ™”๋˜์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์šฐ๋ฆฌ๊ฐ€ ๋”๋Ÿฌ์›Œ์กŒ์„ ๋•Œ WAL์— ํ•ญ๋ชฉ์„ ๋งŒ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ด๋Š ์ˆœ๊ฐ„, ์ฒดํฌํฌ์ธํŠธ๋ผ๋Š” ํ˜„์ƒ์ด ์ฐพ์•„์™”์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์ผ์ง€์— ๊ทธ๊ฐ€ ๋„์ฐฉํ–ˆ๋‹ค๋Š” ์ •๋ณด๊ฐ€ ๊ธฐ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ทธ ์ˆœ๊ฐ„ ๊ณต์œ  ๋ฒ„ํผ์— ์žˆ๋˜ ๋ชจ๋“  ๋”ํ‹ฐ ํŽ˜์ด์ง€๊ฐ€ ์ปค๋„ ๋ฒ„ํผ๋ฅผ ํ†ตํ•ด fsync๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํ† ๋ฆฌ์ง€ ๋””์Šคํฌ์™€ ๋™๊ธฐํ™”๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ „์••์ด ์†์‹ค๋˜๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘๊ฐ€ ์šฐ๋ฆฌ์—๊ฒŒ ๋งํ•œ ์˜๊ตฌ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ก ์— ์†ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฌผ๋ก  ์šฐ๋ฆฌ๊ฐ€ ๋…ธ๋ ฅํ•˜๊ณ  ์ข‹์•„ํ•˜๋Š” ๋ฐ์€ ๋ฏธ๋ž˜์ด์ง€๋งŒ ์ง€๊ธˆ์€ ์˜ํ•˜ 20๋…„ ์•ˆ์— ์‚ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด ๋ชจ๋“  ๊ฒƒ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ตœ๋Œ€ํ™”ํ•˜๋Š” ์ž‘์—…์€ ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ๋ฏธ์„ธ ์กฐ์ •ํ•˜์—ฌ ๋ชจ๋“  ๋‹จ๊ณ„๊ฐ€ ๋น ๋ฅด๊ฒŒ ์•ž๋’ค๋กœ ์ด๋™ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํŽ˜์ด์ง€ ์บ์‹œ์ž…๋‹ˆ๋‹ค. PostgreSQL์—์„œ๋Š” ์„ ํƒ ์ฟผ๋ฆฌ ๋“ฑ์„ ๋ณด๋ƒˆ๊ณ  ๋””์Šคํฌ์—์„œ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ฒฐ๊ตญ ๊ณต์œ  ๋ฒ„ํผ์— ๋“ค์–ด๊ฐ”์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๊ฒƒ์ด ๋” ์ž˜ ์ž‘๋™ํ•˜๋ ค๋ฉด ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ฒƒ์ด ์›ํ™œํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋ ค๋ฉด ๋ชจ๋“  ๋‹จ๊ณ„์—์„œ ์šด์˜ ์ฒด์ œ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ท ํ˜• ์žกํžŒ ํ•˜๋“œ์›จ์–ด๋ฅผ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค. ์™œ๋ƒํ•˜๋ฉด ์–ด๋–ค ๋ถ€๋ถ„์— ๋ถˆ๊ท ํ˜•์ด ์žˆ์œผ๋ฉด ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ ์ถฉ๋ถ„ํ•œ ์†๋„๋กœ ์„œ๋น„์Šค๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๊ฐ ์‚ฌํ•ญ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

์ด๋Ÿฌํ•œ ํŽ˜์ด์ง€๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ์•ž๋’ค๋กœ ์ด๋™ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ๋‹ฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ฒซ์งธ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์ž‘์—…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‘˜์งธ, ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋””์Šคํฌ๋กœ ํŽ˜์ด์ง€๊ฐ€ ์ด๋™ํ•˜๋Š” ์ „ํ™˜์ด ๋” ํšจ์œจ์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์…‹์งธ, ์ข‹์€ ๋””์Šคํฌ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„์— 512GB์˜ RAM์ด ์žˆ๊ณ  ๋ชจ๋“  RAM์ด ์บ์‹œ ์—†์ด SATA ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ์— ์ €์žฅ๋œ๋‹ค๋ฉด ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„๋Š” ๋‹จ์ˆœํ•œ ํ˜ธ๋ฐ•์ด ์•„๋‹ˆ๋ผ SATA ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ–์ถ˜ ํ˜ธ๋ฐ•์œผ๋กœ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ง์ ‘์ ์œผ๋กœ ๊ทธ๊ฒƒ์— ์ง๋ฉดํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋ฌด๊ฒƒ๋„ ๋‹น์‹ ์„ ๊ตฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

๊ธฐ์–ต๊ณผ ๊ด€๋ จ๋œ ์ฒซ ๋ฒˆ์งธ ์ ๊ณผ ๊ด€๋ จํ•˜์—ฌ, ์‚ถ์„ ๋งค์šฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ์„ธ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ์ค‘ ์ฒซ ๋ฒˆ์งธ๋Š” NUMA์ž…๋‹ˆ๋‹ค. NUMA๋Š” ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž‘์—…๋Ÿ‰์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ๊ฒƒ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด ํ˜„์žฌ ํ˜•ํƒœ์—์„œ๋Š” ํŽ˜์ด์ง€ ์บ์‹œ ๊ณต์œ  ๋ฒ„ํผ๋ฅผ ์ง‘์ค‘์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ฐ™์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ๊ทธ๋‹ค์ง€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ. NUMA์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋‚˜์š”? ๋ถˆ์พŒํ•œ ๋…ธํฌ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๊ฐ‘์ž๊ธฐ ์ผ๋ถ€ CPU์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— PostgreSQL์˜ ์ฟผ๋ฆฌ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์œ ์‚ฌํ•œ ๊ฒƒ์ด ์—†์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฟผ๋ฆฌ๋Š” CPU๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์˜ค๋žซ๋™์•ˆ ์žก์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PostgreSQL์šฉ NUMA๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์˜ฌ๋ฐ”๋ฅธ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

์ •๋ง ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š” ๊ฑธ๊นŒ์š”? NUMA๋Š” ๋น„๊ท ์ผ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค(Non-Uniform Memory Access)๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ ์€ ๋ฌด์—‡์ธ๊ฐ€? CPU๊ฐ€ ์žˆ๊ณ  ๊ทธ ์˜†์—๋Š” ๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ฉ”๋ชจ๋ฆฌ ์ƒํ˜ธ ์—ฐ๊ฒฐ์€ ๋‹ค๋ฅธ CPU์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋Œ์–ด์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ numactl --hardware, ๊ทธ๋Ÿฌ๋ฉด ๊ทธ๋ ‡๊ฒŒ ํฐ ์‹œํŠธ๋ฅผ ์–ป๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค๋„ ๊ฑฐ๋ฆฌ ํ•„๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 10-20๊ณผ ๊ฐ™์€ ์ˆซ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ˆซ์ž๋Š” ์ด ์›๊ฒฉ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋กœ์ปฌ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ™‰ ์ˆ˜์— ์ง€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›์น™์ ์œผ๋กœ๋Š” ์ข‹์€ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์›Œํฌ๋กœ๋“œ์—์„œ ์„ฑ๋Šฅ ์†๋„๊ฐ€ ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

์ด์ œ ํ•˜๋‚˜์˜ CPU๊ฐ€ ๋จผ์ € ๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ ๋‹ค์Œ ์ธํ„ฐ์ปค๋„ฅํŠธ๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ•œ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๊ทธ๋ฆฌ๊ณ  ์ด CPU๋Š” ์ „์ฒด PostgreSQL ํŽ˜์ด์ง€ ์บ์‹œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ฆ‰, ๋ช‡ ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. CPU์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ•ด๋‹น ๋ชจ๋“ˆ ์ž์ฒด์— ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฑฐ์˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ ์ตœ์•…์˜ ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„œ๋น„์Šค๋˜๋Š” ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์ƒํ˜ธ ์—ฐ๊ฒฐ์„ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค. ๋Š๋ฆฌ๊ณ  ์Šฌํ”ˆ ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋…ธ๋“œ๋ฅผ ์„œ๋น„์Šคํ•˜๋Š” ํ”„๋กœ์„ธ์„œ๋Š” ์ง€์†์ ์œผ๋กœ ๊ณผ๋ถ€ํ•˜๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ฉ”๋ชจ๋ฆฌ์˜ ์•ก์„ธ์Šค ์‹œ๊ฐ„์ด ๋‚˜์˜๊ณ  ๋Š๋ฆฝ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์›ํ•˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๋” ์ •ํ™•ํ•œ ์˜ต์…˜์€ Linux ์šด์˜ ์ฒด์ œ๊ฐ€ ๊ฑฐ๊ธฐ์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ „ํ˜€ ๋ชจ๋ฅด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๊ฒƒ์€ ๊ทธ๋Œ€๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค.

์™œ ๊ทธ๋Ÿฐ ๊ฒ๋‹ˆ๊นŒ? ๊ทธ ๋ฐ˜๋Œ€๊ฐ€๋˜์–ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ•œ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ์ด์œ  ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ์บ์‹œ๋ฅผ ์œ„ํ•ด ์ˆ˜์‹ญ, ์ˆ˜๋ฐฑ ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ์˜ ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ๋ชจ๋“  ๊ฒƒ์„ ํ• ๋‹นํ•˜๊ณ  ๊ฑฐ๊ธฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œํ•˜๋ฉด ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด๋“์€ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ๊นŒ๋‹ค๋กœ์šด ์•ก์„ธ์Šค๋กœ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด๋“๋ณด๋‹ค ํ›จ์”ฌ ๋” ํด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” NUMA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์— ๋” ํšจ์œจ์ ์œผ๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค๊ณผ ๋น„๊ตํ•  ์ˆ˜ ์—†๋Š” ์ด์ ์„ ์–ป๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฐ์€ ๋ฏธ๋ž˜๊ฐ€ ๋„๋ž˜ํ•  ๋•Œ๊นŒ์ง€ ํ˜„์žฌ ์—ฌ๊ธฐ์—๋Š” ๋‘ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์žˆ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž์ฒด๋Š” ์–ด๋–ค CPU์—์„œ ์‹คํ–‰ ์ค‘์ด๊ณ  ์–ด๋””์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

๋”ฐ๋ผ์„œ ์˜ฌ๋ฐ”๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์€ NUMA๋ฅผ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค., ์˜ˆ๋ฅผ ๋“ค์–ด ์žฌ๋ถ€ํŒ…ํ•  ๋•Œ. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ƒ๊ธˆ์€ ์–ด๋Š ๊ฒƒ์ด ๋” ๋‚˜์€์ง€์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ด ์ „ํ˜€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ์ •๋„์˜ ๊ทœ๋ชจ์ž…๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง€์›์„ ์œ„ํ•ด ์šฐ๋ฆฌ์—๊ฒŒ ์˜ฌ ๋•Œ ์„œ๋ฒ„๋ฅผ ์žฌ๋ถ€ํŒ…ํ•˜๋Š” ๊ฒƒ์ด ๊ทธ์—๊ฒŒ ํฐ ์ผ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ ๋ฒˆ์งธ ๊ฒƒ๋ณด๋‹ค ๋” ์ž์ฃผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Š” ๊ฑฐ๊ธฐ์— ์‚ฌ์—…์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ NUMA ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋ฅผ ๊ฒฝํ—˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์žฌ๋ถ€ํŒ…๋ณด๋‹ค ๋œ ์นจํ•ด์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜์ง€๋งŒ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š”์ง€ ์ฃผ์˜ ๊นŠ๊ฒŒ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๊ฒฝํ—˜์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์ƒ์œ„ PostgreSQL ํ”„๋กœ์„ธ์Šค์—์„œ NUMA๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€๋งŒ ์ž‘๋™ํ•  ํ•„์š”๋Š” ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๋…€๊ฐ€ ์ •๋ง๋กœ ์ „์›์„ ๊ป๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Robert Haas์˜ ์ข‹์€ ๊ฒŒ์‹œ๋ฌผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ PostgreSQL ์ปค๋ฏธํ„ฐ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์ €๋ ˆ๋ฒจ ๊ณฑ์ฐฝ์˜ ํ•ต์‹ฌ ๊ฐœ๋ฐœ์ž ์ค‘ ํ•œ ๋ช…. ๊ทธ๋ฆฌ๊ณ  ์ด ๊ฒŒ์‹œ๋ฌผ์˜ ๋งํฌ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ฉด NUMA๊ฐ€ ์–ด๋–ป๊ฒŒ ์‚ฌ๋žŒ๋“ค์˜ ์‚ถ์„ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค์—ˆ๋Š”์ง€์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋‹ค์ฑ„๋กœ์šด ์ด์•ผ๊ธฐ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋ ค๋ฉด ์„œ๋ฒ„์—์„œ ๊ตฌ์„ฑํ•ด์•ผ ํ•  ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ์—ฐ๊ตฌํ•˜์„ธ์š”. ์ด๋Ÿฌํ•œ ์„ค์ •์€ ๊ธฐ๋กํ•˜๊ณ  ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ทธ๋‹ค์ง€ ์ข‹์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด๋Š” ์ œ๊ฐ€ ์„ค๋ช…ํ•  ๋ชจ๋“  ์„ค์ •์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‚ด๊ฒฐํ•จ์„ฑ์„ ์œ„ํ•ด ๋งˆ์Šคํ„ฐ-์Šฌ๋ ˆ์ด๋ธŒ ๋ชจ๋“œ๋กœ ์ˆ˜์ง‘๋ฉ๋‹ˆ๋‹ค. ์–ธ์  ๊ฐ€ ์‚ฌ๊ณ ๊ฐ€ ๋‚˜์„œ ์Šฌ๋ ˆ์ด๋ธŒ๋กœ ์ „ํ™˜ํ•˜์—ฌ ๋งˆ์Šคํ„ฐ๊ฐ€ ๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์Šฌ๋ ˆ์ด๋ธŒ์—์„œ ์ด๋Ÿฌํ•œ ์„ค์ •์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๊ธด๊ธ‰ ์ƒํ™ฉ์—์„œ ๋ชจ๋“  ๊ฒƒ์ด ๋งค์šฐ ๋‚˜์˜๊ณ  ์ „ํ™”๊ฐ€ ๊ณ„์† ์šธ๋ฆฌ๊ณ  ์ƒ์‚ฌ๊ฐ€ ํฐ ๋ง‰๋Œ€๊ธฐ๋ฅผ ๋“ค๊ณ  ๋‹ฌ๋ ค ์˜ค๋ฉด ํ™•์ธํ•  ์‹œ๊ฐ„์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋Š” ๋งค์šฐ ๋น„์ฐธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

๋‹ค์Œ ์š”์ ์€ ๊ฑฐ๋Œ€ํ•œ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค. ๊ฑฐ๋Œ€ํ•œ ํŽ˜์ด์ง€๋Š” ๋ณ„๋„๋กœ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ต๊ณ  ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒค์น˜๋งˆํฌ๊ฐ€ ์žˆ๋”๋ผ๋„ ๊ทธ๋ ‡๊ฒŒ ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Google์—์„œ๋Š” ์‰ฝ์Šต๋‹ˆ๋‹ค.

์ ์€ ๋ฌด์—‡์ธ๊ฐ€? ์˜ˆ๋ฅผ ๋“ค์–ด 30GB๊ฐ€ ๋„˜๋Š” RAM์„ ๊ฐ–์ถ˜ ๊ทธ๋‹ค์ง€ ๋น„์‹ธ์ง€ ์•Š์€ ์„œ๋ฒ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๋Œ€ํ•œ ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ธก๋ฉด์—์„œ ํ™•์‹คํžˆ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ๊ฐ€์žฅ ์ฆ๊ฑฐ์šด ๊ฒƒ๊ณผ๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ€์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

์™œ ๊ทธ๋Ÿฐ ๊ฒ๋‹ˆ๊นŒ? ๊ทธ๋ž˜์„œ ๋ฌด์Šจ ์ผ์ด์•ผ? ์šด์˜ ์ฒด์ œ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ •๋ง ํŽธ๋ฆฌํ•ด์š”. ์—ญ์‚ฌ์ ์œผ๋กœ ๊ทธ๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚ฌ๊ฑฐ๋“ ์š”. ๊ทธ๋ฆฌ๊ณ  ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด OS๋Š” ๊ฐ€์ƒ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ OS๋Š” ์ด ์ž‘์—…์˜ ๊ฒฐ๊ณผ๋ฅผ TLB(Translation Lookaside Buffer)์— ์บ์‹œํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  TLB๋Š” ์บ์‹œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์บ์‹œ์— ๋‚ด์žฌ๋œ ๋ชจ๋“  ๋ฌธ์ œ๋Š” ์ด ์ƒํ™ฉ์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ฒซ์งธ, RAM์ด ๋งŽ๊ณ  ๋ชจ๋‘ ์ž‘์€ ๋ฉ์–ด๋ฆฌ๋กœ ํ• ๋‹น๋œ ๊ฒฝ์šฐ ์ด ๋ฒ„ํผ๋Š” ๋งค์šฐ ์ปค์ง‘๋‹ˆ๋‹ค. ์บ์‹œ๊ฐ€ ํฌ๋ฉด ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋Š๋ ค์ง‘๋‹ˆ๋‹ค. ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ์ •์ƒ์ด๋ฉฐ ์ž์ฒด์ ์œผ๋กœ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, RAM์ด ์ž˜๋ชป๋œ ๊ฒƒ์— ์˜ํ•ด ์†Œ๋น„๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‹œ๊ฐ„.

๋‘˜์งธ, ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ ์บ์‹œ๊ฐ€ ๋” ๋งŽ์ด ์ปค์งˆ์ˆ˜๋ก ์บ์‹œ ๋ˆ„๋ฝ์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋” ๋†’์•„์ง‘๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์บ์‹œ์˜ ํšจ์œจ์„ฑ์€ ํฌ๊ธฐ๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ๊ธ‰๊ฒฉํžˆ ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šด์˜ ์ฒด์ œ๋Š” ๊ฐ„๋‹จํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋žซ๋™์•ˆ ๋ฆฌ๋ˆ…์Šค์—์„œ ์‚ฌ์šฉ๋˜์–ด ์™”์Šต๋‹ˆ๋‹ค. ์–ผ๋งˆ ์ „ FreeBSD์— ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” Linux์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฑฐ๋Œ€ํ•œ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ๋Š” ๊ฑฐ๋Œ€ํ•œ ํŽ˜์ด์ง€๋ผ๋Š” ์•„์ด๋””์–ด๊ฐ€ ์ดˆ๊ธฐ์— Oracle ๋ฐ IBM์„ ํฌํ•จํ•˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์˜ํ•ด ์ถ”์ง„๋˜์—ˆ๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ œ์กฐ์—…์ฒด๋Š” ์ด๊ฒƒ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋„ ์œ ์šฉํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ•๋ ฅํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด 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๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

๊ทธ๋ฆฌ๊ณ  ๊ธฐ์–ต์— ๊ด€ํ•œ ๋งˆ์ง€๋ง‰ ๊ฒƒ์€ ์—ด๋งค์™€ ์ง์ ‘์ ์ธ ๊ด€๋ จ์ด ์—†์œผ๋ฉฐ, ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์˜ ์‚ถ์„ ์ •๋ง๋กœ ๋ง์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์ง€์†์ ์œผ๋กœ ๊ต์ฒด๋œ๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋ชจ๋“  ์ฒ˜๋ฆฌ๋Ÿ‰์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์—ฌ๋Ÿฌ ๋ฉด์—์„œ ๋งค์šฐ ๋ถˆ์พŒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฃผ์š” ๋ฌธ์ œ๋Š” ์ตœ์‹  ์ปค๋„์ด ์ด์ „ Linux ์ปค๋„๊ณผ ์•ฝ๊ฐ„ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ๋ฐŸ๊ธฐ ๋งค์šฐ ๋ถˆ์พŒํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์Šค์™‘ ์ž‘์—…์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๋•Œ OOM-killer์˜ ์‹œ๊ธฐ์ ์ ˆํ•œ ๋„์ฐฉ์œผ๋กœ ๋๋‚˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ œ๋•Œ์— ๋„์ฐฉํ•˜์ง€ ์•Š๊ณ  PostgreSQL์„ ๋–จ์–ด๋œจ๋ฆฐ OOM-killer๋Š” ๋ถˆ์พŒํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋งˆ์ง€๋ง‰ ์‚ฌ์šฉ์ž๊นŒ์ง€ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ด์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

๋ฌด์Šจ ์ผ์ด์•ผ? ๊ฑฐ๊ธฐ์— ๋งŽ์€ ์–‘์˜ RAM์ด ์žˆ๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ์ด์œ ๋กœ ์„œ๋ฒ„๊ฐ€ ์Šค์™‘์—์„œ ์ค‘๋‹จ๋˜๊ณ  ์ด๋กœ ์ธํ•ด ์†๋„๊ฐ€ ๋Š๋ ค์ง‘๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋งŽ์€ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

์ด์ „์—๋Š” vm.swappiness๋ฅผ 32์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ, ์ฆ‰ ์Šค์™‘์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” XNUMXGB์˜ RAM๊ณผ ์ด์— ์ƒ์‘ํ•˜๋Š” ๊ณต์œ  ๋ฒ„ํผ๊ฐ€ ์—„์ฒญ๋‚œ ์–‘์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ์Šค์™‘์˜ ์ฃผ์š” ๋ชฉ์ ์€ ์šฐ๋ฆฌ๊ฐ€ ๋–จ์–ด์ง€๋ฉด ํฌ๋Ÿฌ์ŠคํŠธ๋ฅผ ๋˜์งˆ ์žฅ์†Œ๋ฅผ ๋งˆ๋ จํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋” ์ด์ƒ ํŠน๋ณ„ํžˆ ์„ฑ์ทจ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด ๊ป์งˆ๋กœ ๋ฌด์—‡์„ ํ•  ๊ฑด๊ฐ€์š”? ํŠนํžˆ ์ด๋Ÿฌํ•œ ๊ทœ๋ชจ์˜ ๊ฒฝ์šฐ ์Šค์™‘์ด ํ•„์š”ํ•œ ์ด์œ ๊ฐ€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ณด๋‹ค ํ˜„๋Œ€์ ์ธ ์ปค๋„ ๋ฒ„์ „์—์„œ๋Š” ๋™์ž‘์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์Šค์™‘์„ XNUMX์œผ๋กœ ์„ค์ •ํ•˜๋ฉด, ์ฆ‰ ๋„๋ฉด ์กฐ๋งŒ๊ฐ„ RAM์ด ๋‚จ์•„ ์žˆ๋”๋ผ๋„ ๊ฐ€์žฅ ์ง‘์•ฝ์ ์ธ ์†Œ๋น„์ž๋ฅผ ์ฃฝ์ด๊ธฐ ์œ„ํ•ด OOM ํ‚ฌ๋Ÿฌ๊ฐ€ ์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Š” ๊ทธ๋Ÿฌํ•œ ์ž‘์—…๋Ÿ‰์ด ์•„์ง ์กฐ๊ธˆ ๋‚จ์•„ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋›ฐ์–ด ๋‚ด๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์‹œ์Šคํ…œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋œ ์ค‘์š”ํ•œ ๊ฒƒ์„ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋›ฐ์–ด๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง‘์ค‘์ ์œผ๋กœ ์†Œ๋น„ํ•˜๋Š” ํฌ์ŠคํŠธ๋งˆ์Šคํ„ฐ์ž…๋‹ˆ๋‹ค. ๊ทธ ํ›„์—๋Š” ๊ธฐ์ง€๋ฅผ ๋ณต์›ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด์ œ ๋‚ด๊ฐ€ ๊ธฐ์–ตํ•˜๋Š” ํ•œ ๊ธฐ๋ณธ๊ฐ’์€ ๋Œ€๋ถ€๋ถ„ 6 ์ •๋„์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋‚จ์€ ๋ฉ”๋ชจ๋ฆฌ ์–‘์— ๋”ฐ๋ผ ์Šค์™‘ ์‚ฌ์šฉ์„ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋Š” ์‹œ์ ์€ ์–ด๋””์ž…๋‹ˆ๊นŒ? ์ด์ œ vm.swappiness = 1๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‹ค์งˆ์ ์œผ๋กœ ๊ธฐ๋Šฅ์ด ๊บผ์ง€์ง€๋งŒ ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ๋„์ฐฉํ•˜์—ฌ ๋ชจ๋“  ๊ฒƒ์„ ์ข…๋ฃŒํ•˜๋Š” OOM-killer์™€ ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

๋ฌด์—‡ ํ–ฅํ›„ ๊ณ„ํš? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ์„ ์ด์•ผ๊ธฐํ•˜๋‹ค ์ ์ฐจ ๋””์Šคํฌ ์ชฝ์œผ๋กœ ์˜ฎ๊ฒจ๊ฐ€๋‹ค ๋ณด๋ฉด ๋‹ค๋“ค ๊ณ ๊ฐœ๋ฅผ ๊ฐธ์šฐ๋šฑํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋””์Šคํฌ๋Š” ๋Š๋ฆฌ๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋น ๋ฅด๋‹ค๋Š” ์‚ฌ์‹ค์€ ์–ด๋ฆด ๋•Œ๋ถ€ํ„ฐ ๋ˆ„๊ตฌ์—๊ฒŒ๋‚˜ ์ต์ˆ™ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋””์Šคํฌ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋ˆ„๊ตฌ๋‚˜ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒดํฌํฌ์ธํŠธ ์ŠคํŒŒ์ดํฌ์™€ ๊ด€๋ จ๋œ ์ฃผ์š” PostgreSQL ์„ฑ๋Šฅ ๋ฌธ์ œ๋Š” ๋””์Šคํฌ ์†๋„๊ฐ€ ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ์™€ ๋””์Šคํฌ ๋Œ€์—ญํญ์˜ ๊ท ํ˜•์ด ๋งž์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ์œ„์น˜์—์„œ๋Š” ๊ท ํ˜•์ด ๋งž์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. PostgreSQL์ด ๊ตฌ์„ฑ๋˜์ง€ ์•Š์•˜๊ณ , OS๊ฐ€ ๊ตฌ์„ฑ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ํ•˜๋“œ์›จ์–ด๊ฐ€ ๊ตฌ์„ฑ๋˜์ง€ ์•Š์•˜๊ณ , ํ•˜๋“œ์›จ์–ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ฌธ์ œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ถ€ํ•˜๊ฐ€ ์—†๊ฑฐ๋‚˜ ์„ค์ •๊ณผ ํ•˜๋“œ์›จ์–ด๊ฐ€ ์ž˜ ์„ ํƒ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

๊ทธ๊ฒƒ์€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ์Šต๋‹ˆ๊นŒ? ์ผ๋ฐ˜์ ์œผ๋กœ PostgreSQL์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ์ด ๋ฌธ์ œ๋ฅผ ๋‘ ๋ฒˆ ์ด์ƒ ๊ฒฝํ—˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์•ž์„œ ๋งํ–ˆ๋“ฏ์ด PostgreSQL์€ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์˜ ๋”ํ‹ฐ ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ์— ๋คํ”„ํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๊ธฐ์ ์œผ๋กœ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ์ฒดํฌํฌ์ธํŠธ๋Š” fsync๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ํŽ˜์ด์ง€๋ฅผ ๋คํ”„ํ•˜๋ฏ€๋กœ ๋””์Šคํฌ์— ์ง‘์ค‘์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ปค๋„ ๋ฒ„ํผ์— ๋„์ฐฉํ•˜๊ณ  fsync๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋””์Šคํฌ์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์‚ฌ์—…์˜ ๊ทœ๋ชจ๊ฐ€ ํฌ๋ฉด ๋ถˆ์พŒํ•œ ํšจ๊ณผ, ์ฆ‰ ๋””์Šคํฌ ์‚ฌ์šฉ๋ฅ ์ด ๋งค์šฐ ๋†’์•„์ง€๋Š” ๊ฒƒ์„ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋‘ ์žฅ์˜ ์‚ฌ์ง„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‘ ๊ฐœ์˜ ์‹œ๊ฐ„ ์ƒ๊ด€ ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๊ทธ๋ž˜ํ”„๋Š” ๋””์Šคํฌ ํ™œ์šฉ๋„์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์‹œ์ ์—์„œ๋Š” ๊ฑฐ์˜ 90%์— ๋„๋‹ฌํ•ฉ๋‹ˆ๋‹ค. RAID ์ปจํŠธ๋กค๋Ÿฌ ์‚ฌ์šฉ๋ฅ ์ด 90%์ด๊ณ  ๋ฌผ๋ฆฌ์  ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋Š” ๋‚˜์œ ์†Œ์‹์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์กฐ๊ธˆ ๋” ์ง€๋‚˜๋ฉด 100์— ๋„๋‹ฌํ•˜๊ณ  I/O๊ฐ€ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค.

๋””์Šคํฌ ์–ด๋ ˆ์ด๊ฐ€ ์žˆ๋‹ค๋ฉด ์ด์•ผ๊ธฐ๋Š” ์•ฝ๊ฐ„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•, ๋ฐฐ์—ด ์ข…๋ฅ˜ ๋“ฑ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๋™์‹œ์— ๋‚ด๋ถ€ postgres ๋ณด๊ธฐ์˜ ๊ทธ๋ž˜ํ”„๊ฐ€ ์—ฌ๊ธฐ์— ๊ตฌ์„ฑ๋˜์–ด ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์˜ ๋…น์ƒ‰์€ ํ•ด๋‹น ์ˆœ๊ฐ„ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•ด ์ด ์ฒดํฌํฌ์ธํŠธ์— ๋„์ฐฉํ•œ ๋ฒ„ํผ, ์ฆ‰ ๋”ํ‹ฐ ํŽ˜์ด์ง€์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์—ฌ๊ธฐ์„œ ์•Œ์•„์•ผ ํ•  ์ฃผ์š” ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋งŽ์€ ํŽ˜์ด์ง€๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์–ด๋Š ์‹œ์ ์—์„œ ์šฐ๋ฆฌ๋Š” ๋ณด๋“œ๋ฅผ ์ณค์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์“ฐ๊ณ  ์ผ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋””์Šคํฌ ์‹œ์Šคํ…œ์€ ๋ถ„๋ช…ํžˆ ๋งค์šฐ ๋ฐ”์ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ์˜ ์ฒดํฌํฌ์ธํŠธ๋Š” ๋””์Šคํฌ์— ๋งค์šฐ ๊ฐ•ํ•œ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ ์ƒํ™ฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์—ฌ๊ธฐ์„œ๋Š” ๋…น์Œ ํšŸ์ˆ˜๊ฐ€ ์ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ณ„์†ํ•ด์„œ ์ด๋Ÿฐ ์ƒํƒœ๊ฐ€ ๋˜๋„๋ก ์„ค์ •์œผ๋กœ ์ˆ˜์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์žฌํ™œ์šฉ ๊ทœ๋ชจ๋Š” ์ž‘์ง€๋งŒ ์–ด๋”˜๊ฐ€์— ์—ฌ๊ธฐ์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์“ฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ๊ทน๋ณตํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ IO๋ฅผ ์ค‘์ง€ํ•œ ๊ฒฝ์šฐ ์ด๋Š” ์š”์ฒญ์„ ์ดํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์˜จ ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ๋Œ€๊ธฐํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

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๊ฐ€ ๋””์Šคํฌ ์‹œ์Šคํ…œ์— ๋„์ฐฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฑฐ๊ธฐ์— ์–ด๋–ค ์บ์‹œ๊ฐ€ ์žˆ๋“ , ์–ด๋–ค ์–ด๋ ˆ์ด๊ฐ€ ์žˆ๋“  ์ƒ๊ด€์—†์ด ์˜ค๋ž˜ ์ง€์†๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

๋”ฐ๋ผ์„œ RAID ์ปจํŠธ๋กค๋Ÿฌ์˜ ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ์ด๋Ÿฌํ•œ ์ˆ˜์น˜๋ฅผ ์ฆ‰์‹œ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์—ฌ๊ธฐ์„œ ์ฆ‰์‹œ 512MB์˜ ์บ์‹œ๊ฐ€ ์žˆ๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ถ”์ฒœํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์ด ๋งค์šฐ ๊ฐ„๋‹จํ•œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. vm.dirty_Background๋ฅผ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ์„ค์ •์€ ์ด์ „ ๋‘ ๊ฐ€์ง€๋ฅผ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค. ๋น„์œจ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๊ฑฐ๋‚˜ ๋ฐ”์ดํŠธ๊ฐ€ ์žˆ๋Š” ๋น„์œจ์ด ํ™œ์„ฑํ™”๋˜๋ฉด ๋ฐ”์ดํŠธ๊ฐ€ ์žˆ๋Š” ๋น„์œจ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ €๋Š” DBA ์ปจ์„คํ„ดํŠธ์ด๊ณ  ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ์™€ ์ž‘์—…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์งš์„ ๊ทธ๋ฆฌ๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๋ฏ€๋กœ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋ผ๋ฉด ๋ฐ”์ดํŠธ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ์ข‹์€ ๊ด€๋ฆฌ์ž๊ฐ€ ์„œ๋ฒ„์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ์žฌ๋ถ€ํŒ…ํ•ด๋„ ์ˆ˜์น˜๊ฐ€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋œ๋‹ค๋Š” ๋ณด์žฅ์€ ์•„๋ฌด๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ๋ณด์žฅ๋˜๋„๋ก ์ด ์ˆซ์ž๋ฅผ ๊ณ„์‚ฐํ•ด ๋ณด์„ธ์š”.

์ ์‘ํ•˜์ง€ ๋ชปํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? ๋‚˜๋Š” ๋ชจ๋“  ํ”Œ๋Ÿฌ์‹ฑ์ด ํšจ๊ณผ์ ์œผ๋กœ ์ค‘๋‹จ๋œ๋‹ค๊ณ  ์ผ์ง€๋งŒ ์‹ค์ œ๋กœ ์ด๊ฒƒ์€ ๋น„์œ ์ ์ธ ํ‘œํ˜„์ž…๋‹ˆ๋‹ค. ์šด์˜ ์ฒด์ œ์—๋Š” ํฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ํ‹ฐ ํŽ˜์ด์ง€๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒ์„ฑํ•˜๋Š” IO๊ฐ€ ํšจ๊ณผ์ ์œผ๋กœ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— SQL ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋‚ด๋ ค๊ณ  ์™”๋Š”๋ฐ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ฒดํฌํฌ์ธํŠธ์— ์˜ํ•ด ์ ์œ ๋˜๋ฏ€๋กœ ์ด์— ๋Œ€ํ•œ ๋ชจ๋“  ์ž…๋ ฅ/์ถœ๋ ฅ์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋…€๊ฐ€ ์–ธ์ œ ๋๋‚ผ์ง€๋Š” ์™„์ „ํžˆ ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋น„๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”Œ๋Ÿฌ์‹œ๋ฅผ ๋‹ฌ์„ฑํ–ˆ๋‹ค๋ฉด ์ด๋Š” ๋ชจ๋“  IO๊ฐ€ ํ•ด๋‹น ํ”Œ๋Ÿฌ์‹œ์— ์˜ํ•ด ์ ์œ ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋๋‚  ๋•Œ๊นŒ์ง€ ๋‹น์‹ ์€ ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—๋Š” ์ด ๋ณด๊ณ ์„œ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๋‘ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์‚ฌํ•ญ์ด ๋” ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค์ •์€ postgresql.conf์˜ ์„ค์ •, ์ฆ‰ ์ฒดํฌํฌ์ธํŠธ ์„ค์ •๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋””์Šคํฌ ์‹œ์Šคํ…œ์ด ์ ์ ˆํ•˜๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. RAID์— ์บ์‹œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฐฐํ„ฐ๋ฆฌ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ๋ฐฐํ„ฐ๋ฆฌ ์—†์ด ์ข‹์€ ์บ์‹œ๋ฅผ ๊ฐ–์ถ˜ RAID๋ฅผ ๊ตฌ๋งคํ•ฉ๋‹ˆ๋‹ค. RAID์— SSD๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์„œ๋ฒ„ SSD์—ฌ์•ผ ํ•˜๋ฉฐ ๊ฑฐ๊ธฐ์— ์ปคํŒจ์‹œํ„ฐ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ๋งํฌ์—๋Š” PostgreSQL์—์„œ ์„ฑ๋Šฅ ๋””์Šคํฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ณด๊ณ ์„œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—๋Š” ๋ชจ๋“  ์ฒดํฌ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

๋˜ ๋ฌด์—‡์ด ์ธ์ƒ์„ ๋งค์šฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๋Š” ๋‘ ๊ฐ€์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ๋น„๊ต์  ์ƒˆ๋กœ์šด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž˜๋ชป ์ผœ๋ฉด ์ƒํ™œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

๋น„๊ต์  ์ƒˆ๋กœ์šด ๊ฒƒ์ด ๋‘ ๊ฐ€์ง€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ด๋ฏธ ์„ธ ๋ฒˆ์งธ ์ฝ”์–ด์— ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‚˜๋…ธ์ดˆ ๋‹จ์œ„์˜ sched_migration_cost ๋ฐ sched_autogroup_enabled(๊ธฐ๋ณธ๊ฐ’)์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ๋‹น์‹ ์˜ ์ธ์ƒ์„ ์–ด๋–ป๊ฒŒ ๋ง์น˜๋‚˜์š”? sched_migration_cost๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? Linux์—์„œ ์Šค์ผ€์ค„๋Ÿฌ๋Š” ํ•œ CPU์—์„œ ๋‹ค๋ฅธ CPU๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” PostgreSQL์˜ ๊ฒฝ์šฐ ๋‹ค๋ฅธ CPU๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์ด ์™„์ „ํžˆ ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ ์ž…์žฅ์—์„œ๋Š” ์˜คํ”ˆ์˜คํ”ผ์Šค์™€ ํ„ฐ๋ฏธ๋„ ์‚ฌ์ด์—์„œ ์ฐฝ์„ ์ „ํ™˜ํ•  ๋•Œ ์ด๊ฒƒ์ด ์ข‹์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒฝ์šฐ ์ด๊ฒƒ์€ ๋งค์šฐ ๋‚˜์ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ฉ๋ฆฌ์ ์ธ ์ •์ฑ…์€ migration_cost๋ฅผ ์ตœ์†Œํ•œ ์ˆ˜์ฒœ ๋‚˜๋…ธ์ดˆ ์ด์ƒ์˜ ํฐ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์Šค์ผ€์ค„๋Ÿฌ์—๊ฒŒ ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? ์ด ์‹œ๊ฐ„ ๋™์•ˆ ํ”„๋กœ์„ธ์Šค๋Š” ์—ฌ์ „ํžˆ ๋œจ๊ฒ๋‹ค๊ณ  ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์˜ค๋žซ๋™์•ˆ ์–ด๋–ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด ์˜จ ์žฅ๊ธฐ ์‹คํ–‰ ํŠธ๋žœ์žญ์…˜์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์ด๋ฅผ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Š” ์ด ์ œํ•œ ์‹œ๊ฐ„์ด ๊ฒฝ๊ณผํ•  ๋•Œ๊นŒ์ง€ ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์–ด๋””๋กœ๋“  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋˜์ง€ ์•Š๊ณ  ํ• ๋‹น๋œ CPU์—์„œ ์กฐ์šฉํžˆ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋Š” ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์š”์ ์€ ์ž๋™ ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ด€๋ จ๋˜์ง€ ์•Š์€ ํŠน์ • ์ž‘์—… ๋ถ€ํ•˜์— ๋Œ€ํ•œ ์ข‹์€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฐ€์ƒ ํ„ฐ๋ฏธ๋„์„ ๊ธฐ์ค€์œผ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ถ€ ์ž‘์—…์— ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ PostgreSQL์€ ๋‹จ์ผ ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰๋˜๋Š” ํ”„๋ฆฌํฌํฌ๋ฅผ ๊ฐ–์ถ˜ ๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์ž ๊ธˆ ์ž‘์„ฑ์ž, ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์€ CPU๋‹น ํ•˜๋‚˜์˜ ์Šค์ผ€์ค„๋Ÿฌ๋กœ ๊ทธ๋ฃนํ™”๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ์„œ๋กœ ๊ฐ„์„ญํ•˜๊ณ  ๊ทธ๋ฅผ ๋” ์˜ค๋ž˜ ์ ์œ ํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๊ฐ€ ์ž์œ ๋กœ์›Œ์ง€๊ธฐ๋ฅผ ํ•œ๋งˆ์Œ์œผ๋กœ ๊ธฐ๋‹ค๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ถ€ํ•˜์˜ ๊ฒฝ์šฐ ์ „ํ˜€ ๋ถˆํ•„์š”ํ•œ ์ด์•ผ๊ธฐ์ด๋ฏ€๋กœ ๊บผ์•ผํ•ฉ๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

๋‚ด ๋™๋ฃŒ Alexey Lesovsky๋Š” ๊ฐ„๋‹จํ•œ pgbench๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ๊ทธ๋Š” migration_cost๋ฅผ ๋ช‡ ๋ฐฐ๋‚˜ ๋Š˜๋ฆฌ๊ณ  ์ž๋™ ๊ทธ๋ฃน์„ ๊ป์Šต๋‹ˆ๋‹ค. ๋ถˆ๋Ÿ‰ ํ•˜๋“œ์›จ์–ด์˜ ์ฐจ์ด๋Š” ๊ฑฐ์˜ 10%์˜€์Šต๋‹ˆ๋‹ค.. ์‚ฌ๋žŒ๋“ค์ด ์ฟผ๋ฆฌ ์†๋„์— ๋Œ€ํ•ด ์œ ์‚ฌํ•œ ๋ณ€๊ฒฝ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๋Š” postgres ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•œ ํ† ๋ก ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 50% ์˜ํ–ฅ์„ ๋ฐ›์Œ. ๊ทธ๋Ÿฐ ์ด์•ผ๊ธฐ๊ฐ€ ๊ฝค ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

๋งˆ์ง€๋ง‰์œผ๋กœ ์ ˆ์ „ ์ •์ฑ…์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ข‹์€ ์ ์€ ์ด์ œ ๋…ธํŠธ๋ถ์—์„œ๋„ Linux๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„ ๋ฐฐํ„ฐ๋ฆฌ๋ฅผ ์ž˜ ์†Œ๋ชจํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ฐ‘์ž๊ธฐ ์ด๋Ÿฐ ์ผ์ด ์„œ๋ฒ„์—์„œ๋„ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ผ๋ถ€ ํ˜ธ์Šคํ„ฐ๋กœ๋ถ€ํ„ฐ ์„œ๋ฒ„๋ฅผ ์ž„๋Œ€ํ•˜๋Š” ๊ฒฝ์šฐ "์ข‹์€" ํ˜ธ์Šคํ„ฐ๋Š” ๊ท€ํ•˜์˜ ์„ฑ๋Šฅ์ด ๋” ๋‚˜์€์ง€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ์ž„๋ฌด๋Š” ์ฒ ๋ถ„์„ ์ตœ๋Œ€ํ•œ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์šด์˜ ์ฒด์ œ์—์„œ ๋žฉํ†ฑ ์ ˆ์ „ ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ๋“œ๊ฐ€ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๋Š” ์„œ๋ฒ„์—์„œ ์ด ํ•ญ๋ชฉ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ acpi_cpufreq + ์„ฑ๋Šฅ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์˜จ๋””๋งจ๋“œ์—๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Intel_pstate๋Š” ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ๋“œ๋ผ์ด๋ฒ„์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์ œ๋Š” ์ด๊ฒƒ์ด ๋” ๋‚˜์ค‘์ด๊ณ  ๋” ์ž˜ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ ํ˜ธ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ฃผ์ง€์‚ฌ๋Š” ๋‹จ์ง€ ์„ฑ๊ณผ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์˜จ๋””๋งจ๋“œ, ์ ˆ์ „ ๋ฐ ๊ธฐํƒ€ ๋ชจ๋“  ๊ฒƒ์€ ๊ท€ํ•˜์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

PostgreSQL ๋ถ„์„ ๊ฒฐ๊ณผ๋Š” ์ ˆ์ „ ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•œ ๊ฒฝ์šฐ ๋ช‡ ๋ฐฐ๋‚˜ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•„๋ž˜์˜ CPU๋Š” ์™„์ „ํžˆ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ•ญ๋ชฉ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ผœ์ ธ ์žˆ๋Š”์ง€ ์ฃผ์˜ ๊นŠ๊ฒŒ ์‚ดํŽด๋ณด์„ธ์š”. ์ด๊ฒƒ์€ ์ •๋ง ํฐ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Linux ์กฐ์ •. ์ผ๋ฆฌ์•„ ์ฝ”์Šค๋ชจ๋ฐ๋จ€์Šคํ‚ค

๋งˆ์ง€๋ง‰์œผ๋กœ, ๋งค์ผ ์ด ๋ฌธ์ œ์— ์•ž์žฅ์„œ๊ณ  ์žˆ๋Š” 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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€