Docs Menu
Docs Home
/
MongoDB ๋งค๋‰ด์–ผ
/ /

์ž์ฒด ๊ด€๋ฆฌ ๋ฐฐํฌ์„œ๋ฒ„๋ฅผ ์œ„ํ•œ ํ”„๋กœ๋•์…˜ ๋…ธํŠธ

์ด ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ

  • ํ”Œ๋žซํผ ์ง€์›
  • ํ”Œ๋žซํผ ์ง€์› ์ฐธ๊ณ  ์‚ฌํ•ญ
  • ํ”Œ๋žซํผ ์ง€์› ๋งคํŠธ๋ฆญ์Šค
  • MongoDB dbPath
  • ๋™์‹œ์„ฑ
  • ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ
  • Networking
  • ํ•˜๋“œ์›จ์–ด ๊ณ ๋ ค ์‚ฌํ•ญ
  • ์•„ํ‚คํ…์ฒ˜
  • ์••์ถ•
  • ์‹œ๊ณ„ ๋™๊ธฐํ™”
  • ํ”Œ๋žซํผ๋ณ„ ๊ณ ๋ ค ์‚ฌํ•ญ
  • ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง
  • ๋ฐฑ์—…

์ด ํŽ˜์ด์ง€์—์„œ๋Š” ํŠนํžˆ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•  ๋•Œ MongoDB์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ 

MMAPv1 ์ œ๊ฑฐ๋จ

MongoDB 4.2 ์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” MMAPv1 ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. MMAPv1 ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ๋ฐฐํฌ์„œ๋ฒ„ ๋ฅผ WiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฐธ๊ณ 

MongoDB Atlas๋Š” ํด๋ผ์šฐ๋“œ์— ํ˜ธ์ŠคํŒ…๋˜๋Š” ์„œ๋น„์Šคํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค์ธ MongoDB Cloud Manager์™€ ์˜จํ”„๋ ˆ๋ฏธ์Šค ์†”๋ฃจ์…˜์ธ Ops Manager๋Š” MongoDB ์ธ์Šคํ„ด์Šค์˜ ๋ชจ๋‹ˆํ„ฐ๋ง, ๋ฐฑ์—… ๋ฐ ์ž๋™ํ™”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์„ค๋ช…์€ Atlas ๋ฌธ์„œ, MongoDB Cloud Manager ๋ฌธ์„œ ๋ฐ Ops Manager ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

MongoDB Atlas์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋ฐฐํฌ์˜ ํ”„๋กœ๋•์…˜ ์‹คํ–‰์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด Atlas ํ”„๋กœ๋•์…˜ ๋…ธํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์šด์˜ ์ฒด์ œ ๊ถŒ์žฅ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๊ถŒ์žฅ ํ”Œ๋žซํผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฐธ๊ณ 

MongoDB 4.0์€ macOS 10.12.x, 10.13.x ๋ฐ 10.14.0์—์„œ ๋น„์ •์ƒ ์ข…๋ฃŒ ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” macOS 10.14.1์—์„œ Apple์— ์˜ํ•ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ WT-4018 ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

MongoDB์—๋Š” ๋‹ค์Œ ์ตœ์†Œ x86_64 ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • Intel x86_64์˜ ๊ฒฝ์šฐ MongoDB์—๋Š” ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

    • Sandy Bridge ์ด์ƒ ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ, ๋˜๋Š”

    • Tiger Lake ์ด์ƒ์˜ Celeron ๋˜๋Š” Pentium ํ”„๋กœ์„ธ์„œ.

  • AMD x86_64์˜ ๊ฒฝ์šฐ MongoDB์—๋Š” ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

    • Bulldozer ์ด์ƒ์˜ ํ”„๋กœ์„ธ์„œ.

MongoDB 5.0๋ถ€ํ„ฐ mongod, mongos ๋ฐ ๋ ˆ๊ฑฐ์‹œ mongo ์…ธ์€ ์ด ์ตœ์†Œ ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜์ง€ ์•Š๋Š” x86_64 ํ”Œ๋žซํผ์„ ๋” ์ด์ƒ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • MongoDB๋Š” RHCK(Red Hat Compatible Kernel)๋ฅผ์‹คํ–‰ํ•˜๋Š” Oracle Linux๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. MongoDB๋Š” UEK(Unbreakable Enterprise Kernel)๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • MongoDB 5.0์—์„œ๋Š” ํŠน์ • Intel ๋ฐ AMD ํ”„๋กœ์„ธ์„œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” AVX ๋ช…๋ น์–ด ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

arm64์˜ MongoDB์—๋Š” ARMv8.2-A ๋˜๋Š” ๊ทธ ์ด์ƒ์˜ ๋งˆ์ดํฌ๋กœ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

MongoDB 5.0๋ถ€ํ„ฐ mongod, mongos ๋ฐ ๋ ˆ๊ฑฐ์‹œ mongo ์…ธ์€ ์ด ์ตœ์†Œ ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜์ง€ ์•Š๋Š” arm64 ํ”Œ๋žซํผ์„ ๋” ์ด์ƒ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

MongoDB๋Š” ๋” ์ด์ƒ ์ ์ ˆํ•œ CPU ์•„ํ‚คํ…์ฒ˜(Raspberry Pi 4)๊ฐ€ ์—†๋Š” ๋‹จ์ผ ๋ณด๋“œ ํ•˜๋“œ์›จ์–ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ MongoDB 5.0์˜ ํ˜ธํ™˜์„ฑ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ค‘์š”

v4.4 ์‚ฌ์šฉ ์ข…๋ฃŒ

v4.4๋Š” 2024๋…„ 2์›” 29์— ์‚ฌ์šฉ์ด ์ข…๋ฃŒ๋˜์–ด ๋” ์ด์ƒ MongoDB์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ”Œ๋žซํผ
์•„ํ‚คํ…์ฒ˜
์—๋””์…˜
8.0
7.0
6.0
5.0
4.4
Amazon Linux 2023
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
Amazon Linux 2023
x86_64
Community
โœ“
โœ“
Amazon Linux V2
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
โœ“
Amazon Linux V2
x86_64
Community
โœ“
โœ“
โœ“
โœ“
Debian 12
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
Debian 12
x86_64
Community
โœ“
โœ“
Debian 11
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
5.0.8+
Debian 11
x86_64
Community
โœ“
โœ“
5.0.8+
Debian 10
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
Debian 10
x86_64
Community
โœ“
โœ“
โœ“
Debian 9
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
Debian 9
x86_64
Community
โœ“
โœ“
RHEL/Rocky/Alma/Oracle Linux 9.0+ [1]
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
6.0.4+
RHEL/Rocky/Alma/Oracle Linux 9.0+ [1]
x86_64
Community
โœ“
โœ“
6.0.4+
RHEL/Rocky/Alma/Oracle Linux 8.0+ [1]
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
โœ“
โœ“
RHEL/Rocky/Alma/Oracle Linux 8.0+ [1]
x86_64
Community
โœ“
โœ“
โœ“
โœ“
โœ“
RHEL/CentOS/Oracle Linux 7.0+ [1]
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
โœ“
RHEL/CentOS/Oracle Linux 7.0+ [1]
x86_64
Community
โœ“
โœ“
โœ“
โœ“
RHEL/CentOS/Oracle Linux 6.2+ [1]
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
RHEL/CentOS/Oracle Linux 6.2+ [1]
x86_64
Community
โœ“
SLES 15
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
โœ“
โœ“
SLES 15
x86_64
Community
โœ“
โœ“
โœ“
โœ“
โœ“
SLES 12
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
โœ“
SLES 12
x86_64
Community
โœ“
โœ“
โœ“
โœ“
Ubuntu 24.04
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
Ubuntu 24.04
x86_64
Community
โœ“
Ubuntu 22.04
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
6.0.4+
Ubuntu 22.04
x86_64
Community
โœ“
โœ“
6.0.4+
Ubuntu 20.04
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
โœ“
โœ“
Ubuntu 20.04
x86_64
Community
โœ“
โœ“
โœ“
โœ“
โœ“
Ubuntu 18.04
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
Ubuntu 18.04
x86_64
Community
โœ“
โœ“
โœ“
Ubuntu 16.04
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
Ubuntu 16.04
x86_64
Community
โœ“
Windows 11
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
Windows 11
x86_64
Community
โœ“
โœ“
โœ“
Windows Server 2022
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
Windows Server 2022
x86_64
Community
โœ“
โœ“
โœ“
Windows Server 2019
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
โœ“
Windows Server 2019
x86_64
Community
โœ“
โœ“
โœ“
โœ“
Windows 10 / Server 2016
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
Windows 10 / Server 2016
x86_64
Community
โœ“
โœ“
โœ“
macOS 14
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
macOS 14
x86_64
Community
โœ“
macOS 13
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
macOS 13
x86_64
Community
โœ“
โœ“
macOS 12
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
macOS 12
x86_64
Community
โœ“
โœ“
macOS 11
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
macOS 11
x86_64
Community
โœ“
โœ“
macOS 10.15
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
macOS 10.15
x86_64
Community
โœ“
โœ“
โœ“
macOS 10.14
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
macOS 10.14
x86_64
Community
โœ“
โœ“
macOS 10.15
x86_64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
macOS 10.15
x86_64
Community
โœ“
macOS 14
arm64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
macOS 14
arm64
Community
โœ“
macOS 13
arm64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
macOS 13
arm64
Community
โœ“
โœ“
macOS 12
arm64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
macOS 12
arm64
Community
โœ“
โœ“
macOS 11
arm64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
macOS 11
arm64
Community
โœ“
โœ“
Amazon Linux 2023
arm64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
Amazon Linux 2023
arm64
Community
โœ“
โœ“
Amazon Linux 2
arm64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
4.4.4+
Amazon Linux 2
arm64
Community
โœ“
โœ“
โœ“
4.4.4+
RHEL/CentOS/Rocky/Alma 9
arm64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
RHEL/CentOS/Rocky/Alma 9
arm64
Community
โœ“
โœ“
โœ“
RHEL/CentOS/Rocky/Alma 8
arm64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
โœ“
4.4.4+
RHEL/CentOS/Rocky/Alma 8
arm64
Community
โœ“
โœ“
โœ“
โœ“
4.4.4+
Ubuntu 24.04
arm64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
Ubuntu 24.04
arm64
Community
โœ“
Ubuntu 22.04
arm64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
6.0.4+
Ubuntu 22.04
arm64
Community
โœ“
โœ“
6.0.4+
Ubuntu 20.04
arm64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
โœ“
โœ“
Ubuntu 20.04
arm64
Community
โœ“
โœ“
โœ“
โœ“
โœ“
Ubuntu 18.04
arm64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
Ubuntu 18.04
arm64
Community
โœ“
โœ“
โœ“
Ubuntu 16.04
arm64
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
RHEL/Rocky/Alma 9
ppc64le
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
RHEL/Rocky/Alma 8
ppc64le
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
โœ“
โœ“
RHEL/CentOS 7
ppc64le
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
6.0.7+
โœ“
โœ“
RHEL/Rocky/Alma 8
s390x
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
5.0.9+
RHEL/CentOS 7
s390x
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
โœ“
โœ“
โœ“
RHEL/CentOS 7
s390x
Community
โœ“
โœ“
[1](1, 2, 3, 4, 5, 6, 7, 8) Oracle Linux์—์„œ MongoDB๋Š” Red Hat ํ˜ธํ™˜ ์ปค๋„๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
[2] MongoDB ๋ฒ„์ „ 5.0 ์ด์ƒ์€ SLES 12 ์„œ๋น„์Šค ํŒฉ 5์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธ๋ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „์˜ MongoDB๋Š” ์„œ๋น„์Šค ํŒฉ ์—†์ด SLES 12์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธ๋ฉ๋‹ˆ๋‹ค.

