๋ฌธ์„œ ๋ฉ”๋‰ด

๋ฌธ์„œ ํ™ˆ โ†’ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ โ†’ MongoDB ๋งค๋‰ด์–ผ

UNIX ulimit ์„ค์ •

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

  • ๋ฆฌ์†Œ์Šค ํ™œ์šฉ
  • ๋ฆฌ์†Œ์Šค ์ œํ•œ ๊ฒ€ํ†  ๋ฐ ์„ค์ •

Linux ๋ฐ macOS๋ฅผ ํฌํ•จํ•œ ๋Œ€๋ถ€๋ถ„์˜ UNIX ๊ณ„์—ด ์šด์˜ ์ฒด์ œ์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค๋ณ„ ๋ฐ ์‚ฌ์šฉ์ž๋ณ„๋กœ ์Šค๋ ˆ๋“œ, ํŒŒ์ผ, ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๋“ฑ์˜ ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ์„ ์ œํ•œํ•˜๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ "ulimit"๋Š” ๋‹จ์ผ ์‚ฌ์šฉ์ž๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ด๋Ÿฌํ•œ ์ œํ•œ์˜ ๊ธฐ๋ณธ๊ฐ’์ด ๋‚ฎ์•„ ์ •์ƒ์ ์ธ MongoDB ์ž‘์—… ๊ณผ์ •์—์„œ ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

mongod { 2}์™€ ๋Š” ๊ฐ๊ฐ ์Šค๋ ˆ๋“œ์™€ ํŒŒ์ผ ์„ค๋ช…์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ์„ ์ถ”์ ํ•˜๊ณ  ๋‚ด๋ถ€ ์ž‘์—…์„ mongos ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ์„น์…˜์—์„œ๋Š” MongoDB์˜ ์ผ๋ฐ˜์ ์ธ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ํŒจํ„ด์— ๋Œ€ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ˆ˜์น˜๋ฅผ ๋ฐฐํฌ ๋ฐ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์‹ค์ œ ์ •๋ณด์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ƒ์ ์ธ ulimit ์„ค์ •์„ ๊ฒฐ์ •ํ•˜์‹ญ์‹œ์˜ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  mongod ๋ฐ mongos ์ธ์Šคํ„ด์Šค์ž…๋‹ˆ๋‹ค.

  • ๋‘ ๊ฐœ์˜ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ์™€ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋กœ ๋“ค์–ด์˜ค๋Š” ๊ฐ ์—ฐ๊ฒฐ์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋Š” ๊ฐ ๋‚ด๋ถ€ ์Šค๋ ˆ๋“œ ๋˜๋Š” pthread๋ฅผ ์‹œ์Šคํ…œ ํ”„๋กœ์„ธ์Šค๋กœ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

  • mongod ์ธ์Šคํ„ด์Šค์—์„œ ์‚ฌ์šฉ ์ค‘์ธ ๊ฐ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ๋Œ€ํ•ด ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ 1๊ฐœ์ž…๋‹ˆ๋‹ค.

  • storage.journal.enabled ๊ฐ€ true ์ผ ๋•Œmongod์ธ์Šคํ„ด์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ ์ €๋„ ํŒŒ์ผ์— ๋Œ€ํ•œ 1๊ฐœ์˜ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ์ž…๋‹ˆ๋‹ค.

  • ๋ณต์ œ๋ณธ ์„ธํŠธ์—์„œ ๊ฐ mongod ์€ ์„ธํŠธ์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ๋ฉค๋ฒ„์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

mongod ๋Š” TTL ์ˆ˜์ง‘์„ ๋น„๋กฏํ•œ ์—ฌ๋Ÿฌ ๋‚ด๋ถ€ ํ”„๋กœ์„ธ์Šค์— ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด ํ”„๋กœ์„ธ์Šค์—๋Š” ์†Œ์ˆ˜์˜ ์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2}๋Š” ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์„ ์œ„ํ•œ ์Šค๋ ˆ๋“œ ๋ฐ ํŒŒ์ผ ์„ค๋ช…์ž ์™ธ์—๋„mongos ๋ชจ๋“  ๊ตฌ์„ฑ ์„œ๋ฒ„ ๋ฐ ๋ชจ๋“  ์ƒค๋“œ(๋ชจ๋“  ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๋ชจ๋“  ๊ตฌ์„ฑ์›์ด ํฌํ•จ๋จ)์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

