Database Profiler
์ด ํ์ด์ง์ ๋ด์ฉ
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋กํ์ผ๋ฌ๋ ์คํ ์ค์ธ mongod
์ธ์คํด์ค์ ์คํ๋ ์ธ์คํด์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ช
๋ น ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ช
๋ น์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ์์งํฉ๋๋ค. ์ฌ๊ธฐ์๋ CRUD ์์
์ ๋ฌผ๋ก ๊ตฌ์ฑ ๋ฐ ๊ด๋ฆฌ ๋ช
๋ น๋ ํฌํจ๋ฉ๋๋ค.
ํ๋กํ์ผ๋ฌ๋ ์์งํ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋กํ์ผ๋ง๋ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ณ ์ ์ฌ์ด์ฆ ์ปฌ๋ ์
์ธ system.profile
์ปฌ๋ ์
์ ์์ฑํฉ๋๋ค. ํ๋กํ์ผ๋ฌ๊ฐ ์์ฑํ system.profile
๋ฌธ์์ ๋ํ ๊ฐ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋กํ์ผ๋ฌ ์ถ๋ ฅ์ ์ฐธ์กฐํ์ธ์.
ํ๋กํ์ผ๋ฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก off
์ํ์
๋๋ค. ์ฌ๋ฌ ํ๋กํ์ผ๋ง ์์ค ์ค ํ๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ์ธ์คํด์ค๋ณ๋ก ํ๋กํ์ผ๋ฌ๋ฅผ ํ์ฑํํ ์ ์์ต๋๋ค.
ํ๋กํ์ผ๋ง์ ํ์ฑํํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ๊ณผ ๋์คํฌ ์ฌ์ฉ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋กํ์ผ๋ฌ ์ค๋ฒํค๋ ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด ํ์ด์ง์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋กํ์ผ๋ฌ์ ์ค์ํ ๊ด๋ฆฌ ์ต์ ์ด ๋์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ค์์ ์ฐธ์กฐํ์ธ์.
๊ฒฝ๊ณ
system.profile
์ด๋ผ๋ ์ด๋ฆ์ time series ์ปฌ๋ ์
๋๋ ๋ทฐ๋ฅผ ๋ง๋ค๋ ค๊ณ ์๋ํ์ง ๋ง์ธ์. MongoDB 6.3 ์ด์ ๋ฒ์ ์์ ์ด๋ฅผ ์๋ํ๋ ๊ฒฝ์ฐ IllegalOperation
์ค๋ฅ๊ฐ ๋ฐํ๋ฉ๋๋ค. ์ด์ MongoDB ๋ฒ์ ์ ์ถฉ๋ํฉ๋๋ค.
ํ๋กํ์ผ๋ง ์์ค
์ฌ์ฉํ ์ ์๋ ํ๋กํ์ผ๋ง ์์ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
0
- ํ๋กํ์ผ๋ฌ๊ฐ ๊บผ์ ธ ์๊ณ ๋ฐ์ดํฐ๋ฅผ ์์งํ์ง ์์ต๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ ์ค์ ๋ ํ๋กํ์ผ๋ฌ ์์ค์ ๋๋ค.
1
ํ๋กํ์ผ๋ฌ๋
slowms
์๊ณ๊ฐ์ ์ด๊ณผํ๊ฑฐ๋ ์ง์ ๋ ํํฐํ๋ค ์ ์ผ์นํ๋ ์์ ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์์งํฉ๋๋ค.ํํฐ๊ฐ ์ค์ ๋ ๊ฒฝ์ฐ:
slowms
,sampleRate
์ต์ ์ ํ๋กํ์ผ๋ง์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.ํ๋กํ์ผ๋ฌ๋ ํํฐ์ผ์นํ๋ ์์ ๋ง ์บก์ฒํฉ๋๋ค.
2
- ํ๋กํ์ผ๋ฌ๊ฐ ๋ชจ๋ ์์ ์ ๋ฐ์ดํฐ๋ฅผ ์์งํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋กํ์ผ๋ง ํ์ฑํ ๋ฐ ๊ตฌ์ฑ
mongod
์ธ์คํด์ค์ ๋ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋กํ์ผ๋ง์ ํ์ฑํํ ์ ์์ต๋๋ค.
์ด ์น์
์์๋ mongosh
ํฌํผ ๋ฉ์๋ db.setProfilingLevel()
์ ์ฌ์ฉํ์ฌ ํ๋กํ์ผ๋ง์ ํ์ฑํํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ ์ค๋๋ค. ๋๋ผ์ด๋ฒ ๋ฉ์๋๋ฅผ ๋์ ์ฌ์ฉํ๋ ค๋ฉด ๋๋ผ์ด๋ฒ ์ค๋ช
์๋ฅผ ์ฐธ์กฐํ์ธ์.
mongod
์ธ์คํด์ค์ ๋ํ ํ๋กํ์ผ๋ง์ ํ์ฑํํ๋ ค๋ฉด ํ๋กํ์ผ๋ง ์์ค์ 0
๋ณด๋ค ํฐ ๊ฐ์ผ๋ก ์ค์ ํฉ๋๋ค. ํ๋กํ์ผ๋ฌ๋ system.profile
์ปฌ๋ ์
์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ํด๋น ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋กํ์ผ๋ง์ ํ์ฑํํ ํ MongoDB๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ system.profile
์ปฌ๋ ์
์ ์์ฑํฉ๋๋ค.
ํ๋กํ์ผ๋ง์ ํ์ฑํํ๊ณ ํ๋กํ์ผ๋ง ์์ค์ ์ค์ ํ๋ ค๋ฉด db.setProfilingLevel()
ํฌํผ์๊ฒ ํ๋กํ์ผ๋ง ์์ค์ ์ ๋ฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ฌ ์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
์ ๋ํด ํ๋กํ์ผ๋ง์ ํ์ฑํํ๋ ค๋ฉด mongosh
์์ ์ด ์์
์ ์คํํฉ๋๋ค.
db.setProfilingLevel(2)
์
ธ์ was
ํ๋์์ ์ด์ ํ๋กํ์ผ๋ง ์์ค์ ๋ฐํํ๊ณ ์ ์์ค์ ์ค์ ํฉ๋๋ค. ๋ค์ ์ถ๋ ฅ์์ "ok" :
1
ํค-๊ฐ ์์ ์์
์ด ์ฑ๊ณตํ์์ ๋ํ๋
๋๋ค.
{ "was" : 0, "slowms" : 100, "sampleRate" : 1.0, "ok" : 1 }
์ ์ค์ ์ ํ๋กํ์ผ๋ง ์์ค ํ์ธ ์น์ ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
MongoDB 5.0๋ถํฐ profile
๋ช
๋ น ๋๋ db.setProfilingLevel()
๋ํผ(wrapper) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋กํ์ผ๋ฌ level
, slowms
, sampleRate
๋๋ filter
์ ๋ํด ๋ณ๊ฒฝํ ๋ด์ฉ์ log file
์ ๊ธฐ๋ก๋ฉ๋๋ค.
๊ธ๋ก๋ฒ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณ ํ๋กํ์ผ๋ง ์ค์
slowms ๋ฐ sampleRate ํ๋กํ์ผ๋ง ์ค์ ์ ๊ธ๋ก๋ฒ ์ค์ ์ ๋๋ค. ์ด๋ฌํ ์ค์ ์ ํ๋ก์ธ์ค์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํฅ์ ์ค๋๋ค.
profile
๋ช
๋ น์ด๋ db.setProfilingLevel()
์
ธ ํฌํผ ๋ฉ์๋๋ฅผ ํตํด ์ค์ ํ๋ ๊ฒฝ์ฐ, ํ๋กํ์ผ๋ง ์์ค ๋ฐ ํํฐ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ค์์ ์ค์ ๋ฉ๋๋ค. ๋ช
๋ น์ค ๋๋ ๊ตฌ์ฑ ํ์ผ ์ต์
์ผ๋ก ์ค์ ํ๋ฉด ํ๋กํ์ผ๋ง ์์ค ๋ฐ filter
์ค์ ์ด ์ ์ฒด ํ๋ก์ธ์ค์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
๋๋ฆฐ ์์ ์ ๋ํ ์๊ณ๊ฐ ์ง์ ํ๊ธฐ
๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ฆฐ ์์ ์ ์๊ณ๊ฐ์ 100๋ฐ๋ฆฌ์ด์ ๋๋ค.
๋๋ฆฐ ์์
์ MongoDB๊ฐ ํด๋น ์์
์ ์์ํ๋ ์๊ฐ์ธ workingMillis
๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ธฐ๋ก๋ฉ๋๋ค. ์ฆ ์ ๊ธ ๋๊ธฐ ๋ฐ ํ๋ฆ ์ ์ด์ ๊ฐ์ ์์๋ ์์
์ด ๋๋ฆฐ ์์
์๊ณ๊ฐ์ ์ด๊ณผํ๋์ง ์ฌ๋ถ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
๋๋ฆฐ ์์ ์๊ณ๊ฐ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ๋ค์ ๋ฐฉ๋ฒ ์ค ํ๋๋ก ํ์ํ ์๊ณ๊ฐ์ ์ง์ ํฉ๋๋ค.
profile
๋ช ๋ น ๋๋db.setProfilingLevel()
์ ธ ํฌํผ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌslowms
๊ฐ์ ์ค์ ํฉ๋๋ค.์์ ์ ๋ช ๋ น์ค์์
--slowms
๊ฐ์ ์ค์ ํฉ๋๋ค.๊ตฌ์ฑ ํ์ผ์์
slowOpThresholdMs
๊ฐ์ ์ค์ ํฉ๋๋ค.
๋ค์ ์์์๋ ํ์ฌ ์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋กํ์ผ๋ง ์์ค์ 1
๋ก ์ค์ ํ๊ณ mongod
์ธ์คํด์ค์ ๋๋ฆฐ ์์
์๊ณ๊ฐ์ 20
๋ฐ๋ฆฌ์ด๋ก ์ค์ ํฉ๋๋ค.
db.setProfilingLevel( 1, { slowms: 20 } )
ํ๋กํ์ผ๋ง ์์ค์ด 1
์ด๋ฉด ํ๋กํ์ผ๋ฌ๊ฐ slowms
์๊ณ๊ฐ๋ณด๋ค ๋๋ฆฐ ์์
์ ๊ธฐ๋กํฉ๋๋ค.
์ค์
๋๋ฆฐ ์์
์๊ณ๊ฐ์ mongod
์ธ์คํด์ค ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉ๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋กํ์ผ๋ฌ์ ์ง๋จ ๋ก๊ทธ ๋ชจ๋์์ ์ฌ์ฉ๋๋ฉฐ ์ฑ๋ฅ ์ ํ๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ์ด์ฉ ๊ฐ๋ฅํ ๊ฐ์ฅ ๋์ ๊ฐ์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
db.setProfilingLevel()
์ ์ฌ์ฉํ์ฌ slowms
๋ฐ sampleRate
๋ฅผ mongos
์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. mongos
์ ๊ฒฝ์ฐ, slowms
๋ฐ sampleRate
๊ตฌ์ฑ ์ค์ ์ ํ๋กํ์ผ๋ง์ด mongos
์์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ํ๋กํ์ผ๋ฌ๊ฐ ์๋ ์ง๋จ ๋ก๊ทธ์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค. [1]
๋ค์ ์์์์๋ ๋๋ฆฐ ์์
์ ๊ธฐ๋กํ๊ธฐ ์ํด mongos
์ธ์คํด์ค์ ๋๋ฆฐ ์์
์๊ณ๊ฐ์ 20
์ผ๋ก ์ค์ ํฉ๋๋ค.
db.setProfilingLevel( 0, { slowms: 20 } )
์ฝ๊ธฐ/์ฐ๊ธฐ ์์ ์ ๋ํ ํ๋กํ์ผ๋ฌ ํญ๋ชฉ ๋ฐ ์ง๋จ ๋ก๊ทธ ๋ฉ์์ง(์: mongod/mongos logmessages)์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
planCacheShapeHash
๋ ๋์ผํ ํ๋ ์บ์ ์ฟผ๋ฆฌ ํํ๋ฅผ ๊ฐ๋ ๋๋ฆฐ ์ฟผ๋ฆฌ๋ฅผ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.MongoDB 8.0 ๋ถํฐ ๊ธฐ์กด
queryHash
ํ๋ ์ ์ด๋ฆ์ดplanCacheShapeHash
๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค. ์ด์ MongoDB ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐplanCacheShapeHash
queryHash
๊ฐ ํ์๋ฉ๋๋ค.planCacheKey
๋๋ฆฐ ์ฟผ๋ฆฌ์ ๋ํ ์ฟผ๋ฆฌ ๊ณํ ์บ์์ ๊ดํด ๋ ๋ง์ ์ธ์ฌ์ดํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ด์ ๋ณต์ ๋ณธ ์ธํธ์ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ๊ฐ ๋๋ฆฐ ์์ ์๊ณ๊ฐ๋ณด๋ค ์ค๋ ๊ฑธ๋ฆฌ๋ oplog ํญ๋ชฉ์ ๊ธฐ๋กํฉ๋๋ค. ์ด๋ฌํ ๋๋ฆฐ oplog ๋ฉ์์ง์ ํน์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
diagnostic log
์ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ์ ๋ํด ๊ธฐ๋กํฉ๋๋ค.applied op: <oplog entry> took <num>ms
ํ ์คํธ์ ํจ๊ปREPL
๊ตฌ์ฑ ์์ ์๋์ ๊ธฐ๋ก๋ฉ๋๋ค.๋ก๊ทธ ์์ค(์์คํ ๋๋ ๊ตฌ์ฑ ์์ ์์ค)์ ์์กดํ์ง ์์ต๋๋ค.
ํ๋กํ์ผ๋ง ์์ค์ ์์กดํ์ง ์์ต๋๋ค.
slowOpSampleRate
์ ์ํฅ์ ๋ฐ์ต๋๋ค.
ํ๋กํ์ผ๋ฌ๋ ๋๋ฆฐ oplog ํญ๋ชฉ์ ์บก์ฒํ์ง ์์ต๋๋ค.
๋๋ฆฐ ์์ ์ ๋ฌด์์ ์ํ ํ๋กํ์ผ๋ง
๋ชจ๋ ๋๋ฆฐ ์ฐ์ฐ ์ค ๋ฌด์์๋ก ์ํ๋ง๋ ํ์ ์งํฉ๋ง ํ๋กํ์ผ๋งํ๋ ค๋ฉด ๋ค์ ์ค ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ํ๋ ์ํ ์๋๋ฅผ ์ง์ ํ์ธ์. [2]
profile
๋ช ๋ น ๋๋db.setProfilingLevel()
์ ธ ํฌํผ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌsampleRate
๊ฐ์ ์ค์ ํฉ๋๋ค.์์ ์ ๋ช ๋ น์ค์์
mongod
์ ๋ํ--slowOpSampleRate
์ ๊ฐ,mongos
์ ๋ํ--slowOpSampleRate
์ ๊ฐ์ ์ค์ ํฉ๋๋ค.๊ตฌ์ฑ ํ์ผ์์
slowOpSampleRate
๊ฐ์ ์ค์ ํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก sampleRate
๋ 1.0
๋ก ์ค์ ๋๋ฉฐ, ๋๋ฆฐ ์์
์ด ๋ชจ๋ ํ๋กํ์ผ๋ง๋๋ค๋ ์๋ฏธ์
๋๋ค. sampleRate
๋ฅผ 0
์์ 1
์ฌ์ด๋ก ์ค์ ํ๋ฉด ํ๋กํ์ผ๋ง ์์ค์ด 1
์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ sampleRate
์ ๋ฐ๋ผ ๋๋ฆฐ ์์
์ ๋ฌด์์๋ก ์ํ๋ง๋ ๋น์จ๋ง ํ๋กํ์ผ๋งํฉ๋๋ค.
๋ค์ ์์์๋ ํ์ฌ ์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋กํ์ผ๋ง ์์ค์ 1
๋ก ์ค์ ํ๊ณ , ๋ชจ๋ ๋๋ฆฐ ์์
์ 42%๋ฅผ ์ํ๋งํ๋๋ก ํ๋กํ์ผ๋ฌ๋ฅผ ์ค์ ํฉ๋๋ค.
db.setProfilingLevel( 1, { sampleRate: 0.42 } )
์์ ๋ ์ํ๋ง ์๋ ๊ฐ์ ์์คํ ๋ก๊ทธ์๋ ์ ์ฉ๋ฉ๋๋ค.
db.setProfilingLevel()
์ ์ฌ์ฉํ์ฌ mongos
์ slowms
๋ฐ sampleRate
๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. mongos
์ ๊ฒฝ์ฐ slowms
๋ฐ sampleRate
์ค์ ์ mongos
์์ ํ๋กํ์ผ๋ง์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์ง๋จ ๋ก๊ทธ์๋ง ์ํฅ์ ๋ฏธ์น๊ณ ํ๋กํ์ผ๋ฌ์๋ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. [1]
์๋ฅผ ๋ค์ด ๋ค์์ ๋๋ฆฐ ์์
๊ธฐ๋ก์ ์ํ mongos
์ธ์คํด์ค์ ์ํ๋ง ์๋๋ฅผ ์ค์ ํฉ๋๋ค.
db.setProfilingLevel( 0, { sampleRate: 0.42 } )
์ค์
logLevel
์ 0
์ผ๋ก ์ค์ ํ๋ฉด, MongoDB๋ slowOpSampleRate
์ ์ํด ๊ฒฐ์ ๋๋ ์๋๋ก ๋๋ฆฐ ์์
์ ์ง๋จ ๋ก๊ทธ์ ๊ธฐ๋กํฉ๋๋ค.
logLevel
์ ๋ ๋๊ฒ ์ค์ ํ๋ฉด ๋์ผ๋ฉด ๋ชจ๋ ์์
์ด ์ง์ฐ ์๊ฐ๊ณผ ๊ด๊ณ์์ด ์ง๋จ ๋ก๊ทธ์ ํ์๋ฉ๋๋ค. ๋จ, ์ธ์ปจ๋๋ฆฌ์ ์ ์ oplog ํญ๋ชฉ ๋ฉ์์ง ๋ก๊น
์ ์์ธ์
๋๋ค. ์ธ์ปจ๋๋ฆฌ ๋ก๊ทธ๋ oplog ํญ๋ชฉ๋ง ๊ธฐ๋กํ๋ฉฐ, logLevel
์ ๋์ฌ๋ ๋ชจ๋ oplog ํญ๋ชฉ์ด ๊ธฐ๋ก๋์ง๋ ์์ต๋๋ค.
[1] | (1, 2) ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋กํ์ผ๋ง ๋ฐ ์ค๋ฉ์ ์ฐธ์กฐํ์ธ์. |
ํ๋กํ์ผ๋ง๋ ์์ ์ ๊ฒฐ์ ํ๊ธฐ ์ํ ํํฐ ์ค์
ํํฐ๋ฅผ ์ค์ ํ์ฌ ํ๋กํ์ผ๋ง ๋ฐ ๊ธฐ๋ก๋ ์์ ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๋ค์ ์ค ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ํ๋กํ์ผ๋ง ํํฐ๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
profile
๋ช ๋ น ๋๋db.setProfilingLevel()
์ ธ ํฌํผ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌfilter
๊ฐ์ ์ค์ ํฉ๋๋ค.๊ตฌ์ฑ ํ์ผ์์
filter
๊ฐ์ ์ค์ ํฉ๋๋ค.
mongod
์ธ์คํด์ค์ ๊ฒฝ์ฐ filter
๋ ์ง๋จ ๋ก๊ทธ ๋ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ ํ๋กํ์ผ๋ฌ์ ๋ชจ๋ ์ํฅ์ ์ค๋๋ค.
mongos
์ธ์คํด์ค์ ๊ฒฝ์ฐ mongos
์์ ํ๋กํ์ผ๋ง์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก filter
๋ ํ๋กํ์ผ๋ฌ๊ฐ ์๋ ์ง๋จ ๋ก๊ทธ์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์ฐธ๊ณ
ํ๋กํ์ผ๋ง filter
๊ฐ ์ค์ ๋์๋ค๋ฉด, slowms๊ณผ sampleRate ์ต์
์ด ์ง๋จ ๋ก๊ทธ๋ ํ๋กํ์ผ๋ฌ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
๋ค์ db.setProfilingLevel()
์์์์๋ ํ์ฌ ์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ํ๋กํ ์์ค์ ์ค์ ํฉ๋๋ค.
ํ๋กํ์ผ๋ง ์์ค์
2
๋ก ์ค์ ํฉ๋๋ค.ํ๋กํ์ผ๋ฌ๊ฐ ์์ ์๊ฐ์ด 2์ด๋ฅผ ์ด๊ณผํ๋
query
์์ ๋ง ๊ธฐ๋กํ๋๋ก ํ๋{ op: "query", millis: { $gt: 2000 } }
ํํฐ
db.setProfilingLevel( 2, { filter: { op: "query", millis: { $gt: 2000 } } } )
ํ๋กํ์ผ๋ง ์์ค ํ์ธ
ํ๋กํ์ผ๋ง ์์ค์ ๋ณด๋ ค๋ฉด mongosh
์์ ๋ค์ ์์๋ฅผ ์คํํ์ธ์.
db.getProfilingStatus()
์ ธ์ ๋ค์๊ณผ ์ ์ฌํ ๋ฌธ์๋ฅผ ๋ฐํํฉ๋๋ค.
{ "was" : 0, "slowms" : 100, "sampleRate" : 1.0, "ok" : 1 }
was
ํ๋๋ ํ์ฌ ํ๋กํ์ผ๋ง ์์ค์ ๋ํ๋
๋๋ค.
slowms
ํ๋๋ ์์
์๊ฐ ์๊ณ๊ฐ(๋ฐ๋ฆฌ์ด)์ ๋ํ๋ด๋ฉฐ, ์ด๋ฅผ ์ด๊ณผํ๋ฉด ๋๋ฆฐ ์์
์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
sampleRate
ํ๋๋ ํ๋กํ์ผ๋ง์ด ํ์ํ ๋๋ฆฐ ์์
์ ๋น์จ์ ๋ํ๋
๋๋ค.
ํ๋กํ์ผ๋ง ๋นํ์ฑํ
ํ๋กํ์ผ๋ง์ ๋นํ์ฑํํ๋ ค๋ฉด mongosh
์์ ๋ค์ ๋ช
๋ น์ ์คํํ์ธ์.
db.setProfilingLevel(0)
์ฐธ๊ณ
ํ๋กํ์ผ๋ง์ ๋นํ์ฑํํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ์ด ํฅ์๋๊ณ ๋์คํฌ ์ฌ์ฉ๋์ด ์ค์ด๋ค ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋กํ์ผ๋ฌ ์ค๋ฒํค๋๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ์ฒด ์ธ์คํด์ค์ ๋ํด ํ๋กํ์ผ๋ง ํ์ฑํ mongod
๊ฐ๋ฐ ๋ฐ ํ
์คํธ ํ๊ฒฝ์ ๊ฒฝ์ฐ, ์ ์ฒด mongod
์ธ์คํด์ค์ ๋ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋กํ์ผ๋ง์ ํ์ฑํํ ์ ์์ต๋๋ค. ํ๋กํ์ผ๋ง ์์ค์ mongod
์ธ์คํด์ค์์ ์ ๊ณตํ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉ๋ฉ๋๋ค.
mongod
์ธ์คํด์ค์ ๋ํ ํ๋กํ์ผ๋ง์ ํ์ฑํํ๋ ค๋ฉด ์์ ์ ๋ค์ ์ต์
์ mongod
๋ก ์ ๋ฌํฉ๋๋ค.
mongod --profile 1 --slowms 15 --slowOpSampleRate 0.5
๋๋ ๊ตฌ์ฑ ํ์ผ์์ operationProfiling์ ์ง์ ํ ์ ์์ต๋๋ค.
์ด๋ฅผ ํตํด ํ๋กํ์ผ๋ง ์์ค์ 1
์ผ๋ก ์ค์ ํ๊ณ , 15
๋ฐ๋ฆฌ์ด๋ณด๋ค ์ค๋ ์ง์๋๋ ์์
์ ๋๋ฆฐ ์์
์ผ๋ก ์ ์ํ๋ฉฐ, ๋๋ฆฐ ์์
์ 50%๋ง ํ๋กํ์ผ๋งํ๋๋ก ์ง์ ํฉ๋๋ค. [2]
logLevel
์ด 0
๋ก ์ค์ ๋ ๊ฒฝ์ฐ slowms
๋ฐ slowOpSampleRate
๋ ์ง๋จ ๋ก๊ทธ์ ๊ธฐ๋ก๋๋ ์์
์๋ ์ํฅ์ ์ค๋๋ค. slowms
๋ฐ slowOpSampleRate
๋ mongos
์ ์ง๋จ ๋ก๊ทธ ๊ตฌ์ฑ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. [2]
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋กํ์ผ๋ง ๋ฐ ์ค๋ฉ
mongos
์ธ์คํด์ค์์๋ ํ๋กํ์ผ๋ง์ ํ์ฑํํ ์ ์์ต๋๋ค . ์ค๋ฉ๋ ํด๋ฌ์คํฐ์์ ํ๋กํ์ผ๋ง์ ํ์ฑํํ๋ ค๋ฉด ํด๋ฌ์คํฐ์ ๊ฐ mongod
์ธ์คํด์ค์ ํ๋กํ์ผ๋ง์ ํ์ฑํํด์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ mongos
์์ --slowms
๋ฐ slowOpSampleRate
๋ฅผ ์ค์ ํ์ฌ ๋๋ฆฐ ์์
์ ๋ํ ์ง๋จ ๋ก๊ทธ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
ํ๋กํ์ผ๋ฌ ๋ฐ์ดํฐ ๋ณด๊ธฐ
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋กํ์ผ๋ฌ๋ system.profile
์ปฌ๋ ์
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
์ ๋ํ ์ ๋ณด๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
system.profile
์ปฌ๋ ์
์ ์ฟผ๋ฆฌํ์ฌ ํ๋กํ์ผ๋ง ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์ฟผ๋ฆฌ ์์๋ ํ๋กํ์ผ๋ฌ ๋ฐ์ดํฐ ์ฟผ๋ฆฌ ์์์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค. ์ถ๋ ฅ ๋ฐ์ดํฐ์ ๋ํ ์ค๋ช
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋กํ์ผ๋ฌ ์ถ๋ ฅ์ ์ฐธ์กฐํ์ธ์.
์ด์ ํธ๋์ญ์
๋ด์์ system.profile
์ปฌ๋ ์
์ ๋ํด ์ฝ๊ธฐ๋ฅผ ํฌํจํ ๋ชจ๋ ์ฐ์ฐ์ ์ํํ ์ ์์ต๋๋ค.
ํ๋กํ์ผ๋ฌ ๋ฐ์ดํฐ ์ฟผ๋ฆฌ ์์
์ด ์น์
์์๋ system.profile
์ปฌ๋ ์
์ ๋ํ ์ฟผ๋ฆฌ ์์๋ฅผ ๋ณด์ฌ ์ค๋๋ค. ์ฟผ๋ฆฌ ์ถ๋ ฅ ์ธ๋ถ ์ ๋ณด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋กํ์ผ๋ฌ ์ถ๋ ฅ์ ์ฐธ์กฐํ์ธ์.
system.profile
์ปฌ๋ ์
์์ ๊ฐ์ฅ ์ต๊ทผ ๋ก๊ทธ ํญ๋ชฉ 10๊ฐ๋ฅผ ๋ฐํํ๋ ค๋ฉด ์๋์ ์ ์ฌํ ์ฟผ๋ฆฌ๋ฅผ ์คํํฉ๋๋ค:
db.system.profile.find().limit(10).sort( { ts : -1 } ).pretty()
๋ช ๋ น ์์ ($cmd)์ ์ ์ธํ ๋ชจ๋ ์์ ์ ๋ฐํํ๋ ค๋ฉด ์๋์ ์ ์ฌํ ์ฟผ๋ฆฌ๋ฅผ ์คํํฉ๋๋ค.
db.system.profile.find( { op: { $ne : 'command' } } ).pretty()
ํน์ ์ปฌ๋ ์
์ ๋ํ ์์
์ ๋ฐํํ๋ ค๋ฉด ์๋์ ์ ์ฌํ ์ฟผ๋ฆฌ๋ฅผ ์คํํฉ๋๋ค. ์ด ์์์์๋ mydb
๋ฐ์ดํฐ๋ฒ ์ด์ค์ test
์ปฌ๋ ์
์ ์๋ ์์
์ ๋ฐํํฉ๋๋ค.
db.system.profile.find( { ns : 'mydb.test' } ).pretty()
์๋ฃํ๋ ๋ฐ 5๋ฐ๋ฆฌ์ด ์ด์ ๊ฑธ๋ฆฌ๋ ์์ ์ ๋ฐํํ๋ ค๋ฉด ๋ค์์ ์คํํ์ธ์.
db.system.profile.find( { millis : { $gt : 5 } } ).pretty()
ํน์ ์๊ฐ ๋ฒ์์ ๋ํ ์์ ์ ๋ฐํํ๋ ค๋ฉด ๋ค์์ ์คํํ์ธ์.
db.system.profile.find( { ts : { $gt: new ISODate("2012-12-09T03:00:00Z"), $lt: new ISODate("2012-12-09T03:40:00Z") } } ).pretty()
๋ค์ ์์๋ ์๊ฐ ๋ฒ์๋ฅผ ์ดํด๋ณด๊ณ , ์ฝ๊ธฐ ์ฝ๋๋ก ์ถ๋ ฅ์์ user
ํ๋๋ฅผ ์ ๊ฑฐํ๋ฉฐ, ๊ฐ ์ฐ์ฐ์ ์คํํ๋ ๋ฐ ๊ฑธ๋ฆฐ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ฌํฉ๋๋ค.
db.system.profile.find( { ts : { $gt: new ISODate("2011-07-12T03:00:00Z"), $lt: new ISODate("2011-07-12T03:40:00Z") } }, { user: 0 } ).sort( { millis: -1 } )
๊ฐ์ฅ ์ต๊ทผ ์ด๋ฒคํธ 5๊ฑด ํ์
ํ๋กํ์ผ๋ง์ด ํ์ฑํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ mongosh
์ show profile
ํฌํผ๋ ์คํ ์๊ฐ์ด 1๋ฐ๋ฆฌ์ด ์ด์์ธ ๊ฐ์ฅ ์ต๊ทผ ์์
5๊ฑด์ ํ์ํฉ๋๋ค. mongosh
์์ show profile
์คํ:
show profile
ํ๋กํ์ผ๋ฌ ์ค๋ฒํค๋
ํ๋กํ์ผ๋ง์ ํ์ฑํํ ๊ฒฝ์ฐ ํนํ ํ๋กํ์ผ๋ง ์์ค์ด 2๋ก ๊ตฌ์ฑ๋๊ฑฐ๋ ํ๋กํ์ผ๋ง ์์ค์ 1๋ก ์ ์ฉํ์ฌ ๋ฎ์ ์๊ณ๊ฐ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํ๋กํ์ผ๋ง์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
ํ๋กํ์ผ๋ง์ system.profile
์ปฌ๋ ์
๊ณผ MongoDB logfile
์ ๋ก๊ทธ๋ฅผ ์ฐ๊ธฐ ๋๋ฌธ์ ํ๋กํ์ผ๋ง์ ๋์คํฌ ๊ณต๊ฐ๋ ์ฌ์ฉํฉ๋๋ค.
๊ฒฝ๊ณ
ํ๋ก๋์ ๋ฐฐํฌ์์ ํ๋กํ์ผ๋ฌ๋ฅผ ํ์ฑํํ๊ธฐ ์ ์ ์ฑ๋ฅ๊ณผ ์ ์ฅ์์ ๋ฏธ์น๋ ์ํฅ์ ๊ณ ๋ คํ์ธ์.
system.profile
์ปฌ๋ ์
system.profile
์ปฌ๋ ์
์ ๊ธฐ๋ณธ ํฌ๊ธฐ๊ฐ 1๋ฉ๊ฐ๋ฐ์ดํธ์ธ ๊ณ ์ ์ฌ์ด์ฆ ์ปฌ๋ ์
์
๋๋ค. ์ด ์ ๋ ํฌ๊ธฐ์ ์ปฌ๋ ์
์๋ ์ผ๋ฐ์ ์ผ๋ก ์์ฒ ๊ฐ์ ํ๋กํ์ผ ๋ฌธ์๋ฅผ ์ ์ฅํ ์ ์์ง๋ง, ์ผ๋ถ ์ ํ๋ฆฌ์ผ์ด์
์ ์์
๋น ํ๋กํ์ผ๋ง ๋ฐ์ดํฐ๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํ๊ฑฐ๋ ๋ ์ ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ ๋จ๊ณ์ ๋ฐ๋ผ system.profile
์ปฌ๋ ์
์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ์์ ์ปฌ๋ ์
์ ํฌ๊ธฐ system.profile
๋ณ๊ฒฝ
ํ๋ผ์ด๋จธ๋ฆฌ์์ system.profile
์ปฌ๋ ์
ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด ๋ค์์ ์คํํฉ๋๋ค.
ํ๋กํ์ผ๋ง์ ๋นํ์ฑํํฉ๋๋ค.
system.profile
์ปฌ๋ ์ ์ ์ ๊ฑฐํฉ๋๋ค.์
system.profile
์ปฌ๋ ์ ์ ๋ง๋ญ๋๋ค.ํ๋กํ์ผ๋ง์ ๋ค์ ํ์ฑํํฉ๋๋ค.
์๋ฅผ ๋ค์ด, 4000000
๋ฐ์ดํธ(4MB)์ธ ์ system.profile
์ปฌ๋ ์
์ ๋ง๋ค๋ ค๋ฉด mongosh
์์ ๋ค์ ์์
์์๋ฅผ ์คํํฉ๋๋ค.
db.setProfilingLevel(0) db.system.profile.drop() db.createCollection( "system.profile", { capped: true, size:4000000 } ) db.setProfilingLevel(1)
์ธ์ปจ๋๋ฆฌ์์ ์ปฌ๋ ์
์ ํฌ๊ธฐ system.profile
๋ณ๊ฒฝ
์ธ์ปจ๋๋ฆฌ์์ system.profile
์ปฌ๋ ์
์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ธ์ปจ๋๋ฆฌ๋ฅผ ์ค์งํ๊ณ ๋
๋ฆฝํ์ผ๋ก ์คํํ ๋ค์ ์์ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค. ์๋ฃ๋๋ฉด ๋ณต์ ๋ณธ ์ธํธ์ ๋ฉค๋ฒ๋ก ๋
๋ฆฝํ์ ๋ค์ ์์ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์์ฒด ๊ด๋ฆฌํ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ์ ์ ์ง ๊ด๋ฆฌ ์ํ์ ์ฐธ์กฐํ์ธ์.
[2] | (1, 2, 3) ์ด์ ๋ณต์ ๋ณธ ์ธํธ์ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ๊ฐ ๋๋ฆฐ ์์
์๊ณ๊ฐ๋ณด๋ค ์ค๋ ๊ฑธ๋ฆฌ๋ oplog ํญ๋ชฉ์ ๊ธฐ๋กํฉ๋๋ค. ์ด๋ฌํ ๋๋ฆฐ oplog ๋ฉ์์ง์ ํน์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
|