MongoDB๋Š” ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์„ ์ง€์›ํ•˜์ง€๋งŒ x86_64 ์•„ํ‚คํ…์ฒ˜์˜ ํ”„๋กœ๋•์…˜์—์„œ๋Š” ๋‹ค์Œ ์šด์˜ ์ฒด์ œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  • Amazon Linux

  • Debian

  • RHEL [3]

  • SLES

  • Ubuntu LTS

  • Windows ์„œ๋ฒ„

์ตœ์ƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ๋ ค๋ฉด ์ตœ์‹  ๋ฒ„์ „์˜ ํ”Œ๋žซํผ์„ ์‹คํ–‰ํ•˜์„ธ์š”. ์ด์ „ ๋ฒ„์ „์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์ œ๊ณต์ž๊ฐ€ ํ•ด๋‹น ๋ฒ„์ „์„ ์ง€์›ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

[3] RHEL ๋ฒ„์ „ 8.0+์šฉ์œผ๋กœ ์ถœ์‹œ๋œ MongoDB ์˜จํ”„๋ ˆ๋ฏธ์Šค ์ œํ’ˆ์€ ํ•ด๋‹น ๋ฐฐํฌํŒ์ด ์™„์ „ํ•œ RHEL ํ˜ธํ™˜์„ฑ์„ ์ œ๊ณตํ•ด์•ผ ํ•˜๋Š” ์˜๋ฌด๋ฅผ ์ถฉ์กฑํ•˜๋Š” ๊ฒฝ์šฐ์— ํ•œํ•ด Rocky Linux ๋ฒ„์ „ 8.0+ ๋ฐ AlmaLinux ๋ฒ„์ „ 8.0+์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

ํŒ

๋‹ค์Œ๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

์•ˆ์ •์ ์ธ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  MongoDB ๋ฆด๋ฆฌ์Šค๋Š” MongoDB ๋‹ค์šด๋กœ๋“œ ์„ผํ„ฐ ํŽ˜์ด์ง€์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MongoDB ๋‹ค์šด๋กœ๋“œ ์„ผํ„ฐ๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ํ˜„์žฌ์˜ ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ์žฅ์†Œ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ MongoDB ์ œํ’ˆ์˜ ๊ฒฝ์šฐ, MongoDB ๋‹ค์šด๋กœ๋“œ ์„ผํ„ฐ ํŽ˜์ด์ง€ ๋˜๋Š” ํ•ด๋‹น ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

dbPath ๋””๋ ‰ํ† ๋ฆฌ์˜ ํŒŒ์ผ์€ ๊ตฌ์„ฑ๋œ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. mongod dbPath์— ์ง€์ •๋œ ๊ฒƒ์ด ์•„๋‹Œ, ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์—์„œ ๋งŒ๋“  ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ --storageEngine๊ฐ€ ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

mongod๋Š” ์ง€์ •๋œ dbPath์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ”์ด๋Ÿฌ์Šค ๋ฐฑ์‹ (AV) ์Šค์บ๋„ˆ ๋˜๋Š” ์—”๋“œํฌ์ธํŠธ ํƒ์ง€ ๋ฐ ๋Œ€์‘(EDR) ์Šค์บ๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ database storage path ๋ฐ database log path๋ฅผ ๊ฒ€์‚ฌ์—์„œ ์ œ์™ธํ•˜๋„๋ก ์Šค์บ๋„ˆ๋ฅผ ๊ตฌ์„ฑํ•˜์„ธ์š”.

database storage path์˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ด ์••์ถ•๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์•”ํ˜ธํ™”๋œ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ํŒŒ์ผ๋„ ์•”ํ˜ธํ™”๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒŒ์ผ์„ ์Šค์บ”ํ•˜๋Š” ๋ฐ ๋“œ๋Š” I/O ๋ฐ CPU ๋น„์šฉ์€ ๋ณด์•ˆ์ƒ์˜ ์ด์  ์—†์ด ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ์ €ํ•˜์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

database storage path ๋ฐ database log path์—์„œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ œ์™ธํ•˜์ง€ ์•Š์œผ๋ฉด ์Šค์บ๋„ˆ๊ฐ€ ์ค‘์š”ํ•œ ํŒŒ์ผ์„ ๊ฒฉ๋ฆฌํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์ด ๋ˆ„๋ฝ๋˜๊ฑฐ๋‚˜ ๊ฒฉ๋ฆฌ๋˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์†์ƒ๋˜๊ณ  MongoDB ์ธ์Šคํ„ด์Šค๊ฐ€ ์ถฉ๋Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

WiredTiger๋Š” ์ปฌ๋ ‰์…˜์˜ ๋ฌธ์„œ์— ๋Œ€ํ•ด ์ฝ๊ธฐ ์ˆ˜ํ–‰์ž์™€ ์“ฐ๊ธฐ ์ˆ˜ํ–‰์ž์˜ ๋™์‹œ ์•ก์„ธ์Šค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์“ฐ๊ธฐ ์ž‘์—…์ด ์ง„ํ–‰๋˜๋Š” ๋™์•ˆ ๋ฌธ์„œ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ปฌ๋ ‰์…˜์˜ ์—ฌ๋Ÿฌ ๋ฌธ์„œ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒ

๋‹ค์Œ๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ถฉ๋ถ„ํ•œ RAM ๋ฐ CPU ํ• ๋‹น์—์„œ๋Š” WiredTiger๊ฐ€ ์—ฌ๋Ÿฌ CPU ์ฝ”์–ด๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ž‘์—… ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

mongod ๊ฐ€ ์ถฉ๋Œ ํ›„ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ๋ณต๊ตฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ์œ ํšจํ•œ ์ƒํƒœ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ €๋„๋ง์„ ํ™œ์„ฑํ™”๋œ ์ƒํƒœ๋กœ ๋‘ก๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ €๋„๋ง ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

WiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„์— ๋Œ€ํ•ด์„œ๋Š” --nojournal ์˜ต์…˜ ๋˜๋Š” storage.journal.enabled: false ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์“ฐ๊ธฐ์—์„œ ์Šน์ธ์„ ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ ์ธ๊ณผ์ ์œผ๋กœ ์ผ๊ด€๋œ ์„ธ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‹ ์˜ ์“ฐ๊ธฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋ฐฐํฌ์— ์ ํ•ฉํ•œ ์“ฐ๊ธฐ ๊ณ ๋ ค ์ˆ˜์ค€์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์“ฐ๊ธฐ ๊ณ ๋ ค ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

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

์ค‘์š”

๊ธฐ๋ณธ์ ์œผ๋กœ ๊ถŒํ•œ ๋ถ€์—ฌ๋Š” ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ mongod๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ authorization ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. MongoDB์—์„œ ์ง€์›๋˜๋Š” ์ธ์ฆ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋ฐ MongoDB์˜ ๊ถŒํ•œ ๋ถ€์—ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ž์ฒด ๊ด€๋ฆฌ ๋ฐฐํฌ์— ๋Œ€ํ•œ ์ธ์ฆ ๋ฐ ์ž์ฒด ๊ด€๋ฆฌ ๋ฐฐํฌ์˜ ์—ญํ•  ๊ธฐ๋ฐ˜ ์•ก์„ธ์Šค ์ œ์–ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ณด์•ˆ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด ๋ฐ ๊ณ ๋ ค ์‚ฌํ•ญ์€ ๋ณด์•ˆ ์„น์…˜์˜ ๋ฌธ์„œ, ํŠนํžˆ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Windows ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ Windows์—์„œ MongoDB๋ฅผ ๋ฐฐํฌํ•  ๋•Œ TCP ๊ตฌ์„ฑ์— ๊ด€ํ•œ Windows Server ํ…Œํฌ๋„ท ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

HTTP ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” HTTP ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™œ์„ฑํ™”ํ•˜์ง€ ๋งˆ์„ธ์š”.

