FAQ: ์์ฒด ๊ด๋ฆฌํ MongoDB ์ง๋จ
์ด ํ์ด์ง์ ๋ด์ฉ
- ์๊ธฐ์น ์๊ฒ ์คํ์ด ์ค์ง๋
mongod
ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๋ ์ด๋์์ ์ฐพ์ ์ ์๋์? - TCP
keepalive
์๊ฐ์ด MongoDB deployment์ ์ํฅ์ ๋ฏธ์น๋์? - TCP ์ฌ์ ์ก ์๊ฐ ์ด๊ณผ๊ฐ MongoDB deployment์ ์ํฅ์ ๋ฏธ์น๋์?
- MongoDB๊ฐ " ์ฐ๊ฒฐ ํ์ฉ " ์ด๋ฒคํธ๋ฅผ ๊ทธ๋ ๊ฒ ๋ง์ด ๊ธฐ๋กํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
- MongoDB๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋๊ตฌ๋ ๋ฌด์์ ๋๊น?
- WiredTiger ์คํ ๋ฆฌ์ง ์์ง์ ๋ฉ๋ชจ๋ฆฌ ์ง๋จ
- ์ค๋ฉ๋ ํด๋ฌ์คํฐ ์ง๋จ
์ด ๋ฌธ์์์๋ ์ผ๋ฐ์ ์ธ ์ง๋จ ์ง๋ฌธ๊ณผ ๋ฌธ์ ์ ๋ํ ๋ต๋ณ์ ์ ๊ณตํฉ๋๋ค.
์ํ๋ ๋ต๋ณ์ ์ฐพ์ง ๋ชปํ ๊ฒฝ์ฐ FAQ์ ์ ์ฒด ๋ชฉ๋ก์ ํ์ธํ๊ฑฐ๋ MongoDB Community์ ์ง๋ฌธ์ ๊ฒ์ํ์ธ์.
์๊ธฐ์น ์๊ฒ ์คํ์ด ์ค์ง๋ mongod
ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๋ ์ด๋์์ ์ฐพ์ ์ ์๋์?
mongod
๊ฐ UNIX ๋๋ UNIX ๊ธฐ๋ฐ ํ๋ซํผ์์ ์๊ธฐ์น ์๊ฒ ์ข
๋ฃ๋๊ณ mongod
๊ฐ ์ข
๋ฃ ๋๋ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ ์์คํ
๋ก๊ทธ์์ MongoDB์ ๊ด๋ จ๋ ๋ฉ์์ง๋ฅผ ํ์ธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, /var/log/messages
์ ์๋ ๋ก๊ทธ์ ๊ฒฝ์ฐ ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํฉ๋๋ค.
sudo grep mongod /var/log/messages sudo grep score /var/log/messages
TCP keepalive
์๊ฐ์ด MongoDB deployment์ ์ํฅ์ ๋ฏธ์น๋์?
ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ๋๋ ๋ณต์ ๋ณธ ์ธํธ์ ๋ฉค๋ฒ ๊ฐ ํต์ ์์ ๋คํธ์ํฌ ์๊ฐ ์ด๊ณผ ๋๋ ์์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ, ์ํฅ์ ๋ฐ๋ ์์คํ ์ TCP ํต์ผ๋ผ์ด๋ธ ๊ฐ์ ํ์ธํฉ๋๋ค.
๋๋ถ๋ถ์ ์ด์ ์ฒด์ ์์๋ ์ด ๊ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก 7200
์ด(2์๊ฐ)๋ก ์ค์ ํฉ๋๋ค. MongoDB์ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก ํต์ผ๋ผ์ด๋ธ ๊ฐ์ด 120
์ด (2๋ถ) ์ ๋๋ก ์งง์์๋ก ๋ ๋์ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฝํํ ์ ์์ต๋๋ค.
MongoDB deployment์์ ํต์ผ๋ผ์ด๋ธ ๊ด๋ จ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ, ์ํฅ์ ๋ฐ๋ ๋ชจ๋ ์์คํ
์์ ํต์ผ๋ผ์ด๋ธ ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ mongod
๋๋ mongos
ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ๋ชจ๋ ๋จธ์ ๊ณผ MongoDB์ ์ฐ๊ฒฐํ๋ ํด๋ผ์ด์ธํธ ํ๋ก์ธ์ค๋ฅผ ํธ์คํ
ํ๋ ๋ชจ๋ ๋จธ์ ์ด ํฌํจ๋ฉ๋๋ค.
TCP ํต์ผ๋ผ์ด๋ธ ๊ฐ ์กฐ์ :
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
์์ ๋ฌด์๋ฉ๋๋ค.
macOS์์ ํต์ผ๋ผ์ด๋ธ ์ค์ ์ ๋ณด๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
sysctl net.inet.tcp.keepidle ๊ฐ์ ๋ฐ๋ฆฌ์ด ๋จ์๋ก ์ธก์ ๋ฉ๋๋ค.
net.inet.tcp.keepidle
๊ฐ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ฐ๋ฆฌ์ด ๋จ์๋ก <value> ๋ฅผ ์ ๊ณตํ๋ฉด ๋ฉ๋๋ค.sudo sysctl net.inet.tcp.keepidle=<value> ์ด ์์ ์ ์์คํ ์ฌ๋ถํ ์ ์ง์๋์ง ์์ผ๋ฉฐ, ์์คํ ์ฌ๋ถํ ์๋ง๋ค ์ค์ ํ๋ค ํด์ผ ํฉ๋๋ค. ์ด ๊ฐ์ ์๊ตฌ์ ์ผ๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ์ ์ด์ ์ฒด์ ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ธ์.
600000
๋ฐ๋ฆฌ์ด(10 ๋ถ) ์ด์์ ํต์ผ๋ผ์ด๋ธ ๊ฐ์mongod
๋ฐmongos
์์ ๋ฌด์๋ฉ๋๋ค.์ฐธ๊ณ
macOS 10.15 ์ ๊ฒฝ์ฐ Catalina, Apple์์๋ ๋ ์ด์
net.inet.tcp.keepidle
์ต์ ๊ตฌ์ฑ์ ํ์ฉํ์ง ์์ต๋๋ค.
์์คํ
์ ์ฒด์ ์ ํต์ผ๋ผ์ด๋ธ ์ค์ ์ ์ ์ฉํ๋ ค๋ฉด mongod
๋ฐ mongos
ํ๋ก์ธ์ค๋ฅผ ๋ค์ ์์ํด์ผ ํฉ๋๋ค.
TCP ์ฌ์ ์ก ์๊ฐ ์ด๊ณผ๊ฐ MongoDB deployment์ ์ํฅ์ ๋ฏธ์น๋์?
ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ๋๋ ๋ณต์ ๋ณธ ์ธํธ์ ๋ฉค๋ฒ ๊ฐ์ ๋คํธ์ํฌ ์๊ฐ ์ด๊ณผ ๋๋ ์์ผ ์ค๋ฅ์ ํจ๊ป ๊ธด ์ค๋จ(2๋ถ ์ด์ ์ค๋จ)์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์ํฅ์ ๋ฐ๋ ์์คํ
์ ๋ํด tcp_retries2
๊ฐ์ ํ์ธํฉ๋๋ค.
๋๋ถ๋ถ์ Linux ์ด์ ์ฒด์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด ๊ฐ์ 15
์ผ๋ก, Windows๋ 5
๋ก ์ค์ ํฉ๋๋ค. MongoDB์ ๊ฒฝ์ฐ 5
(12์ด) ์ดํ ์ ๋์ ๋ฎ์ tcp_retries2
๊ฐ์ ์ฌ์ฉํ๋ฉด ๋ ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
MongoDB deployment์์ TCP ์ฌ์ ์ก ์๊ฐ ์ด๊ณผ ๊ด๋ จ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์ํฅ์ ๋ฐ๋ ๋ชจ๋ ์์คํ
์ ๋ํด
tcp_retries2
๊ฐ(Windows์ ๊ฒฝ์ฐ TcpMaxDataRetransmission
)์ ๋ณ๊ฒฝํฉ๋๋ค. ์ฌ๊ธฐ์๋ mongod
๋๋ mongos
ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ๋ชจ๋ ๋จธ์ ๊ณผ MongoDB์ ์ฐ๊ฒฐํ๋ ํด๋ผ์ด์ธํธ ํ๋ก์ธ์ค๋ฅผ ํธ์คํ
ํ๋ ๋ชจ๋ ๋จธ์ ์ด ํฌํจ๋ฉ๋๋ค.
TCP ์ฌ์ ์ก ์๊ฐ ์ด๊ณผ ์กฐ์
๋๋ถ๋ถ์ Linux ์ด์ ์ฒด์ ์์๋ net.ipv4.tcp_retries2
sysctl ์ค์ ์ ์กฐ์ ํ์ฌ TCP ์ฌ์ ์ก์ ์ ์ดํฉ๋๋ค.
์ฐธ๊ณ
์ค์ ์ด๋ฆ์๋ ipv4
์ด(๊ฐ) ํฌํจ๋์ด ์์ง๋ง tcp_retries2
์ค์ ์ IPv4 ๋ฐ IPv6 ๋ชจ๋์ ์ ์ฉ๋ฉ๋๋ค.
ํ์ฌ ์ค์ ์ ๋ณด๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด
sysctl
๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.sysctl net.ipv4.tcp_retries2 net.ipv4.tcp_retries = 15 ๋ฐํ์์์์
tcp_retries2
์ค์ ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ดsysctl
๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.sysctl -w net.ipv4.tcp_retries2=8 ๋ณ๊ฒฝ ์ฌํญ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฉํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ ํ์ผ์ ์์ ํฉ๋๋ค.
์ํ๋ ํ ์คํธ ํธ์ง๊ธฐ์์
/etc/sysctl.conf
์ ์ฝ๋๋ค.vi /etc/sysctl.conf ๋ค์๊ณผ ๊ฐ์ด
net.ipv4.tcp_retries2
์ค์ ์ ๊ตฌ์ฑํฉ๋๋ค.net.ipv4.tcp_retries2 = 8 ์์คํ ์ ๋ค์ ์์ํฉ๋๋ค.
์ด์ ์์คํ ์์ ์
tcp_retries2
์ค์ ์ ์ฌ์ฉํฉ๋๋ค.
Windows์์๋ TcpMaxDataRetransmissions
๋งค๊ฐ๋ณ์๋ฅผ ์กฐ์ ํ์ฌ TCP ์ฌ์ ์ก์ ์ ์ดํฉ๋๋ค.
Windows ์์
TcpMaxDataRetransmissions
์ค์ ์ ๋ณด๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.reg query HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v TcpMaxDataRetransmissions ๊ธฐ๋ณธ์ ์ผ๋ก ๋งค๊ฐ๋ณ์๋ ์ค์ ๋์ง ์์ต๋๋ค. ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ๋๋ ์์คํ ๊ธฐ๋ณธ๊ฐ์
5
๋ฒ ์ฌ์๋์ ๋๋ค.TcpMaxDataRetransmissions
๊ฐ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ๊ด๋ฆฌ์ Command Prompt ์์ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ๋ฉฐ, ์ฌ๊ธฐ์<value>
๋ ์ ์์ ๋๋ค.reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ /t REG_DWORD /v TcpMaxDataRetransmission /d <value>
MongoDB๊ฐ " ์ฐ๊ฒฐ ํ์ฉ " ์ด๋ฒคํธ๋ฅผ ๊ทธ๋ ๊ฒ ๋ง์ด ๊ธฐ๋กํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
MongoDB ๋ก๊ทธ์ ๋งค์ฐ ๋ง์ ์์ ์ฐ๊ฒฐ ๋ฐ ์ฌ์ฐ๊ฒฐ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด ํด๋ผ์ด์ธํธ๊ฐ MongoDB server์ ์์ฃผ ์ฐ๊ฒฐํ๊ณ ์ฐ๊ฒฐ์ ๋๋ ๊ฒ์ ๋๋ค. ์ด๋ CGI์ ๊ฐ์ด ์์ฒญ ํ๋ง์ ์ฌ์ฉํ์ง ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์์ ์ธ ๋์์ ๋๋ค. FastCGI, Apache ๋ชจ๋ ๋๋ ๋ค๋ฅธ ์ข ๋ฅ์ ์๊ตฌ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ ์ค๋ฒํค๋๋ฅผ ์ค์ด๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด๋ฌํ ์ฐ๊ฒฐ์ด ์ฑ๋ฅ์ ์ํฅ์ ์ฃผ์ง ์๋๋ค๋ฉด ๋ฐํ์ quiet
์ต์
๋๋ ๋ช
๋ น์ค ์ต์
--quiet
์(๋ฅผ) ์ฌ์ฉํ์ฌ ๋ก๊ทธ์์ ์ด๋ฌํ ๋ฉ์์ง๋ฅผ ํ์ํ์ง ์๊ฒ ํ ์ ์์ต๋๋ค.
MongoDB๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋๊ตฌ๋ ๋ฌด์์ ๋๊น?
MongoDB Cloud Manager ์ MongoDB Enterprise Advanced ์์ ์ฌ์ฉํ ์ ์๋ ์จํ๋ ๋ฏธ์ค ์๋ฃจ์ MongoDB Ops Manager ์๋ ์คํ MongoDB ๋ฐฐํฌ์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๊ฐํ ๋ฐ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ณตํ๋ ๋ชจ๋ํฐ๋ง ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ MongoDB Cloud Manager ๋ฌธ์ ๋ฐ Ops Manager ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
ํ์ฌ ๋๊ตฌ์ ์ ์ฒด ๋ชฉ๋ก์ ์์ฒด ๊ด๋ฆฌํ MongoDB ๋ฐฐํฌ ๋ชจ๋ํฐ๋ง ์ค๋ช ์์ ์ผ๋ถ๋ก ํ์ธํ ์ ์์ต๋๋ค.
WiredTiger ์คํ ๋ฆฌ์ง ์์ง์ ๋ฉ๋ชจ๋ฆฌ ์ง๋จ
์์ ์ธํธ ํฌ๊ธฐ๊ฐ RAM์ ๊ผญ ๋ง์์ผ ํ๋์?
No.
์บ์์ ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ ๊ณต๊ฐ์ด ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ 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
ํ๋์๋ ์บ์ ๋ฐ ์ ๊ฑฐ์ ๋ํ ์ ๋ณด๊ฐ ๋ค์ด ์์ต๋๋ค.
... "wiredTiger" : { ... "cache" : { "tracked dirty bytes in the cache" : <num>, "bytes currently in the cache" : <num>, "maximum bytes configured" : <num>, "bytes read into cache" :<num>, "bytes written from cache" : <num>, "pages evicted by application threads" : <num>, "checkpoint blocked page eviction" : <num>, "unmodified pages evicted" : <num>, "page split during eviction deepened the tree" : <num>, "modified pages evicted" : <num>, "pages selected for eviction unable to be evicted" : <num>, "pages evicted because they exceeded the in-memory maximum" : <num>,, "pages evicted because they had chains of deleted items" : <num>, "failed eviction of pages that exceeded the in-memory maximum" : <num>, "hazard pointer blocked page eviction" : <num>, "internal pages evicted" : <num>, "maximum page size at eviction" : <num>, "eviction server candidate queue empty when topping up" : <num>, "eviction server candidate queue not empty when topping up" : <num>, "eviction server evicting pages" : <num>, "eviction server populating queue, but not evicting pages" : <num>, "eviction server unable to reach eviction goal" : <num>, "pages split during eviction" : <num>, "pages walked for eviction" : <num>, "eviction worker thread evicting pages" : <num>, "in-memory page splits" : <num>, "percentage overhead" : <num>, "tracked dirty pages in the cache" : <num>, "pages currently held in the cache" : <num>, "pages read into cache" : <num>, "pages written from cache" : <num>, }, ...
wiredTiger.cache.bytes currently in the cache
๋ฐ wiredTiger.cache.tracked dirty bytes in the cache
๋ฑ์ ์ผ๋ถ ํค ์บ์ ๋ฐ ์ ๊ฑฐ ํต๊ณ์ ๋ํ ์ค๋ช
์ wiredTiger.cache
๋ฅผ ์ฐธ์กฐํ์ธ์.
์์ด์ด๋ํ์ด๊ฑฐ ๋ด๋ถ ์บ์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ ค๋ฉด storage.wiredTiger.engineConfig.cacheSizeGB
๋ฐ --wiredTigerCacheSizeGB
๋ฅผ ์ฐธ์กฐํ์ธ์. WiredTiger ๋ด๋ถ ์บ์ ํฌ๊ธฐ๋ฅผ ๊ธฐ๋ณธ๊ฐ ์ด์์ผ๋ก ๋๋ฆฌ์ง ๋ง์ธ์.
์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ RAM ์ฉ๋์ ์ด๋ป๊ฒ ๊ณ์ฐํ๋์?
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
ํ๋๋ฅผ ์ฐธ์กฐํ์ธ์.
์ค๋ฉ๋ ํด๋ฌ์คํฐ ์ง๋จ
์ฑ๊ณต์ ์ธ ์ค๋ฉ๋ ํด๋ฌ์คํฐ๋ฅผ ์ ์งํ๋ ๋ฐ ๊ฐ์ฅ ์ค์ํ ๋ ๊ฐ์ง ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ดํ์ ์ค๋ ํค๋ ๋ณ๊ฒฝํ ์ ์์ง๋ง, ํ์ฅ์ฑ ๋ฐ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํผํ๋ ค๋ฉด ์ค๋ ํค ์ ํ์ ์ ์คํ๊ฒ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํ๋ก๋์ ํ๊ฒฝ์์ ๋ฐ์ํ ์ ์๋ ๊ตฌ์ฒด์ ์ธ ๋ฌธ์ ์ ๋ํด์๋ ๊ณ์ ์ฝ์ด๋ณด์ธ์.
์๋ก์ด ์ค๋ฉ๋ ํด๋ฌ์คํฐ์์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ํ๋์ ์ค๋์ ๋จ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
์ค๋ฉ์ด ๊ฐ๋ฅํ๋ ค๋ฉด ํด๋ฌ์คํฐ์ ์ถฉ๋ถํ ๋ฐ์ดํฐ๊ฐ ์์ด์ผ ํฉ๋๋ค. ์ค๋ฉ์ ๊ฐ ์ค๋์ ์ฒญํฌ ์๊ฐ ๊ฑฐ์ ๊ฐ์ ๋๊น์ง ์ค๋ ๊ฐ์ ์ฒญํฌ๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค.
๊ธฐ๋ณธ ์ฒญํฌ ํฌ๊ธฐ๋ 128MB์ ๋๋ค. ํด๋ฌ์คํฐ์ ์ฒญํฌ ๋ถ๊ท ํ์ด ๋ง์ด๊ทธ๋ ์ด์ ์๊ณ๊ฐ์ ์ด๊ณผํ ๋๊น์ง MongoDB๋ ๋ง์ด๊ทธ๋ ์ด์ ์ ์์ํ์ง ์์ต๋๋ค. ์ด ๋์์ ํด๋ฌ์คํฐ ์ ์ฒด์ ์ฑ๋ฅ์ ์ ํ์ํฌ ์ ์๋ ๋ถํ์ํ ์ฒญํฌ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ฐฉ๊ธ ์ค๋ฉ๋ ํด๋ฌ์คํฐ๋ฅผ ๋ฐฐํฌํ ๊ฒฝ์ฐ, ์ค๋ฉ์ ํจ๊ณผ์ ์ผ๋ก ์ํํ ์ ์์ ๋งํผ ์ถฉ๋ถํ ๋ฐ์ดํฐ๊ฐ ์๋์ง ํ์ธํ์ธ์. 8๊ฐ๋ณด๋ค ๋ง์ 128MB ์ฒญํฌ๋ฅผ ์์ฑํ ๋งํผ ๋ฐ์ดํฐ๊ฐ ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ, ๋ชจ๋ ๋ฐ์ดํฐ๋ ํ๋์ ์ค๋์ ์ ์ง๋ฉ๋๋ค. ์ฒญํฌ ํฌ๊ธฐ ์ค์ ์ ๋ฎ์ถ๊ฑฐ๋ ํด๋ฌ์คํฐ์ ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ์ธ์.
๊ด๋ จ ๋ฌธ์ ๋ก, ์์คํ ์ ์ฝ์ ๋๋ ์ ๋ฐ์ดํธ ์์๋ง ์ฒญํฌ๋ฅผ ๋ถํ ํ๋ฏ๋ก ์ค๋ฉ์ ๊ตฌ์ฑํ๊ณ ์ฝ์ ๋ฐ ์ ๋ฐ์ดํธ ์์ ์ ๊ณ์ ์คํํ์ง ์์ผ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฒญํฌ๊ฐ ์์ฑ๋์ง ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ฑฐ๋ ๋๋์ฒญํฌ๋ฅผ ์๋์ผ๋ก ๋ถํ ํ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก, ์ค๋ ํค์ ์นด๋๋๋ฆฌํฐ๊ฐ ๋ฎ์ ๊ฒฝ์ฐ, MongoDB๊ฐ ๋ฐ์ดํฐ ๊ฐ์ ์ถฉ๋ถํ ๋ถํ ์ ์์ฑํ์ง ๋ชปํ ์ ์์ต๋๋ค.
ํ๋์ ์ค๋๊ฐ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์์ ๋ถ๊ท ํํ ์์ ํธ๋ํฝ์ ์์ ํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋จ์ผ ์ค๋ ๋๋ ํด๋ฌ์คํฐ์ ํ์ ์งํฉ์ด ํธ๋ํฝ ๋ฐ ์ํฌ๋ก๋์ ๋ถ๊ท ํํ ๋ถ๋ถ์ ๋ฐ๊ฒ ๋ฉ๋๋ค. ๊ฑฐ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ด๋ ์ค๋ ํค๊ฐ ์ฐ๊ธฐ ํ์ฅ์ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ์ง ์๋ ๊ฒฝ์ฐ์ ๊ฒฐ๊ณผ์ ๋๋ค.
'ํซ ์ฒญํฌ'๊ฐ ์์ ์๋ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ํด๋น ์ฒญํฌ์ ์ผ๋ถ๋ฅผ ๋ถํ ํ ํ ๋ง์ด๊ทธ๋ ์ด์ ํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ด ํจํด์ ์์ ํ๊ธฐ ์ํด ๋ค๋ฅธ ์ค๋ ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ปฌ๋ ์ ์ ๋ค์ ์ค๋ฉํ๋ ๊ฒ์ ๊ณ ๋ คํด์ผ ํ ์ ์์ต๋๋ค.
์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๋ฐธ๋ฐ์ฑ์ ๋ฐฉํดํ๋ ์์๋ ๋ฌด์์ธ๊ฐ์?
๋ฐฉ๊ธ ์ค๋ฉ๋ ํด๋ฌ์คํฐ๋ฅผ ๋ฐฐํฌํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๊ฐ ๋จ์ผ ์ค๋์ ๋จ์ ์๋ ์ ํด๋ฌ์คํฐ์ ๋ํ ๋ฌธ์ ํด๊ฒฐ ์ ์์ ๊ณ ๋ คํ ์ ์์ต๋๋ค.
cluster๊ฐ ์ฒ์์๋ ๊ท ํ์ ์ด๋ฃจ์์ง๋ง, ๋์ค์ ๋ฐ์ดํฐ ๋ถํฌ๊ฐ ๊ณ ๋ฅด์ง ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์ธ์ ๊ณ ๋ คํ์ธ์.
ํด๋ฌ์คํฐ์์ ์๋นํ ์์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ฑฐ๋ ์ ๊ฑฐํ์ต๋๋ค. ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ๊ฒฝ์ฐ ์ค๋ ํค ๋ถ์ฐ์ด ๋ค๋ฅผ ์ ์์ต๋๋ค.
์ค๋ ํค์ ์นด๋๋๋ฆฌํฐ๊ฐ ๋ฎ์์ MongoDB๊ฐ ์ฒญํฌ๋ฅผ ๋ ์ด์ ๋ถํ ํ ์ ์์ต๋๋ค.
๋ฐธ๋ฐ์๊ฐ ํด๋ฌ์คํฐ ์ ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐํ ์ ์๋ ์๋๋ณด๋ค ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ ์ธํธ๊ฐ ์ฆ๊ฐํ๊ณ ์์ต๋๋ค. ์ด๋ ๋๋ฌธ ๊ฒฝ์ฐ์ด๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ๋ฐ์ํฉ๋๋ค.
๋ฐ์ดํฐ ์ฆ๊ฐ ์๋๋ฅผ ๊ณ ๋ คํ ๋ ๋ฐธ๋ฐ์ฑ ์๊ฐ์ด ๋๋ฌด ์งง์ต๋๋ค.
์ฐ๊ธฐ ์์ ์ด ๊ณ ๋ฅด๊ฒ ๋ถ์ฐ๋์ด ์์ง ์์ ๋ ๋ง์ ๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์ ์ด ํ์ํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๋ค๋ฅธ ์ค๋ ํค๋ฅผ ์ ํํด์ผ ํ ์๋ ์์ต๋๋ค.
์ค๋ ๊ฐ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ์ข์ง ์์ ์ฒญํฌ ๋ง์ด๊ทธ๋ ์ด์ ์ ์๋ฃํ๋ ๋ฐ ๋๋ฌด ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ๋คํธ์ํฌ ๊ตฌ์ฑ ๋ฐ ์ค๋ ๊ฐ์ ์ํธ ์ฐ๊ฒฐ์ ์กฐ์ฌํฉ๋๋ค.
์ฒญํฌ ๋ง์ด๊ทธ๋ ์ด์ ์ด ์ค๋ฉ๋ ํด๋ฌ์คํฐ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
๋ง์ด๊ทธ๋ ์ด์ ์ด ํด๋ฌ์คํฐ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ํฅ์ ์ฃผ๋ ๊ฒฝ์ฐ ์ํฅ์ ํน์ฑ์ ๋ฐ๋ผ ๋ค์ ์ต์ ์ ๊ณ ๋ คํฉ๋๋ค.
๋ง์ด๊ทธ๋ ์ด์ ์ผ๋ก ์ธํด ํด๋ฌ์คํฐ๊ฐ ๊ฐํ์ ์ผ๋ก ์ค๋จ๋๋ ๊ฒฝ์ฐ์๋ ๋ฐธ๋ฐ์ฑ ์๊ฐ์ ์ ํํ์ฌ ํผํฌ ์๊ฐ๋์ ๋ฐธ๋ฐ์ฑ ํ๋์ด ๋ฐ์ํ์ง ์๋๋ก ํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ์ ๋ฐธ๋ฐ์ค๊ฐ ๋ค์ ๊นจ์ง์ง ์๋๋ก ์ถฉ๋ถํ ์๊ฐ์ด ๋จ์ ์๋์ง ํ์ธํฉ๋๋ค.
๋ฐธ๋ฐ์๊ฐ ํญ์ ์ ์ฒด ํด๋ฌ์คํฐ ์ฑ๋ฅ์ด ์ ํ๋ ๋๊น์ง ์ฒญํฌ๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒฝ์ฐ:
์ฒญํฌ ํฌ๊ธฐ๋ฅผ ์ค์ฌ ๋ง์ด๊ทธ๋ ์ด์ ํฌ๊ธฐ๋ฅผ ์ ํํ ์๋ ์์ต๋๋ค.
ํด๋ฌ์คํฐ์ ์ฉ๋์ด ์ด๊ณผ๋์์ ์ ์์ผ๋ฉฐ, ๋ถํ๋ฅผ ๋ถ์ฐํ๊ธฐ ์ํด ํด๋ฌ์คํฐ์ ์ค๋ ํ๋ ๊ฐ๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ์๋ํ ์ ์์ต๋๋ค.
์ค๋ ํค๋ก ์ธํด ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ชจ๋ ์ฐ๊ธฐ๋ฅผ ๋จ์ผ ์ค๋๋ก ๋ณด๋ผ ์๋ ์์ต๋๋ค. ์ด๋ฌํ ํ๋ ํจํด์ ๊ฒฝ์ฐ ๋ฐธ๋ฐ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ ํ ๋ฐ๋ก ๋๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํด์ผ ํ ์ ์์ต๋๋ค. ๋ ๋์ ์ฐ๊ธฐ ํ์ฅ์ ์ ๊ณตํ๋ ๋ค๋ฅธ ์ค๋ ํค๋ก ์ปฌ๋ ์ ์ ์ฌ์ค๋ฉํ๋ ๊ฒ์ ๊ณ ๋ คํด์ผ ํ ์๋ ์์ต๋๋ค.