mongos ์˜ ๊ฒฝ์šฐ ๋‹ค์Œ ๋™์ž‘์„ ๊ณ ๋ คํ•˜์„ธ์š”.

  • mongos{2} ์ธ์Šคํ„ด์Šค๋Š” ๊ฐ ์ƒค๋“œ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ํ’€์„ ์œ ์ง€ํ•˜์—ฌ mongos๊ฐ€ ์—ฐ๊ฒฐ์„ ์žฌ์‚ฌ์šฉํ•˜๊ณ  ์ƒˆ ์—ฐ๊ฒฐ์„ ๋งŒ๋“ค ํ•„์š” ์—†์ด ์š”์ฒญ์„ ์‹ ์†ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

  • 2} ๋Ÿฐํƒ€์ž„ ์˜ต์…˜์„ net.maxIncomingConnections ์‚ฌ์šฉํ•˜์—ฌ ๋“ค์–ด์˜ค๋Š” ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋“ค์–ด์˜ค๋Š” ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋ฉด mongos๊ฐ€ mongod ์ธ์Šคํ„ด์Šค์— ๋„ˆ๋ฌด ๋งŽ์€ ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•˜๋Š” ์บ์Šค์ผ€์ด๋“œ ํšจ๊ณผ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์™€ ๊ฐ™์ด ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ์—์„œ ulimit ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ ์ œํ•œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ ulimit -a
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-m: resident set size (kbytes) unlimited
-u: processes 64000
-n: file descriptors 64000
-l: locked-in-memory size (kb) unlimited
-v: address space (kb) unlimited
-x: file locks unlimited
-i: pending signals 192276
-q: bytes in POSIX msg queues 819200
-e: max nice 30
-r: max rt priority 65
-N 15: unlimited

ulimit ๋‹ค์–‘ํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ์‚ฌ์šฉ์ž ๋ณ„ ์ œํ•œ ์‚ฌํ•ญ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ mongod ์ธ์Šคํ„ด์Šค๊ฐ€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์—ฌ๋Ÿฌ mongod ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ ์ค‘์ธ ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๊ฒฝํ•ฉ์ด ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ processes ๊ฐ’(์˜ˆ: -u)์€ ๋ณ„๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค์™€ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค ์Šค๋ ˆ๋“œ์˜ ์ˆ˜๋ฅผ ํ•ฉํ•œ ๊ฐ’์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

Linux์—์„œ๋Š” ๋‹ค์Œ ํ˜•์‹์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ulimit ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ulimit -n <value>

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

"์†Œํ”„ํŠธ" ulimit ์ด ๋‚ฎ์œผ๋ฉด ์—ฐ๊ฒฐ ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์ง€๋ฉด can't create new thread, closing connection ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ๋‘ ulimit ๊ฐ’์„ ๋ชจ๋‘ ๊ถŒ์žฅ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

ulimit -H ์€ ์ œํ•œ ๊ฐ’์„ ์ˆ˜์ •ํ•  ๋•Œ -S ๋˜๋Š” ์ˆ˜์ •์ž๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ 'ํ•˜๋“œ(hard)' ๋ฐ '์†Œํ”„ํŠธ(soft)' ๊ฐ’์„ ๋ชจ๋‘ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ Linux ๋ฐฐํฌํŒ์—์„œ๋Š” ulimit -a ์ถœ๋ ฅ์˜ ๊ฐ€๋Šฅํ•œ ๊ฐ’์„ -n ์˜ต์…˜์œผ๋กœ ๋Œ€์ฒดํ•˜์—ฌ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ulimit ์„ค์ •์„ ๋ณ€๊ฒฝํ•œ ํ›„์—๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ์ˆ˜์ •๋œ ์„ค์ •์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Linux์—์„œ๋Š” /proc ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ํ˜„์žฌ ์ œํ•œ ์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ๊ตฌ์„ฑ ๋ฐ ๊ธฐ๋ณธ ์„ค์ •์— ๋”ฐ๋ผ ulimit ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ ์ œํ•œ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์‹œ์Šคํ…œ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ํ›„ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฐฐํฌ ๋ฐ ์šด์˜ ์ฒด์ œ ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์ผ๋ฐ˜์ ์œผ๋กœ ulimit ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋Š” systemctl์„ ์‚ฌ์šฉํ•˜์—ฌ mongod์„ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

