定義
serverStatus
serverStatus命令用于返回數(shù)據(jù)庫進程狀態(tài)的概述文檔. 大部分監(jiān)控程序都會定期運行此命令來收集實例相關(guān)的統(tǒng)計信息:
{ serverStatus: 1 }
其值(即上面的1)不影響命令的操作。
2.4版本中修改: 在2.4中, 你可以下面的示例一樣,動態(tài)地抑制serverStatus的輸出部分, 或通過向command文檔添加字段來包含抑制部分:
db.runCommand( { serverStatus: 1, repl: 0 } ) db.runCommand( { serverStatus: 1, metrics: 0, locks: 0 } ) serverStatus會默認包含除rangeDeleter和repl文檔中某些內(nèi)容外的所有字段。
注意
您只能動態(tài)地包含默認情況下serverStatus文檔中未包含的頂級字段。
當然您也可以排除serverStatus默認包含的任何字段。
也可參考
輸出
serverStatus命令反映的是數(shù)據(jù)庫狀態(tài)的信息集合。這些數(shù)據(jù)對于診斷和評估MongoDB實例的性能是非常有用的.
3.0版本中修改: 服務器狀態(tài)輸出報告中不再包含workingSet, indexCounters, recordStats部分.
也可參考
serverStatus的大部分輸出也可通過mongostat來動態(tài)顯示。 更多信息請參閱mongostat命令。
Instance信息
serverStatus.host
host字段表示系統(tǒng)的主機名稱.在Unix/Linux系統(tǒng)中,等同于hostname命令輸出.
serverStatus.version
version字段包含了當前mongod或mongos實例上運行的MongoDB版本。
serverStatus.process
process字段用于標識當前運行的MongoDB實例的類別.可能值為:
serverStatus.uptime
serverStatus.uptimeEstimate
uptimeEstimate提供了由MongoDB內(nèi)部粗粒度計時系統(tǒng)計算出的正常運行時間.
serverStatus.localTime
localTime值用以表示服務器的當前UTC時間(ISODate格式表示)。
locks
serverStatus.locks
3.0版本中修改.
locks文檔中含有針對每種鎖類型、模式提供細粒度報告的內(nèi)嵌文檔.
可能的鎖類型如下所示:
- Global 代表的是全局鎖.
- MMAPV1Journal 代表MMAPv1存儲引擎所特有的鎖類型(用于同步j(luò)ournal寫入);對于非MMAPv1存儲引擎s, MMAPV1Journal的模式是空的。
- Database代表的是數(shù)據(jù)庫鎖.
- Collection代表的是集合鎖.
- Metadata代表的是元數(shù)據(jù)鎖.
- oplog代表的是oplog上的鎖.
可能的鎖模式如下:
- R 代表Shared (S) lock(共享鎖).
- W代表Exclusive (X) lock(獨占鎖).
- r代表Intent Shared (IS) lock.
- w代表Intent Exclusive (IX) lock.
所有值的類型都是NumberLong().
serverStatus.locks.acquireCount
用以表示特定模式下獲取鎖的次數(shù)。
serverStatus.locks.acquireWaitCount
因鎖沖突而等待鎖的次數(shù).
serverStatus.locks.timeAcquiringMicros
獲取鎖時累計等待的時間(單位:毫秒).
timeAcquiringMicros除以acquireWaitCount就可得到特定鎖模式下的平均等待時間.
serverStatus.locks.deadlockCount
獲取鎖時遇到死鎖的次數(shù).
globalLock
serverStatus.globalLock
globalLock數(shù)據(jù)結(jié)構(gòu)包含有關(guān)數(shù)據(jù)庫當前鎖狀態(tài),歷史鎖狀態(tài),當前操作隊列,以及活動客戶端數(shù)量等信息.
serverStatus.globalLock.totalTime
totalTime值表示自數(shù)據(jù)庫最后一次啟動并創(chuàng)建globalLock的時間(單位:微秒).這大致相當于服務器總正常運行時間。
serverStatus.globalLock.currentQueue
currentQueue數(shù)據(jù)結(jié)構(gòu)值提供了因鎖而造成操作排隊數(shù)量的有關(guān)信息.
serverStatus.globalLock.currentQueue.total
total值提供了因等待鎖而造成操作排隊的總數(shù).
不需要關(guān)注那些小隊列,尤其是很短的操作.
但應該留意等待讀鎖(即readers)和寫鎖(即writers)的隊列大小.
serverStatus.globalLock.currentQueue.readers
readers值表示當前正在等待讀鎖而排隊的操作數(shù)量. 不需要關(guān)注那么較小的讀取隊列,尤其是很短的操作。
serverStatus.globalLock.currentQueue.writers
writers值表示當前正在等待寫鎖而排隊的操作數(shù)量. 不需要關(guān)注那么較小的寫隊列,尤其是很短的操作。
globalLock.activeClients
serverStatus.globalLock.activeClients
activeClients數(shù)據(jù)結(jié)構(gòu)提供了有關(guān)已連接客戶端數(shù)量的信息,以及它們執(zhí)行的操作類型(例如讀取或?qū)懭耄┑脑敿毿畔ⅰJ褂么藬?shù)據(jù)可為currentQueue數(shù)據(jù)提供上下文.
serverStatus.globalLock.activeClients.total
total的值表示當前已連接到數(shù)據(jù)庫的活動客戶端總個數(shù). 它包含了那些正在執(zhí)行讀操作(即readers)和寫操作(即writers)的客戶端總數(shù).
serverStatus.globalLock.activeClients.readers
readers值表示執(zhí)行讀操作的活動客戶端連接總數(shù)。
serverStatus.globalLock.activeClients.writers
writers值表示執(zhí)行寫操作的活動客戶端連接總數(shù)。
mem
serverStatus.mem
serverStatus.mem.bits
bits值為64或32, 具體取決于在mongod編譯過程中指定的目標架構(gòu).多數(shù)情況下,此值為64,且此值不隨時間改變.
serverStatus.mem.resident
resident值大致等同于當前數(shù)據(jù)庫進程消耗的內(nèi)存(RAM)數(shù)值,單位MB. 正常情況下此值往往會增長.
在專用數(shù)據(jù)庫服務器中,這個數(shù)字往往會接近系統(tǒng)的內(nèi)存總量。
serverStatus.mem.virtual
virtual值表示當前mongod進程消耗的虛擬內(nèi)存總量,單位MB. 在啟用了journaling時, 此值至少是mapped值的兩倍.如果virtual值明顯高于mapped值 (如,是其3倍或更高),則表示存在內(nèi)存泄露.
serverStatus.mem.supported
supported為true,則表明底層系統(tǒng)支持擴展內(nèi)存,反之,則底層系統(tǒng)不支持擴展內(nèi)存,在這種情況下,數(shù)據(jù)庫服務也不能訪問其它mem值.
serverStatus.mem.mapped
mapped表示數(shù)據(jù)庫使用的映射內(nèi)存數(shù)量,單位MB. 由于MongoDB使用的是內(nèi)存映射文件,因此其值 大致上等同于數(shù)據(jù)庫的總大小.
serverStatus.mem.mappedWithJournal
mappedWithJournal表示數(shù)據(jù)庫使用的映射內(nèi)存,同時也包含日志消耗內(nèi)存的總量,單位MB.
此值通常是mapped值的兩倍. 只在啟用了日志時,才會包含此字段.
serverStatus.mem.note
僅在supported為false時,才會出現(xiàn)note字段.note字段會包含這樣的文本: "not all mem infosupport on this platform".
connections
serverStatus.connections
connections的子文檔提供了有關(guān)入站連接的當前狀態(tài),以及數(shù)據(jù)庫可用連接等信息.
可使用這些值來評估服務器當前的負載和容量需求。
serverStatus.connections.current
current表示連接到數(shù)據(jù)庫服務器的客戶端數(shù)目. 此數(shù)字也包含了當前shell會話連接.可考慮available的值以為此基準提供更多上下文參考。這數(shù)值包含了所有入站連接:包括所有shell連接或來自其它服務器(如復制集成員或mongos實例)的連接.
serverStatus.connections.available
available表示數(shù)據(jù)庫可提供的未使用且可用的入站連接數(shù)目. 可將此值與current值結(jié)合起來理解數(shù)據(jù)庫的連接負載,并查看UNIX ulimit Settings 文檔來了解系統(tǒng)可用連接閥值的更多信息.
serverStatus.connections.totalCreated
totalCreated表示服務器創(chuàng)建的所有入站連接總數(shù).此數(shù)字包含已經(jīng)關(guān)閉的連接數(shù)目.
extra_info
serverStatus.extra_info
extra_info數(shù)據(jù)結(jié)構(gòu)提供了由mongod實例收集的有關(guān)底層系統(tǒng)信息的數(shù)據(jù). 您的系統(tǒng)有可能只會報告以下字段的子集.
serverStatus.extra_info.note
note字段會根據(jù)底層平臺來報告數(shù)據(jù),并具有文本: “fields vary by platform.”
serverStatus.extra_info.heap_usage_bytes
heap_usage_bytes字段只在Unix/Linux系統(tǒng)可用,且會報告數(shù)據(jù)庫進程所消耗的堆空間字節(jié).
serverStatus.extra_info.page_faults
page_faults用于報告需要磁盤操作的頁面錯誤總數(shù). 頁面錯誤指的是數(shù)據(jù)庫服務器需要訪問內(nèi)存中不可用數(shù)據(jù)的操作. page_faults計數(shù)器會在性能不佳時顯著增長,其原因可能與有限的內(nèi)存環(huán)境,以及較大的數(shù)據(jù)集有關(guān). 有限的零星頁面錯誤不代表系統(tǒng)出了問題.
Windows系統(tǒng)描述了硬頁面錯誤(通過磁盤IO來移動頁面)與軟頁面錯誤(通過在內(nèi)存中移動頁面)的區(qū)別,但MongoDB會統(tǒng)計所有硬頁面和軟頁面錯誤.
backgroundFlushing
注意
backgroundFlushing信息只會出現(xiàn)在那些使用了MMAPv1存儲引擎的實例中.
serverStatus.backgroundFlushing
mongod會周期地將寫入數(shù)據(jù)刷新至磁盤(在默認配置中,間隔周期為60秒),而backgroundFlushing數(shù)據(jù)結(jié)構(gòu)就包含了與這些操作相關(guān)的數(shù)據(jù). 如果您對寫入性能和日志有疑慮,那么可以參考這些值.
serverStatus.backgroundFlushing.flushes
flushes是一個計數(shù)器,用于收集數(shù)據(jù)庫刷新所有寫入至磁盤的次數(shù).
此值會隨著數(shù)據(jù)庫運行周期的加長而不斷增長.
serverStatus.backgroundFlushing.total_ms
total_ms值表示mongod進程花在刷新寫入至磁盤的總時間,單位毫秒.
由于此值是一個絕對值,因此可參考flushes和average_ms值以提供更好的上下文參考.
serverStatus.backgroundFlushing.average_ms
average_ms值描述了總刷新(即flushes值)次數(shù)與總刷新時間(即total_ms值)的比例關(guān)系.
flushes值越大越能代表正常時間,但異常數(shù)據(jù)可能會歪曲此值.可使用last_ms來確保高平均值不會被瞬態(tài)歷史問題或隨機寫入分配所扭曲.
serverStatus.backgroundFlushing.last_ms
last_ms字段代表的是完成最后一次刷新操作的時間,單位毫秒. 可使用此值來驗證服務器的當前性能是否與average_ms和total_ms提供的歷史數(shù)據(jù)一致.
serverStatus.backgroundFlushing.last_finished
last_finished字段表示最后一次完成刷新操作的時間戳(格式為ISODate).如果此值相對服務器時間超過了數(shù)分鐘,那么重啟數(shù)據(jù)庫可能會造成數(shù)據(jù)丟失.此外運行中的常規(guī)阻塞寫入操作也可能歪曲此值。
cursors
serverStatus.cursors
cursors 數(shù)據(jù)結(jié)構(gòu)提供了有關(guān)游標狀態(tài)及其使用等信息.
serverStatus.cursors.note
note用于指定使用serverStatus.metrics.cursor字段來代替serverStatus.cursors.
serverStatus.cursors.totalOpen
totalOpen表示MongoDB為客戶端維護的游標數(shù)量. 由于MongoDB會釋放未使用的游標,所以通常此值會很小. 然而,如果隊列中存在過期的tailable cursor或存在大量操作時,此值會增長.
serverStatus.cursors.clientCursors_size
自1.x版本已廢棄: 另請參考totalOpen
serverStatus.cursors.timedOut
timedOut表示自服務器進程啟動以來,已超時的游標總數(shù).如果此值很大或按固定頻率增長,那么通常表示應用程序存在錯誤.
serverStatus.cursors.totalNoTimeout
serverStatus.cursors.pinned
serverStatus.cursors.pinned表示固定打開游標的個數(shù).
network
serverStatus.network
network數(shù)據(jù)提供了有關(guān)MongoDB網(wǎng)絡(luò)使用情況的信息.
serverStatus.network.bytesIn
bytesIn字段值表示數(shù)據(jù)庫服務器收到的總字節(jié)數(shù).
serverStatus.network.bytesOut
bytesOut字段值反映的是數(shù)據(jù)庫發(fā)出的總字節(jié)數(shù).
可使用此值來判斷mongod進程發(fā)出的網(wǎng)絡(luò)流量與整體應用程序接收的流量是否一致.
serverStatus.network.numRequests
numRequests字段值表示服務器接收到不同請求的總數(shù)量. 此值可為bytesIn和bytesOut值提供上下文參考,以判斷MongoDB的網(wǎng)絡(luò)利用率與應用程序的期望值是否一致.
repl
serverStatus.repl
repl數(shù)據(jù)結(jié)構(gòu)包含了有關(guān)MongoDB復制集配置的狀態(tài)信息. 這些值只在當前主機了啟用復制集時出現(xiàn).
serverStatus.repl.setName
serverStatus.repl.ismaster
ismaster字段表示當前節(jié)點在復制集中是否是master節(jié)點,是則為ture,反之則為false.
serverStatus.repl.secondary
secondary字段表示當前節(jié)點在復制集中是否是secondray節(jié)點,是則為true,反之則false.
serverStatus.repl.primary
3.0.0版本中出現(xiàn)的新選項.
serverStatus.repl.hosts
hosts是一個數(shù)組,用于列出當前復制集中的其它成員. 復制集的每個成員都會按hostname:port格式進行顯示.
serverStatus.repl.me
3.0.0版本中出現(xiàn)的新選項.
復制集中當前成員的[主機名]:[端口]組合。
serverStatus.repl.rbid
3.0.0版本中出現(xiàn)的新選項.
Rollback 標識符. 用于確定當前mongod實例是否發(fā)生了回滾.
serverStatus.repl.slaves
3.0.0版本中出現(xiàn)的新選項.
針對每個復制集成員的文檔數(shù)組,用于報告此成員的復制過程. 通常會是primary,但如果使用了鏈式復制則是secondaries.
要包含此輸出,你必須向serverStatus傳遞repl選項,如下所示:
db.serverStatus({ "repl": 1 }) db.runCommand({ "serverStatus": 1, "repl": 1 })
slaves片斷的內(nèi)容取決于每個成員的復制源. 本節(jié)支持的內(nèi)部操作,僅作內(nèi)部和診斷使用。
serverStatus.repl.slaves[n].rid
ObjectId用作復制集成員的ID.僅作內(nèi)部使用.
serverStatus.repl.slaves[n].host
針對復制集成員[hostname]:[port]格式中的host.
serverStatus.repl.slaves[n].optime
表示當前成員執(zhí)行oplog中最后一次操作的時間.
serverStatus.repl.slaves[n].memberID
針對此復制集成員的整形標識符.
opcountersRepl
serverStatus.opcountersRepl
opcountersRepl數(shù)據(jù)結(jié)構(gòu)與opcounters數(shù)據(jù)結(jié)構(gòu)類似,都提供了按類型來統(tǒng)計數(shù)據(jù)庫復制操作情況,并可借此來更細粒度地分析復制負載.此值只在當前主機啟用了復制時出現(xiàn).
因復制期間MongoDB序列化操作方式的差異,此值可能不同于opcounters值.
這些數(shù)值會隨著數(shù)據(jù)庫的使用,而不斷增長,因此分析這些值可跟蹤數(shù)據(jù)庫的使用情況。
serverStatus.opcountersRepl.insert
insert表示自mongod實例最后一次啟動以來,執(zhí)行復制插入操作總數(shù).
serverStatus.opcountersRepl.query
queryt表示自mongod實例最后一次啟動以來,執(zhí)行復制查詢操作的總數(shù).
serverStatus.opcountersRepl.update
update表示自mongod實例最后一次啟動以來,執(zhí)行復制更新操作的總數(shù).
serverStatus.opcountersRepl.delete
delete表示自mongod實例最后一次啟動以來,執(zhí)行復制刪除操作的總數(shù).
serverStatus.opcountersRepl.getmore
getmore表示自mongod實例最后一次啟動以來,執(zhí)行g(shù)etmore操作的總數(shù).
即使query值很低,此值也可能很高. Secondary成員可作為復制過程的一部分發(fā)送getMore操作.
serverStatus.opcountersRepl.command
command表示自mongod實例最后一次啟動以來,執(zhí)行復制命令的總數(shù).
opcounters
serverStatus.opcounters
opcounters數(shù)據(jù)結(jié)構(gòu)提供了按類型來統(tǒng)計數(shù)據(jù)庫操作情況,并可借此來更細粒度地分析數(shù)據(jù)庫負載.
注意
opcounters中的數(shù)據(jù)會將影響多個文檔的操作,如批量插入或批量更新操作,視為單個操作.
有關(guān)更詳細的文檔級操作,請參閱文檔。
此外,這些值反映的是接收到的操作,即使操作未成功執(zhí)行,其數(shù)值也會增加.
serverStatus.opcounters.insert
serverStatus.opcounters.query
serverStatus.opcounters.update
serverStatus.opcounters.delete
serverStatus.opcounters.getmore
即使query數(shù)值很低,此值也會很高. Secondary節(jié)點會在復制過程中發(fā)送getMore操作.
serverStatus.opcounters.command
rangeDeleter
3.0.0版本引入的新選項.
注意
rangeDeleter數(shù)據(jù)只在明確啟用的情況下,才會包含在serverStatus的輸出中.
要返回rangeDeleter,可使用下面的某個命令:
db.serverStatus( { rangeDeleter: 1 } ) db.runCommand( { serverStatus: 1, rangeDeleter: 1 } )
serverStatus.rangeDeleter
serverStatus.rangeDeleter.lastDeleteStats
此值是一個數(shù)組文檔,每個數(shù)組元素都會報告最后一次執(zhí)行遷移清理操作的情況.
lastDeleteStats最多只會報告最后10個操作的數(shù)據(jù).
serverStatus.rangeDeleter.lastDeleteStats[n].deletedDocs
在遷移清理操作過程中刪除的文檔個數(shù).
serverStatus.rangeDeleter.lastDeleteStats[n].queueStart
用于反映操作進入遷移清理操作隊列的時間戳.
serverStatus.rangeDeleter.lastDeleteStats[n].queueEnd
用于反映遷移清理開始時的時間戳。
serverStatus.rangeDeleter.lastDeleteStats[n].deleteStart
作為遷移清理操作的一部分,執(zhí)行刪除過程的開始時間戳.
serverStatus.rangeDeleter.lastDeleteStats[n].deleteEnd
作為遷移清理操作的一部分,結(jié)束刪除過程的時間戳.
serverStatus.rangeDeleter.lastDeleteStats[n].waitForReplStart
反映遷移清理操作中開始等待復制以處理刪除操作的時間戳.
serverStatus.rangeDeleter.lastDeleteStats[n].waitForReplEnd
反映遷移清理操作中完成等待復制以處理刪除操作的時間戳.
security
3.0.0版本中引入的新選項.
serverStatus.security
報告安全配置細節(jié)的文檔.僅適用于支持TLS / SSL編譯的mongod實例。
serverStatus.security.SSLServerSubjectName
由net.ssl.PEMKeyPassword指定的且與TLS / SSL證書關(guān)聯(lián)的主題名稱.
serverStatus.security.SSLServerHasCertificateAuthority
當TLS/SSL是自我簽發(fā)時,此值為false.
serverStatus.security.SSLServerCertificateExpirationDate
storageEngine
3.0.0版本中的新選項.
serverStatus.storageEngine
用以表示當前存儲引擎相關(guān)數(shù)據(jù)的文檔.
serverStatus.storageEngine.name
用以表示當前存儲引擎名稱的字符串.
asserts
serverStatus.asserts
asserts文檔用以報告數(shù)據(jù)庫中的斷言數(shù)量.雖然斷言錯誤通常不常見,但如果斷言有非零值,則應檢查mongod進程的日志文件以獲取更多信息。 在多數(shù)情況下,這些錯誤是微不足道的,但值得研究。
serverStatus.asserts.regular
regular計數(shù)器用以跟蹤自服務器進程啟動以來引發(fā)的常規(guī)斷言數(shù)。
檢查日志文件以獲取有關(guān)這些消息的更多信息。
serverStatus.asserts.warning
warning計數(shù)器用以跟蹤自服務器進程啟動后引發(fā)的警告數(shù)。
檢查日志文件以獲取有關(guān)這些警告的更多信息。
serverStatus.asserts.msg
msg計數(shù)器用以跟蹤自服務器進程啟動以來引發(fā)的消息斷言數(shù)。
檢查日志文件以獲取有關(guān)這些消息的更多信息。
serverStatus.asserts.user
user計數(shù)器報告自上次服務器進程啟動以來發(fā)生的“用戶斷言”數(shù) . 這些是用戶引發(fā)的錯誤,如磁盤空間溢出或重復鍵. 您可以通過修復應用程序或部署中的問題來防止這些斷言。 檢查MongoDB日志以獲取更多信息。
serverStatus.asserts.rollovers
rollovers計數(shù)器表示自上次服務器進程啟動以來翻滾的次數(shù). 在230條斷言之后,計數(shù)器將翻轉(zhuǎn)到零。 使用此值為斷言數(shù)據(jù)結(jié)構(gòu)中的其他值提供上下文。
writeBacksQueued
serverStatus.writeBacksQueued
當mongos實例中存在重試排隊操作時,writeBacksQueued值將為true. 通常情況下,此選項的值為false.
也可參考
Journaling (dur)
NOTE
serverStatus.dur
MongoDB會按3秒的時間頻率來報告過去3-6秒內(nèi)收集的數(shù)據(jù).
也可參考
Journaling 提供了有關(guān)日志操作的更多信息.
serverStatus.dur.commits
serverStatus.dur.journaledMB
serverStatus.dur.writeToDataFilesMB
serverStatus.dur.compression
( journaled_size_of_data / uncompressed_size_of_data )
serverStatus.dur.commitsInWriteLock
commitsInWriteLock表示在獲得寫鎖時發(fā)生的提交數(shù)量. 寫鎖中的提交表明MongoDB節(jié)點處于高寫入負載之下,并需要進行進一步地診斷.
serverStatus.dur.earlyCommits
serverStatus.dur.timeMS
timeMS文檔提供有關(guān)上一個日志組提交間隔期間日志記錄的各個階段中的mongod實例的性能的信息.
serverStatus.dur.timeMS.dt
dt值以毫秒為單位,用以表示MongoDB收集timeMS數(shù)據(jù)所花費的時間.此字段可為其它timeMS字段值提供上下文參考.
serverStatus.dur.timeMS.prepLogBuffer
prepLogBuffer值以毫秒為單位,用以表示準備寫入日志所花的時間. 此值越小,則日志性能越高.
serverStatus.dur.timeMS.writeToJournal
writeToJournal值以毫秒為單位,用以表示實際寫入日志所花的時間. 文件系統(tǒng)速度和設(shè)備接口可能會影響性能。
serverStatus.dur.timeMS.writeToDataFiles
writeToDataFiles值以毫秒為單位,用以表示日志記錄之后花在寫入數(shù)據(jù)文件上的時間. 文件系統(tǒng)速度和設(shè)備接口可能會影響性能。
serverStatus.dur.timeMS.remapPrivateView
remapPrivateView值以毫秒為單位,用以表示重新映射copy-on-write內(nèi)存映射視圖所花費的時間. 此值越小,則日志性能越高.
serverStatus.dur.timeMS.commits
commits值表示花在提交上的時間,單位毫秒.
serverStatus.dur.timeMS.commitsInWriteLock
commitsInWriteLock值表示獲取到寫鎖時花在提交上的時間,單位毫秒.
metrics
2.4.0版本中的新選項
serverStatus.metrics
serverStatus.metrics.commands
3.0.0版本引入的新選項.
serverStatus.metrics.commands.<command>.failed
serverStatus.metrics.commands.<command>.total
serverStatus.metrics.document
document包含一個反映文檔訪問,修改模式以及數(shù)據(jù)使用情況的文檔.
可將這些值與opcounters文檔中的數(shù)據(jù)進行比較,以跟蹤總操作數(shù).
serverStatus.metrics.document.deleted
deleted表示已刪除文檔的總數(shù).
serverStatus.metrics.document.inserted
inserted表示已插入文檔的總數(shù).
serverStatus.metrics.document.returned
returned表示通過查詢返回的文檔總數(shù).
serverStatus.metrics.document.updated
updated表示已更新文檔的總數(shù).
serverStatus.metrics.getLastError
getLastError表示getLastError使用的文檔。
serverStatus.metrics.getLastError.wtime
serverStatus.metrics.getLastError.wtime.num
serverStatus.metrics.getLastError.wtime.totalMillis
totalMillis用于報告mongod使用寫關(guān)注(即w)時,執(zhí)行getLastError操作所花費的時間(單位毫秒),此寫入關(guān)注會等待復制集的一個或多個成員確認寫操作(即 w值大于1.)
serverStatus.metrics.getLastError.wtimeouts
wtimeouts報告由于getLastError的wtimeout閾值,寫關(guān)注操作超時的次數(shù)。
serverStatus.metrics.operation
operation是一個內(nèi)嵌文檔,其中包含多種更新,查詢操作類型的計數(shù).
serverStatus.metrics.operation.fastmod
fastmod用于報告不會導致文檔增長或索引更新的更新操作數(shù)目.
serverStatus.metrics.operation.idhack
idhack用于報告包含了_id字段的查詢數(shù).
對于這些查詢,MongoDB會使用_id字段上的默認索引,并跳過所有查詢計劃分析.
serverStatus.metrics.operation.scanAndOrder
scanAndOrder用于報告無法使用索引執(zhí)行排序操作的查詢總數(shù).
serverStatus.metrics.operation.writeConflicts
writeConflicts用于報告遇到寫沖突的查詢總數(shù)。
serverStatus.metrics.queryExecutor
queryExecutor用于報告從查詢執(zhí)行系統(tǒng)中返回數(shù)據(jù)的文檔.
serverStatus.metrics.queryExecutor.scanned
scanned用于報告在查詢和查詢計劃評估期間,掃描索引項的總數(shù).
serverStatus.metrics.queryExecutor.scannedObjects
scannedObjects用于報告在查詢和查詢計劃評估期間,掃描文檔的總數(shù).
serverStatus.metrics.record
record是用于報告與磁盤內(nèi)存文件中記錄分配相關(guān)的文檔.
serverStatus.metrics.record.moves
文檔移動是由于操作的結(jié)果,使文檔的大小超過了其分配的記錄大小。
serverStatus.metrics.repl
repl包含一個內(nèi)嵌文檔,用于報告有關(guān)復制進程的指標信息.
serverStatus.metrics.repl.apply
apply包含一個內(nèi)嵌文檔,用于報告復制oplog中的操作.
serverStatus.metrics.repl.apply.batches
batches用于報告復制集次成員上執(zhí)行oplog的應用程序進程.
serverStatus.metrics.repl.apply.batches.num
num用于報告跨數(shù)據(jù)庫使用batches的總數(shù).
serverStatus.metrics.repl.apply.batches.totalMillis
totalMillis用于報告mongod執(zhí)行oplog中操作所花的時間量.
serverStatus.metrics.repl.apply.ops
ops報告要執(zhí)行oplog操作的總數(shù)。
serverStatus.metrics.repl.buffer
在批量執(zhí)行oplog中的操作前,MongoDB會緩沖來自復制同步源中的oplog操作. buffer提供了追蹤oplog buffer的方式. 參考多線程復制來了解更多有關(guān)oplog應用程序過程的信息.
serverStatus.metrics.repl.buffer.count
count用于報告oplog緩沖區(qū)中的操作數(shù)目.
serverStatus.metrics.repl.buffer.maxSizeBytes
maxSizeBytes用于報告緩沖的最大大小.在mongod中,此值是一個常量,不配置.
serverStatus.metrics.repl.buffer.sizeBytes
sizeBytes用于報告oplog緩沖區(qū)中當前內(nèi)容的大小.
serverStatus.metrics.repl.network
network用于報告復制過程所使用的網(wǎng)絡(luò)
serverStatus.metrics.repl.network.bytes
bytes用于報告從復制源中已讀取的數(shù)據(jù)總量.
serverStatus.metrics.repl.network.getmores
getmores用于報告getmore操作,它是oplog復制過程的一部分,用于從oplog游標中請求其它結(jié)果.
serverStatus.metrics.repl.network.getmores.num
num用于報告getmore操作的總數(shù),這是從復制同步源請求一組附加操作的操作.
serverStatus.metrics.repl.network.getmores.totalMillis
totalMillis用于報告從getmore操作收集數(shù)據(jù)所需的總時間.
注意
此數(shù)據(jù)可能非常大,因為MongoDB會等待更多的數(shù)據(jù),即使getmore操作沒有初始返回數(shù)據(jù)。
serverStatus.metrics.repl.network.ops
ops用于報告從復制源中讀取操作的總數(shù).
serverStatus.metrics.repl.network.readersCreated
readersCreated用于報告創(chuàng)建oplog查詢過程的總數(shù). MongoDB會在任何時間因連接錯誤(連接超時或網(wǎng)絡(luò)操作錯誤)而創(chuàng)建一個新的oplog查詢.而且,每次MongoDB選擇一個新的復制源時,ReaderCreated都會增加。
serverStatus.metrics.repl.oplog
serverStatus.metrics.repl.oplog.insert
insert是用于報告向oplog執(zhí)行插入操作的文檔.
serverStatus.metrics.repl.oplog.insert.num
num用于報告向oplog中執(zhí)行插入操作的總數(shù).
serverStatus.metrics.repl.oplog.insert.totalMillis
totalMillis用于報告mongod向oplog中插入數(shù)據(jù)時所花費的總時間.
serverStatus.metrics.repl.oplog.insertBytes
insertBytes表示向oplog上插入文檔的總大小.
serverStatus.metrics.repl.preload
preload用于報告在預提取階段,MongoDB加載文檔和索引至RAM,以提高復制吞吐量.
serverStatus.metrics.repl.preload.docs
docs是一個內(nèi)嵌文檔,用于報告在預提取階段,向內(nèi)存中加載的文檔.
serverStatus.metrics.repl.preload.docs.num
num用于報告在預提取階段,向內(nèi)存中加載的文檔總數(shù).
serverStatus.metrics.repl.preload.docs.totalMillis
totalMillis用于報告在復制預提取階段,向內(nèi)存中加載文檔時所花費的總時間.
serverStatus.metrics.repl.preload.indexes
indexes是一個內(nèi)嵌文檔,用于報告在復制預提取階段,加載進內(nèi)存的索引.
serverStatus.metrics.repl.preload.indexes.num
在更新文檔(作為復制預提取階段的一部分)之前,num用于報告成員加載的索引條目總數(shù).
serverStatus.metrics.repl.preload.indexes.totalMillis
totalMillis用于報告加載索引條目(作為復制預提取階段的一部分) 所花費的時間總量.
serverStatus.metrics.storage.freelist.search.bucketExhausted
serverStatus.metrics.storage.freelist.search.requests
serverStatus.metrics.storage.freelist.search.scanned
scanned用于報告mongod已搜索出可用記錄分配的數(shù)目.
serverStatus.metrics.ttl
serverStatus.metrics.ttl.deletedDocuments
serverStatus.metrics.ttl.passes
serverStatus.metrics.cursor
2.6版本中的新選項.
cursor是一個包含有關(guān)游標狀態(tài)和使用數(shù)據(jù)的文檔.
serverStatus.metrics.cursor.timedOut
2.6版本中的新選項.
timedOut表示自服務器進程啟動以來,超時的游標數(shù)目. 如果此數(shù)值很大或按固定頻率增長,那么這通常意味著應用程序出現(xiàn)了錯誤.
serverStatus.metrics.cursor.open
2.6版本中的新選項.
open是一個內(nèi)嵌文檔,它包含了打開游標的相關(guān)信息.
serverStatus.metrics.cursor.open.noTimeout
2.6版本中的新選項.
serverStatus.metrics.cursor.open.pinned
2.6版本中的新選項.
serverStatus.metrics.cursor.open.pinned表示固定(pinned)打開游標的個數(shù).
serverStatus.metrics.cursor.open.total
2.6版本中的新選項.
total表示MongoDB為客戶端維護游標的數(shù)目. 因為MongoDB會釋放未使用游標,因此通常此值很小或為0. 但是,如果這里有一個過期tailable游標隊列或者具有大量操作,此值可能會上升.
serverStatus.metrics.cursor.open.singleTarget
3.0.0版本中的新選項.
serverStatus.metrics.cursor.open.multiTarget
3.0.0版本中的新選項.
wiredTiger
3.0.0版本中的新選項.
注意
一些統(tǒng)計信息,如serverStatus.wiredTiger.LSM,為服務器匯總。
serverStatus.wiredTiger.uri
3.0.0版本中的新選項.
serverStatus.wiredTiger.uri包含一個字符串,一般由MongoDB內(nèi)部使用.
serverStatus.wiredTiger.LSM
3.0.0版本中的新選項.
serverStatus.wiredTiger.LSM用以返回LSM (Log-Structured Merge)樹的統(tǒng)計信息.
此值反映的是所有被服務器使用的LSM樹信息.
serverStatus.wiredTiger.async
3.0.0版本中的新選項.
serverStatus.wiredTiger.async返回與異步操作API相關(guān)的統(tǒng)計信息。 MongoDB未使用此選項。
serverStatus.wiredTiger.block-manager
3.0.0版本中的新選項.
serverStatus.wiredTiger.block-manager將返回block管理器操作上的統(tǒng)計信息.
serverStatus.wiredTiger.cache
3.0.0版本中的新選項.
serverStatus.wiredTiger.cache用于從緩存中返回緩存和頁面驅(qū)逐的統(tǒng)計信息.
如果緩存無足夠的空間來加載其它數(shù)據(jù),WiredTiger會驅(qū)逐緩存中的頁面以釋放空間.
注意
storage.wiredTiger.engineConfig.cacheSizeGB只能限制WiredTiger緩存的大小,而不能限制mongod使用的內(nèi)存總量. WiredTiger緩存只是MongoDB使用RAM的一個組件. MongoDB也會通過文件系統(tǒng)緩存來自動使用機器上所有空閑內(nèi)存(文件系統(tǒng)緩存中的數(shù)據(jù)經(jīng)過壓縮的).
此外,操作系統(tǒng)也會使用任何空閑RAM來緩存文件系統(tǒng)塊.
為了遷就RAM的其它消費者,你可以降低WiredTiger緩存大小. 應該避免將WiredTiger緩存大小設(shè)置為超過默認值.
如果你通過容器(如lxc, cgroups, Docker等容器,不能使用這些容器的所有可用RAM)來運行mongod, 你必須將storage.wiredTiger.engineConfig.cacheSizeGB的值設(shè)為小于容器可用RAM的值.
明確的數(shù)量取決于運行于容器中的其它進程.
serverStatus.wiredTiger.connection
3.0.0版本中的新選項.
serverStatus.wiredTiger.connection返回與WiredTiger連接相關(guān)的統(tǒng)計信息.
serverStatus.wiredTiger.cursor
3.0.0版本中的新選項.
serverStatus.wiredTiger.cursor返回與WiredTiger游標相關(guān)的統(tǒng)計信息.
serverStatus.wiredTiger.data-handle
3.0.0版本中的新選項.
serverStatus.wiredTiger.data-handle返回數(shù)據(jù)處理和掃描的統(tǒng)計信息。
serverStatus.wiredTiger.log
3.0.0版本中的新選項.
serverStatus.wiredTiger.log用于返回WiredTiger的寫提前日志(write ahead log)統(tǒng)計信息.
也可參考
serverStatus.wiredTiger.reconciliation
3.0.0版本中的新選項.
serverStatus.wiredTiger.reconciliation用于返回和解過程的統(tǒng)計信息。
serverStatus.wiredTiger.session
3.0.0版本中的新選項.
serverStatus.wiredTiger.session用于返回打開的游標數(shù),以及打開的會話數(shù).
serverStatus.wiredTiger.thread-yield
3.0.0版本中的新選項.
serverStatus.wiredTiger.thread-yield用于在頁面獲取期間作出讓步的統(tǒng)計信息.
serverStatus.wiredTiger.transaction
3.0.0版本中的新選項.
serverStatus.wiredTiger.transactions返回有關(guān)事務檢查點和操作的統(tǒng)計信息。
serverStatus.wiredTiger.concurrentTransactions
3.0.0版本中的新選項.
serverStatus.wiredTiger.concurrentTransactions返回有關(guān)允許進入WiredTiger存儲引擎的并發(fā)事務數(shù)量的信息. 此設(shè)置是MongoDB特有的.
要更改并發(fā)讀取和寫入事務的設(shè)置,可參考wiredTigerConcurrentReadTransactions 和wiredTigerConcurrentWriteTransactions.