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