systemctl start mongod.service

mongod 3}์„ ์‚ฌ์šฉํ•˜์—ฌ systemctl ์„systemd ์‹œ์ž‘ํ•˜์ง€ ์•Š์œผ๋ฉด ์ด ulimit ์„ค์ • ์ค‘ ์ผ๋ถ€๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๋ช…๋ น์— ํ‘œ์‹œ๋œ ๋Œ€๋กœ mongod์„ ์‹œ์ž‘ํ•˜๋ฉด ์‚ฌ์šฉ์ž ์Šฌ๋ผ์ด์Šค(์˜ˆ: user-1000.slice) systemd ์„ค์ •์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

mongod --config ~/mongod.conf

์ฐธ๊ณ 

systemd 0} ์‚ฌ์šฉ์ž ์Šฌ๋ผ์ด์Šค๋Š” ์‚ฌ์šฉ์ž์˜ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

brew ์„ค์น˜ ๋ฐฉ๋ฒ• ์„ ์‚ฌ์šฉํ•˜์—ฌ MongoDB Community๋ฅผ ์„ค์น˜ํ•œ macOS ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ brew services ๋ฅผ ํ†ตํ•ด MongoDB๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ๊ถŒ์žฅ ์—ด๋ฆฐ ํŒŒ์ผ ๊ฐ’์ด ์ž๋™์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ ์€ brew๋กœ MongoDB ์‹คํ–‰ ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

MongoDB Enterprise๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ TGZ ์„ค์น˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” macOS ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ launchctl limit ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ถŒ์žฅ ๊ฐ’ ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์‹คํ–‰ ์ค‘์ธ ์‹œ์Šคํ…œ์—์„œ ์‹œ์Šคํ…œ ์ œํ•œ์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ •ํ™•ํ•œ ์ ˆ์ฐจ๋Š” ์šด์˜ ์ฒด์ œ ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Red Hat Enterprise Linux ๋ฐ CentOS 6 ๋ฐ 7์€ ulimit ์„ค์ •์„ ์žฌ์ •์˜ํ•˜๋Š” ๋ณ„๋„์˜ ์ตœ๋Œ€ ํ”„๋กœ์„ธ์Šค ์ œํ•œ์ธ nproc๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ ๋ฒ„์ „์— ๋”ฐ๋ผ ๋‹ค์Œ ๊ตฌ์„ฑ ํŒŒ์ผ์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „
๊ฐ’
file
RHEL / CentOS 7
4096
/etc/security/limits.d/20-nproc.conf
RHEL / CentOS 6
1024
/etc/security/limits.d/90-nproc.conf

์ด๋Ÿฌํ•œ ๋ฒ„์ „์— ๋Œ€ํ•ด nproc ๊ฐ’์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ์ƒˆ soft nproc ๋ฐ hard nproc ๊ฐ’์œผ๋กœ /etc/security/limits.d/99-mongodb-nproc.conf ๋ผ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ํ”„๋กœ์„ธ์Šค ์ œํ•œ์„ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค. ๊ถŒ์žฅ ๊ฐ’์€ ๊ถŒ์žฅ ulimit ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