์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋งž๊ฒŒ ์—ฐ๊ฒฐ ํ’€ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜์—ฌ mongod ๋˜๋Š” mongos ์ธ์Šคํ„ด์Šค์˜ ์—ฐ๊ฒฐ ๋ฆฌ์†Œ์Šค์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ์ง€ ์•Š๋„๋ก ํ•˜์„ธ์š”. ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ผ๋ฐ˜์ ์ธ ์š”์ฒญ ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ 110~115%์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ํ•„์š”์— ๋”ฐ๋ผ ์—ฐ๊ฒฐ ํ’€ ํฌ๊ธฐ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ํ’€ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋ ค๋ฉด ์—ฐ๊ฒฐ ํ’€ ์˜ต์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

connPoolStats ๋ช…๋ น์€ ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด mongos ๋ฐ mongod ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์—ด๋ ค ์žˆ๋Š” ์—ฐ๊ฒฐ ์ˆ˜์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ถฉ๋ถ„ํ•œ RAM ๋ฐ CPU ํ• ๋‹น๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

MongoDB๋Š” ์ƒ์šฉ ํ•˜๋“œ์›จ์–ด๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, ํ•˜๋“œ์›จ์–ด ์š”๊ตฌ ์‚ฌํ•ญ์ด๋‚˜ ์ œํ•œ ์‚ฌํ•ญ์ด ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. MongoDB์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ฃผ๋กœ x86/x86_64 ํ”„๋กœ์„ธ์„œ์™€ ๊ฐ™์€ ๋ฆฌํ‹€ ์—”๋””์•ˆ ํ•˜๋“œ์›จ์–ด์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์˜ˆ: ๋“œ๋ผ์ด๋ฒ„)๋Š” ๋น… ๋˜๋Š” ๋ฆฌํ‹€ ์—”๋””์•ˆ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์†Œํ•œ ๊ฐ mongod ๋˜๋Š” mongos ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹ค์ œ ์ฝ”์–ด 2๊ฐœ ๋˜๋Š” ๋ฉ€ํ‹ฐ ์ฝ”์–ด์ธ ๋ฌผ๋ฆฌ์  CPU 1๊ฐœ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

WiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋กœ, ์ถ”๊ฐ€ CPU ์ฝ”์–ด๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ํ™œ์„ฑ ์Šค๋ ˆ๋“œ์˜ ์ด ๊ฐœ์ˆ˜(์˜ˆ ๋™์‹œ ์ž‘์—…)๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ CPU ์ˆ˜์™€ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋™์‹œ ํ™œ์„ฑ ์ž‘์—… ์ˆ˜๊ฐ€ CPU ์ˆ˜๋งŒํผ ์ฆ๊ฐ€ํ•˜๋ฉด ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  • ๋™์‹œ ํ™œ์„ฑ ์ž‘์—… ์ˆ˜๊ฐ€ CPU ์ˆ˜๋ฅผ ์ผ๋ถ€ ์ž„๊ณ„๊ฐ’๋งŒํผ ์ดˆ๊ณผํ•˜๋ฉด ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค.

์ž„๊ณ„๊ฐ’์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์‹คํ—˜ํ•˜๊ณ  ์ธก์ •ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋™์‹œ ํ™œ์„ฑ ์ž‘์—… ์ˆ˜๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. mongostat์˜ ์ถœ๋ ฅ์€ (ar|aw) ์—ด์˜ ํ™œ์„ฑ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์ˆ˜์— ๋Œ€ํ•œ ํ†ต๊ณ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

MongoDB๋Š” WiredTiger๋ฅผ ํ†ตํ•ด ๋‚ด๋ถ€ ์บ์‹œ์™€ ํŒŒ์ผ ์‹œ์Šคํ…œ ์บ์‹œ ๋ชจ๋‘๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ WiredTiger ๋‚ด๋ถ€ ์บ์‹œ ํฌ๊ธฐ๋Š” ๋‹ค์Œ ์ค‘ ๋” ํฐ ๊ฐ’์ž…๋‹ˆ๋‹ค.

  • (RAM - 1GB)์˜ 50%

  • 256 MB.

์˜ˆ๋ฅผ ๋“ค์–ด ์ด 4 GB RAM์ด ์žˆ๋Š” ์‹œ์Šคํ…œ์—์„œ WiredTiger ์บ์‹œ๋Š” 1.5 GB RAM(0.5 * (4 GB - 1 GB) = 1.5 GB)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ, ์ด RAM์ด 1.25 GB์ธ ์‹œ์Šคํ…œ์—์„œ๋Š” WiredTiger๋Š” WiredTiger ์บ์‹œ์— 256 MB๋ฅผ ํ• ๋‹นํ•˜๋Š”๋ฐ, ์ด๋Š” ์ „์ฒด RAM์—์„œ 1 GB(0.5 * (1.25 GB - 1 GB) = 128 MB < 256 MB)๋ฅผ ๋บ€ ๊ฐ’์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ 

์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰ํ•  ๋•Œ ๋“ฑ์˜ ์ผ๋ถ€ ์ธ์Šคํ„ด์Šค์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์ด ์ด ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ๋‚ฎ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ธ์Šคํ„ด์Šค์—์„œ๋Š” ์ด ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ผ ์ด ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ RAM์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์„ ๋ณด๋ ค๋ฉด hostInfo.system.memLimitMB ์ฐธ์กฐํ•˜์„ธ์š”.

๊ธฐ๋ณธ์ ์œผ๋กœ WiredTiger๋Š” ๋ชจ๋“  ์ปฌ๋ ‰์…˜์— Snappy ๋ธ”๋ก ์••์ถ•์„ ์‚ฌ์šฉํ•˜๊ณ  ๋ชจ๋“  ์ธ๋ฑ์Šค์— ์ ‘๋‘์‚ฌ ์••์ถ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์••์ถ• ๊ธฐ๋ณธ๊ฐ’์€ ์ „์—ญ ์ˆ˜์ค€์—์„œ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ปฌ๋ ‰์…˜ ๋ฐ ์ธ๋ฑ์Šค ์ƒ์„ฑ ์ค‘์— ์ปฌ๋ ‰์…˜ ๋ฐ ์ธ๋ฑ์Šค๋ณ„๋กœ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

WiredTiger ๋‚ด๋ถ€ ์บ์‹œ์™€ ์˜จ๋””์Šคํฌ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ์—๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํ‘œํ˜„์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ํŒŒ์ผ ์‹œ์Šคํ…œ ์บ์‹œ์˜ ๋ฐ์ดํ„ฐ๋Š” ์˜จ๋””์Šคํฌ ํ˜•์‹๊ณผ ๋™์ผํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ชจ๋“  ์••์ถ•์˜ ์ด์ ์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์‹œ์Šคํ…œ ์บ์‹œ๋Š” ์šด์˜ ์ฒด์ œ์—์„œ ๋””์Šคํฌ I/O๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • WiredTiger ๋‚ด๋ถ€ ์บ์‹œ์— ๋กœ๋“œ๋œ ์ธ๋ฑ์Šค๋Š” ์˜จ๋””์Šคํฌ ํ˜•์‹๊ณผ๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ํ‘œํ˜„์„ ๊ฐ–์ง€๋งŒ, ์ธ๋ฑ์Šค ์ ‘๋‘์‚ฌ ์••์ถ•์„ ํ™œ์šฉํ•˜์—ฌ RAM ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ์ ‘๋‘์‚ฌ ์••์ถ•์€ ์ธ๋ฑ์‹ฑ๋œ ํ•„๋“œ์—์„œ ๊ณตํ†ต ์ ‘๋‘์‚ฌ๋ฅผ ์ค‘๋ณต ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

  • WiredTiger ๋‚ด๋ถ€ ์บ์‹œ์˜ ์ปฌ๋ ‰์…˜ ๋ฐ์ดํ„ฐ๋Š” ์••์ถ•๋˜์ง€ ์•Š์œผ๋ฉฐ ์˜จ๋””์Šคํฌ ํ˜•์‹๊ณผ ๋‹ค๋ฅธ ํ‘œํ˜„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฐจ๋‹จ ์••์ถ•์€ ์ƒ๋‹นํ•œ ์˜จ๋””์Šคํฌ ์Šคํ† ๋ฆฌ์ง€ ์ ˆ๊ฐ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋ ค๋ฉด ์••์ถ•์„ ํ’€์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

MongoDB๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ์บ์‹œ๋ฅผ ํ†ตํ•ด ์ž๋™์œผ๋กœ WiredTiger ์บ์‹œ๋‚˜ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ชจ๋“  ์—ฌ์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์™€์ด์–ด๋“œํƒ€์ด๊ฑฐ ๋‚ด๋ถ€ ์บ์‹œ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋ ค๋ฉด storage.wiredTiger.engineConfig.cacheSizeGB ๋ฐ --wiredTigerCacheSizeGB๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. WiredTiger ๋‚ด๋ถ€ ์บ์‹œ ํฌ๊ธฐ๋ฅผ ๊ธฐ๋ณธ๊ฐ’ ์ด์ƒ์œผ๋กœ ๋Š˜๋ฆฌ์ง€ ๋งˆ์„ธ์š”.

์ฐธ๊ณ 