RHEL/CentOS 8์—์„œ๋Š” ๋” ์ด์ƒ ๋ณ„๋„์˜ nproc ๊ฐ’์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 1}ulimit ๋ช…๋ น์€ RHEL/CentOS 8์—์„œ ํ•„์š”ํ•œ ์ตœ๋Œ€ ํ”„๋กœ์„ธ์Šค ๊ฐ’์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐํฌ๋งˆ๋‹ค ๊ณ ์œ ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ์„ค์ •์ด ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋‹ค์Œ ์ž„๊ณ„๊ฐ’๊ณผ ์„ค์ •์€ mongod ๋ฐ mongos ๋ฐฐํฌ์— ํŠนํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

  • -f (ํŒŒ์ผ ํฌ๊ธฐ): unlimited

  • -t (CPU ์‹œ๊ฐ„): unlimited

  • -v (๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ): unlimited [1]

  • -l (๊ณ ์ • ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ): unlimited

  • -n (์—ด๋ฆฐ ํŒŒ์ผ): 64000

  • -m (๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ): unlimited [1] [2]

  • -u (ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ): 64000

6} ์„ค์ •์„ ๋ณ€๊ฒฝํ•œ ํ›„์—๋Š” ํ•ญ์ƒ ๋ฐ ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ mongod mongos ์ ์šฉํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์„ธ์š”.ulimit

  • MongoDB 4.2๋ถ€ํ„ฐ mongod ๋˜๋Š” mongos ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ˆ˜์‹  ์—ฐ๊ฒฐ์—๋Š” ๋‘ ๊ฐœ์˜ ํŒŒ์ผ ์„ค๋ช…์ž๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „์˜ MongoDB์—์„œ๋Š” ๋“ค์–ด์˜ค๋Š” ์—ฐ๊ฒฐ์— ํ•˜๋‚˜์˜ ํŒŒ์ผ ์„ค๋ช…์ž๊ฐ€ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

    MongoDB 4.0์—์„œ 4.2๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ์ „์— ์—ด๋ฆฐ ํŒŒ์ผ ulimit ์„ค์ • (-n) ์˜ ๊ฐ’์„ ๋Š˜๋ ค์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • macOS ํ”Œ๋žซํผ์˜ ๊ฒฝ์šฐ ๊ถŒ์žฅ๋˜๋Š” ํ”„๋กœ์„ธ์Šค ์ œํ•œ์€ 2500์ด๋ฉฐ, ์ด๋Š” ์ด ํ”Œ๋žซํผ์— ๋Œ€ํ•ด ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๊ฐ’์ž…๋‹ˆ๋‹ค.

Upstart๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Linux ๋ฐฐํฌ์˜ ๊ฒฝ์šฐ ๋ฐ/๋˜๋Š” mongos ์ธ์Šคํ„ด์Šค๋ฅผ Upstart ์„œ๋น„์Šค๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋น„์Šค ์Šคํฌ๋ฆฝํŠธ ๋‚ด์—์„œ ์ œํ•œ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.mongod limit ์Šคํƒ ์ž ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .

๋‹ค์Œ ์˜ˆ์ œ์™€ ๊ฐ™์ด ๊ถŒ์žฅ ulimit ์„ค์ • ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

limit fsize unlimited unlimited # (file size)
limit cpu unlimited unlimited # (cpu time)
limit as unlimited unlimited # (virtual memory size)
limit memlock unlimited unlimited # (locked-in-memory size)
limit nofile 64000 64000 # (open files)
limit nproc 64000 64000 # (processes/threads)

๊ฐ limit ์—ฐ์€ ์ง€์ •๋œ ์ฒซ ๋ฒˆ์งธ ๊ฐ’์— "์†Œํ”„ํŠธ" ์ œํ•œ์„, ๋‘ ๋ฒˆ์งธ ๊ฐ’์— "ํ•˜๋“œ" ์ œํ•œ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

limit ์Šคํƒ ์ž๋ฅผ ๋ณ€๊ฒฝํ•œ ํ›„ ๋‹ค์Œ ์–‘์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์šฉ๋˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

restart <service name>

2} ๋ฐ/๋˜๋Š” mongos ์ธ์Šคํ„ด์Šค๋ฅผ mongod ์„œ๋น„์Šค๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น systemd [Service] ์„œ๋น„์Šค ํŒŒ์ผ์˜ ์„น์…˜ ๋‚ด์—์„œ ์ œํ•œ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค ํŒŒ์ผ์˜ ์œ„์น˜๋Š” /etc/systemd/system/<process-name>.service์ž…๋‹ˆ๋‹ค.