storage.wiredTiger.engineConfig.cacheSizeGB๋Š” WiredTiger ๋‚ด๋ถ€ ์บ์‹œ์˜ ํฌ๊ธฐ๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ์šด์˜ ์ฒด์ œ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฌ์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํŒŒ์ผ ์‹œ์Šคํ…œ ์บ์‹œ์— ์‚ฌ์šฉํ•˜์—ฌ ์••์ถ•๋œ MongoDB ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์šด์˜ ์ฒด์ œ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ RAM์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ฐจ๋‹จ๊ณผ ํŒŒ์ผ ์‹œ์Šคํ…œ ์บ์‹œ๋ฅผ ๋ฒ„ํผ๋งํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€์ ์ธ RAM ์†Œ๋น„๋ฅผ ์ˆ˜์šฉํ•˜๋ ค๋ฉด WiredTiger ๋‚ด๋ถ€ ์บ์‹œ ํฌ๊ธฐ๋ฅผ ์ค„์—ฌ์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ WiredTiger ๋‚ด๋ถ€ ์บ์‹œ ํฌ๊ธฐ ๊ฐ’์€ ๋จธ์‹ ๋‹น ๋‹จ์ผ mongod ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ๋จธ์‹ ์— ์—ฌ๋Ÿฌ MongoDB ์ธ์Šคํ„ด์Šค๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ ๋‹ค๋ฅธ mongod ์ธ์Šคํ„ด์Šค๋ฅผ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •์„ ์ค„์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  RAM์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ mongod๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ(์˜ˆ๋ฅผ ๋“ค์–ด, lxc, cgroups, Docker ๋“ฑ) storage.wiredTiger.engineConfig.cacheSizeGB๋ฅผ ๋ฐ˜๋“œ์‹œ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ RAM์˜ ์–‘๋ณด๋‹ค ์ ์€ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ ์–‘์€ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰ ์ค‘์ธ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. memLimitMB๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์บ์‹œ ๋ฐ ํ‡ด๊ฑฐ์œจ์— ๋Œ€ํ•œ ํ†ต๊ณ„๋ฅผ ๋ณด๋ ค๋ฉด serverStatus๋ช…๋ น์—์„œ ๋ฐ˜ํ™˜๋œ wiredTiger.cache ํ•„๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ AES-NI ์ง€์นจ ์„ธํŠธ ํ™•์žฅ์ด ์žฅ์ฐฉ๋œ CPU๋Š” ์ƒ๋‹นํ•œ ์„ฑ๋Šฅ ์ด์ ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์•”ํ˜ธํ™”๋œ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„๊ณผ ํ•จ๊ป˜ MongoDB Enterprise๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ์œ„ํ•ด AES-NI๋ฅผ ์ง€์›ํ•˜๋Š” CPU๋ฅผ ์„ ํƒํ•˜์„ธ์š”.

ํŒ

๋‹ค์Œ๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

MongoDB๋Š” SATA SSD(์†”๋ฆฌ๋“œ ์Šคํ…Œ์ดํŠธ ๋””์Šคํฌ)๋ฅผ ์‚ฌ์šฉํ•ด ๊ฒฐ๊ณผ๊ฐ€ ์ข‹๊ณ  ๊ฐ€๊ฒฉ ๋Œ€๋น„ ์„ฑ๋Šฅ๋น„๋„ ์ข‹์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ  ๊ฒฝ์ œ์ ์ธ ๊ฒฝ์šฐ SSD๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋” ๋น„์‹ผ ์Šคํ”ผ๋‹ ๋“œ๋ผ์ด๋ธŒ์˜ ๋žœ๋ค I/O ์„ฑ๋Šฅ ํ–ฅ์ƒ์ด ๊ทธ๋‹ค์ง€ ํƒ์›”ํ•˜์ง€ ์•Š์€ ๋งŒํผ(2๋ฐฐ ์ •๋„์— ๋ถˆ๊ณผ) ์ƒ์šฉ(SATA) ์Šคํ”ผ๋‹ ๋“œ๋ผ์ด๋ธŒ๊ฐ€ ๋”์šฑ ์ข‹์€ ์„ ํƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SSD๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ RAM์„ ๋Š˜๋ฆฌ๋ฉด I/O ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋Š˜๋ฆฌ๋Š” ๋ฐ ๋”์šฑ ํšจ๊ณผ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

NUMA(Non-Uniform Memory Access)๊ฐ€ ์žˆ๋Š” ์‹œ์Šคํ…œ์—์„œ MongoDB๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ผ์ • ๊ธฐ๊ฐ„ ๋™์•ˆ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๊ณ  ์‹œ์Šคํ…œ ํ”„๋กœ์„ธ์Šค ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์•„์ง€๋Š” ๋“ฑ ์—ฌ๋Ÿฌ ์šด์˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

NUMA ํ•˜๋“œ์›จ์–ด์—์„œ MongoDB ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ, ํ˜ธ์ŠคํŠธ๊ฐ€ ๋น„NUMA ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋„๋ก ๋ฉ”๋ชจ๋ฆฌ ์ธํ„ฐ๋ฆฌ๋ธŒ ์ •์ฑ…์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. MongoDB๋Š” Linux(๋ฒ„์ „ 2.0 ์ดํ›„) ๋ฐ Windows(๋ฒ„์ „ 2.6 ์ดํ›„) ๋จธ์‹ ์— ๋ฐฐํฌํ•  ๋•Œ ์‹œ์ž‘ ์‹œ NUMA ์„ค์ •์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. NUMA ๊ตฌ์„ฑ์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ, MongoDB๋Š” ๊ฒฝ๊ณ ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

ํŒ

๋‹ค์Œ๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

  • MySQL '๋น„์ •์ƒ์ ์ธ ์Šค์™‘(swap)' ๋ฌธ์ œ์™€ NUMA์˜ ์˜ํ–ฅ ๊ฒŒ์‹œ๋ฌผ์—์„œ NUMA๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒŒ์‹œ๋ฌผ์—์„œ๋Š” NUMA์™€ ๊ทธ ๋ชฉํ‘œ๋ฅผ ์†Œ๊ฐœํ•˜๊ณ  ์ด๋Ÿฌํ•œ ๋ชฉํ‘œ๊ฐ€ ํ”„๋กœ๋•์…˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์–ด๋–ป๊ฒŒ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š”์ง€ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์—์„œ๋Š” NUMA๊ฐ€ MySQL์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์ง€๋งŒ MongoDB์— ๋Œ€ํ•œ ๋ฌธ์ œ๋„ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

  • NUMA: ๊ฐœ์š”.

Windows์—์„œ๋Š” ์ปดํ“จํ„ฐ์˜ BIOS๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ์ธํ„ฐ๋ฆฌ๋น™์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์‹œ์Šคํ…œ ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Linux์—์„œ๋Š” ๊ตฌ์—ญ ํšŒ์ˆ˜ ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  mongod ๋ฐ mongos ์ธ์Šคํ„ด์Šค๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ”Œ๋žซํผ์˜ init ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๊ตฌ์„ฑ๋˜๋Š” numactl์— ์˜ํ•ด ์‹œ์ž‘๋˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‘ ๊ฐ€์ง€ ์ž‘์—…์„ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•ด์•ผ MongoDB์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก NUMA๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋‹ค์Œ ๋ช…๋ น ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์—ญ ํšŒ์ˆ˜ ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค:

    echo 0 | sudo tee /proc/sys/vm/zone_reclaim_mode
    sudo sysctl -w vm.zone_reclaim_mode=0
  2. mongod ๋ฐ mongos๊ฐ€ numactl๋กœ ์‹œ์ž‘๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ”Œ๋žซํผ์˜ init ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ ์ค‘์ธ init ์‹œ์Šคํ…œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค:

    ps --no-headers -o comm 1
    • "systemd"์ธ ๊ฒฝ์šฐ ํ”Œ๋žซํผ์—์„œ systemd ์ดˆ๊ธฐํ™” ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์•„๋ž˜ systemd ํƒญ์˜ ๋‹จ๊ณ„์— ๋”ฐ๋ผ MongoDB ์„œ๋น„์Šค ํŒŒ์ผ์„ ํŽธ์ง‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • "init"์ธ ๊ฒฝ์šฐ ํ”Œ๋žซํผ์—์„œ SysV ์ดˆ๊ธฐํ™” ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ด ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. SysV ์ดˆ๊ธฐํ™”๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ MongoDB init ์Šคํฌ๋ฆฝํŠธ์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ numactl์„ ํ†ตํ•ด MongoDB ์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‹จ๊ณ„๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

    • init ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ(์˜ˆ: ์ด๋Ÿฌํ•œ init ์‹œ์Šคํ…œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ), ์•„๋ž˜์˜ init ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ์ž ์ง€์ • ํƒญ์— ์žˆ๋Š” ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋“œ์‹œ ์ค€์ˆ˜ํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •์˜ init ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํŽธ์ง‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


    ๋ชจ๋“  config ์„œ๋ฒ„, mongos ์ธ์Šคํ„ด์Šค ๋ฐ ํด๋ผ์ด์–ธํŠธ๋ฅผ ํฌํ•จํ•˜์—ฌ ๊ฐ mongod์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด numactl์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ๊ฐ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ systemd ์„œ๋น„์Šค ํŒŒ์ผ์„ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค.

    1. ๊ธฐ๋ณธ MongoDB ์„œ๋น„์Šค ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

      sudo cp /lib/systemd/system/mongod.service /etc/systemd/system/
    2. /etc/systemd/system/mongod.service ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๊ณ  ExecStart ๋ฌธ์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ๋‹ค์Œ์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

      /usr/bin/numactl --interleave=all

      ์˜ˆ์‹œ

      ๊ธฐ์กด ExecStart ๋ฌธ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ.

      ExecStart=/usr/bin/mongod --config /etc/mongod.conf

      ํ•ด๋‹น ๋ฌธ์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ๋‹ค์Œ์„ ์ฝ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

      ExecStart=/usr/bin/numactl --interleave=all /usr/bin/mongod --config /etc/mongod.conf
    3. systemd ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

      sudo systemctl daemon-reload
    4. ์‹คํ–‰ ์ค‘์ธ mongod ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

      sudo systemctl stop mongod
      sudo systemctl start mongod
    5. ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  mongos ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด ์ด ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

    ๋ชจ๋“  config ์„œ๋ฒ„, mongos ์ธ์Šคํ„ด์Šค ๋ฐ ํด๋ผ์ด์–ธํŠธ๋ฅผ ํฌํ•จํ•˜์—ฌ ๊ฐ mongod์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด numactl์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    1. ์•„์ง ์„ค์น˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ”Œ๋žซํผ์— ๋งž๊ฒŒ numactl์„(๋ฅผ) ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. numactl ํŒจํ‚ค์ง€ ์„ค์น˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์šด์˜ ์ฒด์ œ ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    2. ๊ฐ ์‚ฌ์šฉ์ž ์ •์˜ ์ดˆ๊ธฐํ™” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ numactl๋ฅผ ํ†ตํ•ด ๊ฐ MongoDB ์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋„๋ก ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

      numactl --interleave=all <path> <options>

      ์—ฌ๊ธฐ์„œ <path>์€(๋Š”) ์‹œ์ž‘ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ๋กœ์ด๊ณ  <options>์€(๋Š”) ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์— ์ „๋‹ฌํ•  ์„ ํƒ์  ์ธ์ˆ˜์ž…๋‹ˆ๋‹ค.

      ์˜ˆ์‹œ

      numactl --interleave=all /usr/local/bin/mongod -f /etc/mongod.conf