๋ฆฌ์†Œ์Šค ์ œํ•œ ์ง€์‹œ๋ฌธ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ œํ•œ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .

๋‹ค์Œ ์˜ˆ์ œ์™€ ๊ฐ™์ด ๊ถŒ์žฅ ulimit ์„ค์ • ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

[Service]
# Other directives omitted
# (file size)
LimitFSIZE=infinity
# (cpu time)
LimitCPU=infinity
# (virtual memory size)
LimitAS=infinity
# (locked-in-memory size)
LimitMEMLOCK=infinity
# (open files)
LimitNOFILE=64000
# (processes/threads)
LimitNPROC=64000

๊ฐ systemd ์ œํ•œ ์ง€์นจ์€ "ํ•˜๋“œ" ๋ฐ "์†Œํ”„ํŠธ" ์ œํ•œ์„ ๋ชจ๋‘ ์ง€์ •๋œ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

limit ์Šคํƒ ์ž๋ฅผ ๋ณ€๊ฒฝํ•œ ํ›„ ๋‹ค์Œ ์–‘์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์šฉ๋˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

systemctl restart <service name>

์ฐธ๊ณ 

0}yum ๋˜๋Š” ๊ณผ ๊ฐ™์€ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ํ†ตํ•ด MongoDB๋ฅผ ์„ค์น˜ํ•œ ๊ฒฝ์šฐ apt ์„ค์น˜์˜ ์ผ๋ถ€๋กœ ์„ค์น˜๋œ ์„œ๋น„์Šค ํŒŒ์ผ์— ์ด๋ฏธ ์ด๋Ÿฌํ•œ ๊ทนํ•œ ๊ฐ’์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

์ด ์„น์…˜์€ Linux ์šด์˜ ์ฒด์ œ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

0} ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ์— ์œ„์น˜ํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฐœ์ฒด์— ํ”„๋กœ์„ธ์Šค๋ณ„ ์ œํ•œ์„ /proc /proc/<pid>/limits ์ €์žฅํ•ฉ๋‹ˆ๋‹ค(์—ฌ๊ธฐ์„œ <pid> ๋Š” ํ”„๋กœ์„ธ์Šค์˜ PID ๋˜๋Š” ํ”„๋กœ์„ธ์Šค ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค). ๋‹ค์Œ bash ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋œ ์ด๋ฆ„์˜ ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ limits ๊ฐ์ฒด์˜ ๋‚ด์šฉ์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

return-limits(){
for process in $@; do
process_pids=`ps -C $process -o pid --no-headers | cut -d " " -f 2`
if [ -z $@ ]; then
echo "[no $process running]"
else
for pid in $process_pids; do
echo "[$process #$pid -- limits]"
cat /proc/$pid/limits
done
fi
done
}

์ด ํ•จ์ˆ˜๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ํ˜„์žฌ ์…ธ ์„ธ์…˜์— ๋ถ™์—ฌ๋„ฃ๊ฑฐ๋‚˜ ์Šคํฌ๋ฆฝํŠธ์˜ ์ผ๋ถ€๋กœ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํ˜ธ์ถœ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

return-limits mongod
return-limits mongos
return-limits mongod mongos
[1](1, 2) MongoDB๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๋˜๋Š” ์ƒ์ฃผ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ œํ•œํ•˜๋ฉด ์šด์˜ ์ฒด์ œ์—์„œ ์ถ”๊ฐ€ ํ• ๋‹น ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.
[2] ulimit ์— ๋Œ€ํ•œ -m ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ์ปค๋„ ๋ฒ„์ „์ด 2.4.30๋ณด๋‹ค ์ตœ์‹ ์ธ Linux ์‹œ์Šคํ…œ์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒฝ์šฐ -m ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ†ย Health Manager๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒค๋“œ ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ ๊ด€๋ฆฌ