์ž์„ธํ•œ ๋‚ด์šฉ์€ /proc/sys/vm/* ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

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

์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ ์Šค์™‘ ์ „๋žต ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

  1. ์‹œ์Šคํ…œ์— ์Šค์™‘ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๋ถ€ํ•˜๊ฐ€ ๋†’์€ ๊ฒฝ์šฐ์—๋งŒ ์Šค์™€ํ•‘์„ ํ—ˆ์šฉํ•˜๋„๋ก ์ปค๋„์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  2. ์‹œ์Šคํ…œ์— ์Šค์™‘ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜์ง€ ๋ง๊ณ  ์Šค์™‘์„ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜๋„๋ก ์ปค๋„์„ ๊ตฌ์„ฑํ•˜์„ธ์š”.

์ด ๊ฐ€์ด๋“œ๋ผ์ธ์— ๋”ฐ๋ผ Linux ์‹œ์Šคํ…œ์—์„œ ์Šค์™‘์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ด€๋ จํ•œ ์ •๋ณด๋ฅผ ์•Œ์•„๋ณด๋ ค๋ฉด vm.swappiness ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฐธ๊ณ 

์›น ์„œ๋ฒ„์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ MongoDB ์ธ์Šคํ„ด์Šค๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๊ฒฝ์šฐ, ์ฒซ ๋ฒˆ์งธ ์Šค์™‘ ์ „๋žต์„ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์Šค์™‘์„ ๋น„ํ™œ์„ฑํ™”ํ•˜์ง€ ๋งˆ์„ธ์š”. ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด MongoDB๋ฅผ ์ž์ฒด ์ „์šฉ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ธต์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋ ค๋ฉด RAID-10์œผ๋กœ ์ง€์›๋˜๋Š” ๋””์Šคํฌ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. RAID-5 ๋ฐ RAID-6์€ ์ผ๋ฐ˜์ ์œผ๋กœ MongoDB deployment๋ฅผ ์ง€์›ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์›๊ฒฉ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ISO/IEC 9945-1:1996(POSIX.1)์„ ์ค€์ˆ˜ํ•˜๋Š” ๊ฒฝ์šฐ, WiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ํ†ตํ•ด WiredTiger ๊ฐ์ฒด๋ฅผ ์›๊ฒฉ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›๊ฒฉ ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ๋ณด๋‹ค ์†๋„๊ฐ€ ๋Š๋ฆฐ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฏ€๋กœ, ์›๊ฒฉ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์Šคํ† ๋ฆฌ์ง€๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

NFS๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ๊ฒฝ์šฐ /etc/fstab ํŒŒ์ผ์— ๋‹ค์Œ NFS ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  • bg

  • hard

  • nolock

  • noatime

  • nointr

์ปค๋„ ๋ฒ„์ „์— ๋”ฐ๋ผ ์ด๋Ÿฌํ•œ ๊ฐ’ ์ค‘ ์ผ๋ถ€๊ฐ€ ์ด๋ฏธ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ•ด๋‹น ํ”Œ๋žซํผ์˜ ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

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

WiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค๋ฅผ ๋‹ค๋ฅธ ์Šคํ† ๋ฆฌ์ง€ ์žฅ์น˜์— ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. storage.wiredTiger.engineConfig.directoryForIndexes๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฐธ๊ณ 

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

ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ํ†ตํ•ด ๊ฐ€์ƒ ๋จธ์‹  ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐ๋˜๊ฑฐ๋‚˜ ํด๋ผ์šฐ๋“œ ํ˜ธ์ŠคํŒ… ์ œ๊ณต์ž์— ์˜ํ•ด ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋กœ์ปฌ ๋ธ”๋ก ์žฅ์น˜์˜ ๊ฒฝ์šฐ ๊ฒŒ์ŠคํŠธ ์šด์˜ ์ฒด์ œ๋Š” ์ตœ์ƒ์˜ ์„ฑ๋Šฅ์„ ์œ„ํ•ด cfq ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. cfq ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์šด์˜ ์ฒด์ œ์—์„œ I/O ์Šค์ผ€์ค„๋ง์„ ๊ธฐ๋ณธ ํ•˜์ดํผ๋ฐ”์ด์ €๋กœ ์—ฐ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

๋ˆ• ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๋‹ค์Œ ์กฐ๊ฑด์ด ๋ชจ๋‘ ์ถฉ์กฑ๋˜๋Š” ๊ฒฝ์šฐ ์˜ˆ์•ฝ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ•˜์ดํผ๋ฐ”์ด์ €๋Š” VMware์ž…๋‹ˆ๋‹ค.

  • ๋ณต์ œ๋ณธ ์„ธํŠธ ํ† ํด๋กœ์ง€ ๋˜๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ๊ฐ€์ƒ ๋จธ์‹ ์€ ๋™์ผํ•œ ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค.

  • DB ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋œ ๊ธฐ๋ณธ ์Šคํ† ๋ฆฌ์ง€๋Š” ์ผ๋ฐ˜์ ์ธ LUN ๋ธ”๋ก ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค.

๋ฌผ๋ฆฌ์  ์„œ๋ฒ„์˜ ๊ฒฝ์šฐ ์šด์˜ ์ฒด์ œ์—์„œ ๋งˆ๊ฐ์ผ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ๊ฐ์ผ ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์š”์ฒญ๋‹น ์ตœ๋Œ€ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ œํ•œํ•˜๊ณ  ๋””์Šคํฌ ์ง‘์•ฝ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋””์Šคํฌ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฐฐํฌ์— ๋Œ€ํ•œ ์•„ํ‚คํ…์ฒ˜ ๊ณ ๋ ค ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๊ฐœ์š”๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ ์•„ํ‚คํ…์ฒ˜ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ์— ๊ถŒ์žฅ๋˜๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๊ฐœ์š”๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ ํ”„๋กœ๋•์…˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŒ

๋‹ค์Œ๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

WiredTiger๋Š” ๋‹ค์Œ ์••์ถ• ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปฌ๋ ‰์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์••์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์Šค๋‚ดํ”ผ
    zlib ๋˜๋Š” zstd๋ณด๋‹ค ๋‚ฎ์€ ์••์ถ•๋ฅ ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ๋‘˜ ์ค‘ ์–ด๋Š ๊ฒƒ๋ณด๋‹ค๋„ CPU ๋น„์šฉ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค.
  • zlib
    snappy๋ณด๋‹ค ๋” ๋‚˜์€ ์••์ถ•๋ฅ ์„ ์ œ๊ณตํ•˜์ง€๋งŒ snappy ๋ฐ zstd๋ณด๋‹ค CPU ๋น„์šฉ์ด ๋” ๋†’์Šต๋‹ˆ๋‹ค.
  • zstd (MongoDB 4.2๋ถ€ํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)
    snappy ๋ฐ zlib๋ณด๋‹ค ๋” ๋‚˜์€ ์••์ถ•๋ฅ ์„ ์ œ๊ณตํ•˜๊ณ  zlib๋ณด๋‹ค ๋” ๋‚ฎ์€ CPU ๋น„์šฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ WiredTiger๋Š” ์Šค๋‚ดํ”ผ ์••์ถ• ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์••์ถ• ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด storage.wiredTiger.collectionConfig.blockCompressor๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

WiredTiger๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ์ธ๋ฑ์Šค์— ์ ‘๋‘์‚ฌ ์••์ถ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

MongoDB ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ์ž‘์—…์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋กœ์ง€์ปฌ ์‹œ๊ณ„๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. NTP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ ํด๋Ÿญ์„ ๋™๊ธฐํ™”ํ•˜๋ฉด ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์˜ ํด๋Ÿญ ๋“œ๋ฆฌํ”„ํŠธ ์œ„ํ—˜์ด ์™„ํ™”๋ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์š”์†Œ ๊ฐ„์˜ ํด๋Ÿญ ๋“œ๋ฆฌํ”„ํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‹œ๊ฐ„ ์ข…์† ์ž‘์—…์˜ ๋ถ€์ •ํ™•ํ•˜๊ฑฐ๋‚˜ ๋น„์ •์ƒ์ ์ธ ๋™์ž‘ ๊ฐ€๋Šฅ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.

  • ํŠน์ • MongoDB ๊ตฌ์„ฑ ์š”์†Œ์˜ ๊ธฐ๋ณธ ์‹œ์Šคํ…œ ์‹œ๊ณ„๊ฐ€ ๋™์ผํ•œ ๋ฐฐํฌ์˜ ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ์™€ 1๋…„ ์ด์ƒ ์ฐจ์ด๊ฐ€ ๋‚˜๋ฉด, ํ•ด๋‹น ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์˜ ํ†ต์‹ ์ด ๋ถˆ์•ˆ์ •ํ•ด์ง€๊ฑฐ๋‚˜ ์™„์ „ํžˆ ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    maxAcceptableLogicalClockDriftSecs ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์— ํ—ˆ์šฉ๋˜๋Š” ํด๋Ÿญ ๋“œ๋ฆฌํ”„ํŠธ์˜ ์–‘์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. maxAcceptableLogicalClockDriftSecs์˜ ๊ฐ’์ด ๋” ๋‚ฎ์€ ํด๋Ÿฌ์Šคํ„ฐ๋Š” ํด๋Ÿญ ๋“œ๋ฆฌํ”„ํŠธ์— ๋Œ€ํ•œ ํ—ˆ์šฉ์น˜๊ฐ€ ๋” ๋‚ฎ์Šต๋‹ˆ๋‹ค.

  • ์‹œ์Šคํ…œ ํด๋Ÿญ์ด ๋‹ค๋ฅธ ๋‘ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ๋Š” ํ˜„์žฌ ํด๋Ÿฌ์Šคํ„ฐ ๋˜๋Š” ์‹œ์Šคํ…œ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ฐ์‚ฐ์— ๋Œ€ํ•ด Date(), NOW, CLUSTER_TIME์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • MongoDB ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์˜ ํด๋Ÿญ ๋“œ๋ฆฌํ”„ํŠธ๊ฐ€ ์žˆ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์—์„œ๋Š” ์‹œ๊ฐ„ ์œ ์ง€์— ์˜์กดํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ผ๊ด€๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ๋™์ž‘์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Wired Tiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ 3.4.6 ๋˜๋Š” ๋ฏธ๋งŒ์œผ๋กœ MongoDB๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฐํฌ์—๋Š” NTP 3.2.17 ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ์—ฌ๊ธฐ์„œ ํด๋Ÿญ ๋“œ๋ฆฌํ”„ํŠธ๋กœ ์ธํ•ด ์ฒดํฌํฌ์ธํŠธ ์ค‘๋‹จ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. . ์ด ๋ฌธ์ œ๋Š” MongoDB 3 ์—์„œ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.4.6+ ๋ณ€๊ฒฝ ๋กœ๊ทธ ๋ฐ MongoDB 3.2.17+ ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ์ด๋ฉฐ, MongoDB 3 ์˜ ๋ชจ๋“  ๋ฆด๋ฆฌ์Šค์—์„œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.6, 4.0, 4.2 ์ด์ƒ ๋ฆด๋ฆฌ์Šค.

Linux ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ MongoDB๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ, Linux ์ปค๋„ ๋ฒ„์ „ 2.6.36 ์ด์ƒ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ, ํŒŒ์ผ์‹œ์Šคํ…œ์€ XFS ๋˜๋Š” EXT4์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ MongoDB์—์„œ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•˜๋Š”XFS๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

WiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„๊ณผ ํ•จ๊ป˜ EXT4๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ๋ฐ์ดํ„ฐ ๋ณด์œ  ๋…ธ๋“œ์— XFS๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ์ ๊ทน ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

  • ์ผ๋ฐ˜์ ์œผ๋กœ XFS ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Linux ์ปค๋„ ๋ฒ„์ „ 2.6.25 ์ด์ƒ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • EXT4 ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Linux ์ปค๋„ ๋ฒ„์ „ 2.6.28 ์ด์ƒ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Red Hat Enterprise Linux ๋ฐ CentOS์—์„œ๋Š” Linux ์ปค๋„์˜ 2.6.18-194 ๋ฒ„์ „ ์ด์ƒ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

MongoDB๋Š” Linux์—์„œ GNU C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(glibc)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ Linux ๋ฐฐํฌํŒ์€ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ž์ฒด ๊ฒ€์ฆ ๋ฒ„์ „์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ๋ ค๋ฉด ์ด ์‹œ์Šคํ…œ ์ œ๊ณต ๋ฒ„์ „์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์‹  ์—…๋ฐ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์‹œ์Šคํ…œ์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์‹  ๋ฒ„์ „์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ:

  • RHEL/CentOS์—์„œ ๋‹ค์Œ ๋ช…๋ น์€ ์‹œ์Šคํ…œ์—์„œ ์ œ๊ณตํ•˜๋Š” GNU C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค:

    sudo yum update glibc
  • Ubuntu/Debian์—์„œ ๋‹ค์Œ ๋ช…๋ น์€ ์‹œ์Šคํ…œ์—์„œ ์ œ๊ณตํ•˜๋Š” GNU C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    sudo apt-get install libc6

์ค‘์š”

MongoDB๋Š” ๋””๋ ‰ํ† ๋ฆฌ์—์„œ fsync()๋ฅผ ์ง€์›ํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, HGFS ๋ฐ Virtual Box์˜ ๊ณต์œ  ํด๋”๋Š” ์ด ์ž‘์—…์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

'Swappiness'๋Š” ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์ž์˜ ๋™์ž‘์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” Linux ์ปค๋„ ์„ค์ •์ž…๋‹ˆ๋‹ค. vm.swappiness ์„ค์ • ๋ฒ”์œ„๋Š” 0์—์„œ 100๊นŒ์ง€์ด๋ฉฐ, ๊ฐ’์ด ํด์ˆ˜๋ก RAM์—์„œ ํŽ˜์ด์ง€๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ๋””์Šคํฌ๋กœ ์Šค์™‘ํ•˜๋Š” ๊ฒƒ์„ ๋” ๊ฐ•๋ ฅํ•˜๊ฒŒ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

  • 0 ์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ์Šค์™€ํ•‘์ด ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค [4].

  • 1 ์„ค์ •์€ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ๋งŒ ์ปค๋„ ๊ต์ฒด๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • 60 ์„ค์ •์€ ์ปค๋„์ด ๋””์Šคํฌ๋กœ ์ž์ฃผ ๊ต์ฒดํ•˜๋„๋ก ์ง€์‹œํ•˜๋ฉฐ, ์ด๋Š” ๋งŽ์€ Linux ๋ฐฐํฌํŒ์˜ ๊ธฐ๋ณธ๊ฐ’์ž…๋‹ˆ๋‹ค.

  • 100์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ์ปค๋„์ด ๋””์Šคํฌ์— ์ ๊ทน์ ์œผ๋กœ ์Šค์™‘ํ•˜๋„๋ก ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค.

MongoDB๋Š” ์Šค์™€ํ•‘์„ ํ”ผํ•˜๊ฑฐ๋‚˜ ์ตœ์†Œํ•œ์œผ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ ์šฐ์ˆ˜ํ•œ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์š”๊ตฌ ์‚ฌํ•ญ ๋ฐ ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ์— ๋”ฐ๋ผ vm.swappiness๋ฅผ 1 ๋˜๋Š” 0์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

๋Œ€๋ถ€๋ถ„์˜ ์‹œ์Šคํ…œ ๋ฐ ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค๋Š” cgroup ๋‚ด์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ vm.swappiness์„ 60๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. RHEL /CentOS๋ฅผ ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ ์ง€์ •๋œ vm.swappiness ๊ฐ’์ด ๋ชจ๋“  cgroup ๊ธฐ๋ณธ๊ฐ’์„ ์žฌ์ •์˜ํ•˜๋„๋ก vm.force_cgroup_v2_swappiness์„ 1๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

[4] 3.5 ์ด์ „์˜ Linux ์ปค๋„ ๋ฒ„์ „ ๋˜๋Š” 2.6.32-303 ์ด์ „์˜ RHEL/CentOS ์ปค๋„ ๋ฒ„์ „์˜ ๊ฒฝ์šฐ 0์„ vm.swappiness๋กœ ์„ค์ •ํ•˜๋ฉด ํŠน์ • ๊ธด๊ธ‰ ์ƒํ™ฉ์—์„œ ์ปค๋„์„ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

MongoDB ์ธ์Šคํ„ด์Šค๊ฐ€ ์›น ์„œ๋ฒ„์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด๋„ ์‹คํ–‰ํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๊ฒฝ์šฐ ์ธ์Šคํ„ด์Šค๋ฅผ vm.swappiness 1๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด MongoDB๋ฅผ ์ž์ฒด ์ „์šฉ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  • ์‹œ์Šคํ…œ์˜ ํ˜„์žฌ swappiness ์„ค์ •์„ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์„ธ์š”.

    cat /proc/sys/vm/swappiness
  • ์‹œ์Šคํ…œ์—์„œ ์Šค์™‘์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    1. /etc/sysctl.conf ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๊ณ  ๋‹ค์Œ ์ค„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค:

      vm.swappiness = 1
    2. ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์„ค์ •์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

      sudo sysctl -p

์ฐธ๊ณ 

RHEL/CentOS๋ฅผ ์‹คํ–‰ ์ค‘์ด๊ณ  tuned ์„ฑ๋Šฅ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ vm.swappiness ์„ 1 ๋˜๋Š” 0์œผ๋กœ ์„ค์ •ํ•˜๋„๋ก ์„ ํƒํ•œ ํ”„๋กœํ•„๋„ ํŽธ์ง‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  MongoDB deployments์˜ ๊ฒฝ์šฐ:

  • ๋„คํŠธ์›Œํฌ ์‹œ๊ฐ„ ํ”„๋กœํ† ์ฝœ(NTP)์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ ๊ฐ„์— ์‹œ๊ฐ„์„ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ํŠนํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

WiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ๊ฒฝ์šฐ ๋‹ค์Œ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•˜์„ธ์š”.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ์ผ์ด ๋“ค์–ด ์žˆ๋Š” ์Šคํ† ๋ฆฌ์ง€ ๋ณผ๋ฅจ์˜ atime๋ฅผ ๋•๋‹ˆ๋‹ค.

  • ulimit ์ฐธ๊ณ ์˜ ๊ถŒ์žฅ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ํ”Œ๋žซํผ์˜ ulimit ์„ค์ •์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ulimit ๊ฐ’์ด ๋‚ฎ์œผ๋ฉด ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์„ ๋•Œ MongoDB์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ  MongoDB ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ์‹คํŒจ ๋ฐ ์„œ๋น„์Šค ์†์‹ค๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ฐธ๊ณ 

    ์—ด๋ ค ์žˆ๋Š” ํŒŒ์ผ ์ˆ˜์˜ ulimit ๊ฐ’์ด 64000 ๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ MongoDB๊ฐ€ ์‹œ์ž‘ ๊ฒฝ๊ณ ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • Transparent Huge Pages๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. MongoDB๋Š” ์ผ๋ฐ˜(4096๋ฐ”์ดํŠธ) ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€์—์„œ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค. Transparent Huge Pages ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  • BIOS์—์„œ NUMA๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ NUMA ํ•˜๋“œ์›จ์–ด์˜ MongoDB๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  • ๊ธฐ๋ณธ MongoDB ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ ๋˜๋Š” ํฌํŠธ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ MongoDB์šฉ SELinux๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    ์ฐธ์กฐ: ํ•„์š”ํ•œ ๊ตฌ์„ฑ ์€MongoDB์šฉ SELinux ๊ตฌ์„ฑ ๋ฐ MongoDB Enterprise ์šฉ SELinux ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    ์ฐธ๊ณ 

    SELinux๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋ฒ„ ์ธก JavaScript๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๋ชจ๋“  MongoDB ์ž‘์—…์€ ์„ธ๊ทธํดํŠธ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. JavaScript์˜ ์„œ๋ฒ„ ์ธก ์‹คํ–‰ ๋น„ํ™œ์„ฑํ™”์—์„œ๋Š” ์„œ๋ฒ„ ์ธก JavaScript์˜ ์‹คํ–‰์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

WiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ๊ฒฝ์šฐ:

  • ์ €์žฅ ๋ฏธ๋””์–ด์˜ ์ข…๋ฅ˜(์Šคํ”ผ๋‹ ๋””์Šคํฌ, SSD ๋“ฑ)์— ๊ด€๊ณ„์—†์ด 8์—์„œ 32 ์‚ฌ์ด์˜ readahead๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    ์ผ๋ฐ˜์ ์œผ๋กœ ์ฝ๊ธฐ ํ—ค๋“œ๊ฐ€ ๋†’์„ ์ˆ˜๋ก ์ˆœ์ฐจ์  I/O ์ž‘์—…์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. MongoDB ๋””์Šคํฌ ์•ก์„ธ์Šค ํŒจํ„ด์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌด์ž‘์œ„์ด๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋†’์€ ์ฝ๊ธฐ ํ—ค๋“œ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด์ ์ด ์ œํ•œ์ ์ด๊ฑฐ๋‚˜ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ๋” ๋†’์€ ์ฝ๊ธฐ ํ—ค๋“œ ๊ฐ’์—์„œ ์ธก์ • ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•˜๋ฉฐ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, ์ตœ์ ์˜ MongoDB ์„ฑ๋Šฅ์„ ์œ„ํ•ด ์ฝ๊ธฐ ํ—ค๋“œ๋ฅผ 8~32 ์‚ฌ์ด๋กœ ์„ค์ •ํ•˜์„ธ์š”. MongoDB ์ƒ์—… ๋ถ€๋ฌธ ์ง€์›ํŒ€์ด ๋Œ€์ฒด ์ฝ๊ธฐ ํ—ค๋“œ ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ์กฐ์–ธ๊ณผ ์ง€์นจ์„ ์ œ๊ณตํ•ด ๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Linux ํ”Œ๋žซํผ์—์„œ๋Š” MongoDB ๋กœ๊ทธ์—์„œ ๋‹ค์Œ ๋ช…๋ น๋ฌธ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<path to TLS/SSL libs>/libssl.so.<version>: no version information available (required by /usr/bin/mongod)
<path to TLS/SSL libs>/libcrypto.so.<version>: no version information available (required by /usr/bin/mongod)

์ด๋Ÿฌํ•œ ๊ฒฝ๊ณ ๋Š” ์‹œ์Šคํ…œ์˜ TLS/SSL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ mongod๊ฐ€ ์ปดํŒŒ์ผ๋œ TLS/SSL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ๋ฉ”์‹œ์ง€์—๋Š” ๊ฐœ์ž…์ด ํ•„์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ๋‹ค์Œ ์ž‘์—…์„ ์‚ฌ์šฉํ•˜์—ฌ mongod๊ฐ€ ์˜ˆ์ƒํ•˜๋Š” ๊ธฐํ˜ธ ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

objdump -T <path to mongod>/mongod | grep " SSL_"
objdump -T <path to mongod>/mongod | grep " CRYPTO_"

์ด๋Ÿฌํ•œ ์ž‘์—…์€ ๋‹ค์Œ ์ค„ ์ค‘ ํ•˜๋‚˜์™€ ์œ ์‚ฌํ•œ ์ถœ๋ ฅ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

0000000000000000 DF *UND* 0000000000000000 libssl.so.10 SSL_write
0000000000000000 DF *UND* 0000000000000000 OPENSSL_1.0.0 SSL_write

์ด ์ถœ๋ ฅ์˜ ๋งˆ์ง€๋ง‰ ๋‘ ๋ฌธ์ž์—ด์€ ๊ธฐํ˜ธ ๋ฒ„์ „๊ณผ ๊ธฐํ˜ธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ’์„ ๋‹ค์Œ ์ž‘์—…์—์„œ ๋ฐ˜ํ™˜๋œ ๊ฐ’๊ณผ ๋น„๊ตํ•˜์—ฌ ๊ธฐํ˜ธ ๋ฒ„์ „ ๋ถˆ์ผ์น˜๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

objdump -T <path to TLS/SSL libs>/libssl.so.1*
objdump -T <path to TLS/SSL libs>/libcrypto.so.1*

์ด ์ ˆ์ฐจ๋Š” ์ •ํ™•ํ•˜์ง€๋„ ์™„์ „ํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. libcrypto ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ mongod๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐํ˜ธ ์ค‘ ์ƒ๋‹น์ˆ˜๋Š” CRYPTO_๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

WiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋Š” MongoDB ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ, Windows์˜ ์„ฑ๋Šฅ์€ Linux์˜ ์„ฑ๋Šฅ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

์ด ์„น์…˜์—์„œ๋Š” ๋ณด๋‹ค ์ผ๋ฐ˜์ ์ธ ๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ MongoDB๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์˜ˆ์•ฝ์„ ๊ณ ๋ คํ•˜์„ธ์š”.

๊ณ ๋ คํ•ด์•ผ ํ•  ๋‘ ๊ฐ€์ง€ ์„ฑ๋Šฅ ๊ตฌ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋˜๋Š” ๋ฒค์น˜๋งˆํ‚น์„ ์œ„ํ•œ ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ์„ฑ๋Šฅ, ๊ทธ๋ฆฌ๊ณ 

  • ์›์‹œ ์ตœ๋Œ€ ์„ฑ๋Šฅ

๋‘ ๊ตฌ์„ฑ ๋ชจ๋‘์— ๋Œ€ํ•ด EC2์—์„œ ์„ฑ๋Šฅ์„ ์กฐ์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

  • ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด AWS ํ–ฅ์ƒ๋œ ๋„คํŠธ์›Œํ‚น์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ธ์Šคํ„ด์Šค ์œ ํ˜•์ด ํ–ฅ์ƒ๋œ ๋„คํŠธ์›Œํ‚น์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

    ํ–ฅ์ƒ๋œ ๋„คํŠธ์›Œํ‚น์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด AWS ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

EC2์—์„œ ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ์„ฑ๋Šฅ์— ๋” ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ์ด ๋˜ํ•œ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

  • ์ €๋„๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ๋ณ„๋„์˜ ์žฅ์น˜๋กœ ์Šคํ† ๋ฆฌ์ง€์— ํ”„๋กœ๋น„์ €๋‹๋œ IOPS๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ๋Œ€๋ถ€๋ถ„์˜ ์ธ์Šคํ„ด์Šค ์œ ํ˜•์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž„์‹œ(SSD) ์Šคํ† ๋ฆฌ์ง€๋Š” ์„ฑ๋Šฅ์ด ์‹œ์‹œ๊ฐ๊ฐ ๋ณ€ํ•˜๋ฏ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. (i ์‹œ๋ฆฌ์ฆˆ๋Š” ์ฃผ๋ชฉํ•  ๋งŒํ•œ ์˜ˆ์™ธ์ด์ง€๋งŒ ๋งค์šฐ ๋น„์Œ‰๋‹ˆ๋‹ค.)

  • DVFS ๋ฐ CPU ์ ˆ์ „ ๋ชจ๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

    ํŒ

    ๋‹ค์Œ๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

  • ํ•˜์ดํผ์Šค๋ ˆ๋”ฉ์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฉ”๋ชจ๋ฆฌ ์ง€์—ญ์„ฑ์„ ๋‹จ์ผ ์†Œ์ผ“์— ๋ฐ”์ธ๋”ฉํ•˜๋ ค๋ฉด numactl๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋ฆฌ๋ฏธ์—„ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Microsoft Azure๋Š” ํ‘œ์ค€ ์Šคํ† ๋ฆฌ์ง€์™€ ํ”„๋ฆฌ๋ฏธ์—„ ์Šคํ† ๋ฆฌ์ง€๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ์œ ํ˜•์˜ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Azure์˜ MongoDB๋Š” ํ‘œ์ค€ ์Šคํ† ๋ฆฌ์ง€๋ณด๋‹ค ํ”„๋ฆฌ๋ฏธ์—„ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Azure ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์˜ TCP ์œ ํœด ์‹œ๊ฐ„ ์ œํ•œ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ 240์ดˆ์ž…๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด Azure ์‹œ์Šคํ…œ์˜ TCP ์—ฐ๊ฒฐ ์œ ์ง€๊ฐ€ ์ด ๊ฐ’๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐ์ด ์ œ๊ฑฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ๊ฐœ์„ ํ•˜๋ ค๋ฉด tcp_keepalive_time์„ 120์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

์‹œ์Šคํ…œ ์ „์ฒด์— ์ƒˆ ํ‚ต์–ผ๋ผ์ด๋ธŒ ์„ค์ •์„ ์ ์šฉํ•˜๋ ค๋ฉด mongod ๋ฐ mongos ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Linux์—์„œ ํ‚ต์–ผ๋ผ์ด๋ธŒ ์„ค์ •์„ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

    sysctl net.ipv4.tcp_keepalive_time

    ๋˜๋Š”:

    cat /proc/sys/net/ipv4/tcp_keepalive_time

    ๊ฐ’์€ ์ดˆ ๋‹จ์œ„๋กœ ์ธก์ •๋ฉ๋‹ˆ๋‹ค.

    ์ฐธ๊ณ 

    ์„ค์ • ์ด๋ฆ„์— ipv4๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€๋งŒ, tcp_keepalive_time ๊ฐ’์€ IPv4์™€ IPv6 ๋ชจ๋‘์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • tcp_keepalive_time ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ <value>๋ฅผ ์ดˆ ๋‹จ์œ„๋กœ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค

    sudo sysctl -w net.ipv4.tcp_keepalive_time=<value>

    ๋˜๋Š”:

    echo <value> | sudo tee /proc/sys/net/ipv4/tcp_keepalive_time

    ์ด๋Ÿฌํ•œ ์—ฐ์‚ฐ์€ ์‹œ์Šคํ…œ ์žฌ๋ถ€ํŒ… ์‹œ ์ง€์†๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ค์ •์„ ์œ ์ง€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ค„์„ /etc/sysctl.conf์— ์ถ”๊ฐ€ํ•˜๊ณ  <value>๋ฅผ ์ดˆ ๋‹จ์œ„๋กœ ์ž…๋ ฅํ•œ ํ›„ ๋จธ์‹ ์„ ์žฌ๋ถ€ํŒ…ํ•˜์„ธ์š”.

    net.ipv4.tcp_keepalive_time = <value>

    300์ดˆ(5๋ถ„)๋ณด๋‹ค ํฐ ํ‚ต์–ผ๋ผ์ด๋ธŒ ๊ฐ’์€ mongod ๋ฐ mongos ์†Œ์ผ“์—์„œ ์žฌ์ •์˜๋˜๊ณ  300์ดˆ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

  • Windows์—์„œ ํ‚ต์–ผ๋ผ์ด๋ธŒ ์„ค์ •์„ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

    reg query HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v KeepAliveTime

    ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ฐ’์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ๋˜๋Š” ์‹œ์Šคํ…œ ๊ธฐ๋ณธ๊ฐ’์€ 7200000 ๋ฐ€๋ฆฌ์ดˆ ๋˜๋Š” 16์ง„์ˆ˜๋กœ 0x6ddd00์ž…๋‹ˆ๋‹ค.


  • KeepAliveTime ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๊ด€๋ฆฌ์ž Command Prompt์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ <value>๋Š” 16์ง„์ˆ˜๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค (์˜ˆ: 120000๋Š” 0x1d4c0์ž…๋‹ˆ๋‹ค):

    reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ /t REG_DWORD /v KeepAliveTime /d <value>

    Windows ์‚ฌ์šฉ์ž๊ฐ€ Windows ์‹œ์Šคํ…œ์—์„œ MongoDB ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ํ‚ต์–ผ๋ผ์ด๋ธŒ ์„ค์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์•Œ์•„๋ณด๋ ค๋ฉด KeepAliveTime์— ๋Œ€ํ•œ Windows Server ํ…Œํฌ๋„ท ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. 600000 ๋ฐ€๋ฆฌ์ดˆ(10 ๋ถ„)๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ํ‚ต์–ผ๋ผ์ด๋ธŒ ๊ฐ’์€ mongod ๋ฐmongos์—์„œ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

MongoDB๋Š” VMware์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

VMware๋Š” ๋ฌผ๋ฆฌ์  ๋จธ์‹ ์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ƒ ๋จธ์‹ ์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„์ปค๋ฐ‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์˜ค๋ฒ„์ปค๋ฐ‹๋˜๋ฉด ํ•˜์ดํผ๋ฐ”์ด์ €๋Š” ๊ฐ€์ƒ ๋จธ์‹  ๊ฐ„์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์žฌํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. VMware์˜ ๋ฒŒ๋ฃฌ ๋“œ๋ผ์ด๋ฒ„(vmmemctl)๊ฐ€ ๊ฐ€์žฅ ๊ฐ€์น˜๊ฐ€ ๋‚ฎ์€ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ํŽ˜์ด์ง€๋ฅผ ํšŒ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

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

๋ฒŒ๋ฃฌ ๋“œ๋ผ์ด๋ฒ„ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ ์ปค๋ฐ‹ ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด MongoDB๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์— ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ ์–‘์„ ๋น„์ถ•ํ•ด ๋‘์„ธ์š”. ๊ฐ€์ƒ ๋จธ์‹ ์— ์ ์ ˆํ•œ ์–‘์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋น„์ถ•ํ•ด ๋‘๋ฉด ํ•˜์ดํผ๋ฐ”์ด์ €์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•  ๋•Œ ๋กœ์ปฌ ์šด์˜ ์ฒด์ œ์—์„œ ๋ฒŒ๋ฃฌ์ด ํŒฝ์ฐฝํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

VMware์˜ ์„ ํ˜ธ๋„ ๊ทœ์น™์„ ์„ค์ •ํ•˜์—ฌ ๊ฐ€์ƒ ๋จธ์‹ ์ด ํŠน์ • ESX/ESXi ํ˜ธ์ŠคํŠธ์— ์œ ์ง€๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ๋กœ ์ˆ˜๋™์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผ ํ•˜๊ณ  ๊ฐ€์ƒ ๋จธ์‹ ์˜ mongod ์ธ์Šคํ„ด์Šค๊ฐ€ ํ”„๋ผ์ด๋จธ๋ฆฌ์ธ ๊ฒฝ์šฐ, ๋จผ์ € ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ step down ํ•˜๊ณ , shut down the instanceํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

vMotion ๋ฐ VMKernel์— ๋Œ€ํ•œ ๋„คํŠธ์›Œํ‚น ๊ถŒ์žฅ์‚ฌํ•ญ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ๊ถŒ์žฅ์‚ฌํ•ญ์„ ๋”ฐ๋ฅด์ง€ ์•Š์œผ๋ฉด ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฐ ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ ๊ณ ๊ฐ€์šฉ์„ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MongoDB๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋ณต์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ๋ฅผ ๋ฐฐํฌํ•˜์—ฌ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๋…ธ๋“œ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MongoDB๋Š” KVM๊ณผ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

KVM์€ ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„์ปค๋ฐ‹์„ ์ง€์›ํ•˜์—ฌ ๊ฐ€์ƒ ๋จธ์‹ ์— ๋ฌผ๋ฆฌ์  ๋จธ์‹ ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์˜ค๋ฒ„์ปค๋ฐ‹๋˜๋ฉด ํ•˜์ดํผ๋ฐ”์ด์ €๋Š” ๊ฐ€์ƒ ๋จธ์‹  ๊ฐ„์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์žฌํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. KVM์˜ ๋ฒŒ๋ฃฌ ๋“œ๋ผ์ด๋ฒ„๋Š” ๊ฐ€์žฅ ๊ฐ€์น˜๊ฐ€ ๋‚ฎ์€ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ํŽ˜์ด์ง€๋ฅผ ํšŒ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

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

๋ฒŒ๋ฃฌ ๋“œ๋ผ์ด๋ฒ„ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ ์ปค๋ฐ‹ ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด MongoDB๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์— ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ ์–‘์„ ๋น„์ถ•ํ•ด ๋‘์„ธ์š”. ๊ฐ€์ƒ ๋จธ์‹ ์— ์ ์ ˆํ•œ ์–‘์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋น„์ถ•ํ•ด ๋‘๋ฉด ํ•˜์ดํผ๋ฐ”์ด์ €์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•  ๋•Œ ๋กœ์ปฌ ์šด์˜ ์ฒด์ œ์—์„œ ๋ฒŒ๋ฃฌ์ด ํŒฝ์ฐฝํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ฐธ๊ณ 

๋ฒ„์ „ 4.0๋ถ€ํ„ฐ MongoDB๋Š” ๋…๋ฆฝํ˜• ๋ฐ ๋ณต์ œ๋ณธ ์„ธํŠธ์— ๋Œ€ํ•œ ๋ฌด๋ฃŒ cloud ๋ชจ๋‹ˆํ„ฐ๋ง ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฌด๋ฃŒ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Linux์—์„œ๋Š” iostat ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋””์Šคํฌ I/O๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์ผ์œผํ‚ค๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์„œ๋ฒ„ ๋ถ€ํŒ… ์ดํ›„์˜ ์‹œ๊ฐ„์„ ๋‹ค๋ฃจ๋Š” ํ†ต๊ณ„๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋ ค๋ฉด iostat์„ ์‹คํ–‰ํ•  ๋•Œ ์‹œ๊ฐ„(์ดˆ)์„ ์ง€์ •ํ•˜์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ ๋ช…๋ น์€ ํ™•์žฅ ํ†ต๊ณ„์™€ ํ‘œ์‹œ๋œ ๊ฐ ๋ณด๊ณ ์„œ์˜ ์‹œ๊ฐ„์„ 1์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ(MB/s)๊ณผ ํ•จ๊ป˜ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

iostat -xmt 1

iostat์˜ ํ‚ค ํ•„๋“œ์ž…๋‹ˆ๋‹ค.

  • %util: ๋น ๋ฅธ ํ™•์ธ์— ๊ฐ€์žฅ ์œ ์šฉํ•œ ํ•„๋“œ๋กœ, ์žฅ์น˜/๋“œ๋ผ์ด๋ธŒ๊ฐ€ ์‚ฌ์šฉ ์ค‘์ธ ์‹œ๊ฐ„์˜ ๋ฐฑ๋ถ„์œจ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

  • avgrq-sz: ํ‰๊ท  ์š”์ฒญ ํฌ๊ธฐ. ์ด ๊ฐ’์˜ ์ˆซ์ž๊ฐ€ ์ž‘์„์ˆ˜๋ก ๋” ๋งŽ์€ ์ž„์˜ IO ์ž‘์—…์ด ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.

bwm-ng ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์ค„ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๊ธฐ๋ฐ˜ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ์˜์‹ฌ๋˜๋Š” ๊ฒฝ์šฐ bwm-ng๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง„๋‹จ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MongoDB database๋ฅผ ๋ฐฑ์—…ํ•˜๋ ค๋ฉด MongoDB ๋ฐฑ์—… ๋ฐฉ๋ฒ• ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋Œ์•„๊ฐ€๊ธฐ

๊ด€๋ฆฌ