代码改变世界

MongoDB性能监控调优

2023-02-07 18:03  abce  阅读(183)  评论(0编辑  收藏  举报

1.分析锁

> db.serverStatus().globalLock
{
        "totalTime" : NumberLong("5011164491000"),
        "currentQueue" : {
                "total" : 0,
                "readers" : 0,
                "writers" : 0
        },
        "activeClients" : {
                "total" : 0,
                "readers" : 0,
                "writers" : 0
        }
}


> db.serverStatus().locks
{
        "ParallelBatchWriterMode" : {
                "acquireCount" : {#该类型的锁被获取的次数
                        "r" : NumberLong(36502976),
                        "W" : NumberLong(1955332)
                },
                "acquireWaitCount" : {#锁等待的次数
                        "r" : NumberLong(1082),
                        "W" : NumberLong(306)
                },
                "timeAcquiringMicros" : {#等待的累计时间,单位是微妙
                        "r" : NumberLong(1154708),
                        "W" : NumberLong(129211)
                }
        },
        "FeatureCompatibilityVersion" : {
                "acquireCount" : {
                        "r" : NumberLong(68900575),
                        "w" : NumberLong(43441060)
                }
        },
        "ReplicationStateTransition" : {
                "acquireCount" : {
                        "w" : NumberLong(87266132),
                        "W" : NumberLong(2)
                },
                "acquireWaitCount" : {
                        "w" : NumberLong(2)
                },
                "timeAcquiringMicros" : {
                        "w" : NumberLong(2959)
                }
        },
        "Global" : {#全局锁
                "acquireCount" : {
                        "r" : NumberLong(70768407),
                        "w" : NumberLong(45449430),
                        "W" : NumberLong(6)
                }
        },
        "Database" : {#数据库级别锁
                "acquireCount" : {
                        "r" : NumberLong(8803291),
                        "w" : NumberLong(43475380),
                        "W" : NumberLong(22)
                }
        },
        "Collection" : {#集合级别锁
                "acquireCount" : {
                        "r" : NumberLong(14011371),
                        "w" : NumberLong(43475285),
                        "R" : NumberLong(17),
                        "W" : NumberLong(61)
                }
        },
        "Mutex" : {
                "acquireCount" : {
                        "r" : NumberLong(28749023)
                }
        },
        "oplog" : {#oplog级别的锁
                "acquireCount" : {
                        "r" : NumberLong(5345043),
                        "w" : NumberLong(1)
                }
        }
}

MMAPv1的锁是在整个集合级别;WiredTiger的锁是在文档级别

 

2.检查内存

> db.serverStatus().mem
{ "bits" : 64, "resident" : 7291, "virtual" : 9530, "supported" : true }

WiredTiger缓存的调优

> db.serverStatus().wiredTiger.cache
{
        "application threads page read from disk to cache count" : 320058297,
        "application threads page read from disk to cache time (usecs)" : NumberLong("17826172899"),
        "application threads page write from cache to disk count" : 12247036,
        "application threads page write from cache to disk time (usecs)" : 197573446,
        "bytes allocated for updates" : 2789574,
        "bytes belonging to page images in the cache" : NumberLong("6186510750"),
        "bytes belonging to the history store table in the cache" : 571,
        "bytes currently in the cache" : NumberLong("6212412873"),#当前缓存数据的大小,不应该超过给wt分配的最大值
        "bytes dirty in the cache cumulative" : NumberLong("1734766997079"),#脏数据的大小
        "bytes not belonging to page images in the cache" : 25902122,
        "bytes read into cache" : NumberLong("18984807567903"),
        "bytes written from cache" : NumberLong("406860409338"),
        "cache overflow score" : 0,
        "checkpoint blocked page eviction" : 1717,
        "checkpoint of history store file blocked non-history store page eviction" : 0,
        "eviction calls to get a page" : 326297146,
        "eviction calls to get a page found queue empty" : 1971080,
        "eviction calls to get a page found queue empty after locking" : 3626168,
        "eviction currently operating in aggressive mode" : 0,
        "eviction empty score" : 0,
        "eviction gave up due to detecting an out of order on disk value behind the last update on the chain" : 0,
        "eviction gave up due to detecting an out of order tombstone ahead of the selected on disk update" : 0,
        "eviction gave up due to detecting an out of order tombstone ahead of the selected on disk update after validating the update chain" : 0,
        "eviction gave up due to detecting out of order timestamps on the update chain after the selected on disk update" : 0,
        "eviction passes of a file" : 9224187,
        "eviction server candidate queue empty when topping up" : 1898078,
        "eviction server candidate queue not empty when topping up" : 1729248,
        "eviction server evicting pages" : 0,
        "eviction server slept, because we did not make progress with eviction" : 6752849,
        "eviction server unable to reach eviction goal" : 0,
        "eviction server waiting for a leaf page" : 8638245,
        "eviction state" : 64,
        "eviction walk most recent sleeps for checkpoint handle gathering" : 312,
        "eviction walk target pages histogram - 0-9" : 3629155,
        "eviction walk target pages histogram - 10-31" : 1147603,
        "eviction walk target pages histogram - 128 and higher" : 0,
        "eviction walk target pages histogram - 32-63" : 1465812,
        "eviction walk target pages histogram - 64-128" : 2981617,
        "eviction walk target pages reduced due to history store cache pressure" : 0,
        "eviction walk target strategy both clean and dirty pages" : 177,
        "eviction walk target strategy only clean pages" : 9169334,
        "eviction walk target strategy only dirty pages" : 54676,
        "eviction walks abandoned" : 264369,
        "eviction walks gave up because they restarted their walk twice" : 2677780,
        "eviction walks gave up because they saw too many pages and found no candidates" : 562949,
        "eviction walks gave up because they saw too many pages and found too few candidates" : 3589,
        "eviction walks reached end of tree" : 5813050,
        "eviction walks restarted" : 0,
        "eviction walks started from root of tree" : 3345605,
        "eviction walks started from saved location in tree" : 5878582,
        "eviction worker thread active" : 4,
        "eviction worker thread created" : 0,
        "eviction worker thread evicting pages" : 320262154,
        "eviction worker thread removed" : 0,
        "eviction worker thread stable number" : 0,
        "files with active eviction walks" : 0,
        "files with new eviction walks started" : 3135270,
        "force re-tuning of eviction workers once in a while" : 0,
        "forced eviction - history store pages failed to evict while session has history store cursor open" : 4,
        "forced eviction - history store pages selected while session has history store cursor open" : 624,
        "forced eviction - history store pages successfully evicted while session has history store cursor open" : 0,
        "forced eviction - pages evicted that were clean count" : 157409,
        "forced eviction - pages evicted that were clean time (usecs)" : 368362,
        "forced eviction - pages evicted that were dirty count" : 4129,
        "forced eviction - pages evicted that were dirty time (usecs)" : 18483606,
        "forced eviction - pages selected because of a large number of updates to a single item" : 4050,
        "forced eviction - pages selected because of too many deleted items count" : 8068,
        "forced eviction - pages selected count" : 166541,
        "forced eviction - pages selected unable to be evicted count" : 805,
        "forced eviction - pages selected unable to be evicted time" : 648,
        "hazard pointer blocked page eviction" : 395989,
        "hazard pointer check calls" : 320440980,
        "hazard pointer check entries walked" : NumberLong("5277438613"),
        "hazard pointer maximum array length" : 1,
        "history store score" : 0,
        "history store table insert calls" : 6531686,
        "history store table insert calls that returned restart" : 0,
        "history store table max on-disk size" : 0,
        "history store table on-disk size" : 32768,
        "history store table out-of-order resolved updates that lose their durable timestamp" : 0,
        "history store table out-of-order updates that were fixed up by reinserting with the fixed timestamp" : 0,
        "history store table reads" : 0,
        "history store table reads missed" : 0,
        "history store table reads requiring squashed modifies" : 0,
        "history store table truncation by rollback to stable to remove an unstable update" : 0,
        "history store table truncation by rollback to stable to remove an update" : 1,
        "history store table truncation to remove an update" : 0,
        "history store table truncation to remove range of updates due to key being removed from the data page during reconciliation" : 0,
        "history store table truncation to remove range of updates due to out-of-order timestamp update on data page" : 0,
        "history store table writes requiring squashed modifies" : 41,
        "in-memory page passed criteria to be split" : 31004,
        "in-memory page splits" : 4213,
        "internal pages evicted" : 117773,
        "internal pages queued for eviction" : 117959,
        "internal pages seen by eviction walk" : 20357482,
        "internal pages seen by eviction walk that are already queued" : 16261,
        "internal pages split during eviction" : 43,
        "leaf pages split during eviction" : 22264,
        "maximum bytes configured" : NumberLong("7781482496"), #wt引擎分配的最大内存
        "maximum page size at eviction" : 360,
        "modified pages evicted" : 143987,
        "modified pages evicted by application threads" : 0,
        "operations timed out waiting for space in cache" : 0,
        "overflow pages read into cache" : 0,
        "page split during eviction deepened the tree" : 0,
        "page written requiring history store records" : 307440,
        "pages currently held in the cache" : 95035,
        "pages evicted by application threads" : 12285,
        "pages evicted in parallel with checkpoint" : 2013599,
        "pages queued for eviction" : 362322071,
        "pages queued for eviction post lru sorting" : 366892162,
        "pages queued for urgent eviction" : 16184398,
        "pages queued for urgent eviction during walk" : 1319,
        "pages queued for urgent eviction from history store due to high dirty content" : 0,
        "pages read into cache" : 320058563,
        "pages read into cache after truncate" : 12961,
        "pages read into cache after truncate in prepare state" : 0,
        "pages requested from the cache" : NumberLong("7901292705"),
        "pages seen by eviction walk" : 407035140,
        "pages seen by eviction walk that are already queued" : 2325112,
        "pages selected for eviction unable to be evicted" : 404950,
        "pages selected for eviction unable to be evicted because of active children on an internal page" : 5533,
        "pages selected for eviction unable to be evicted because of failure in reconciliation" : 4,
        "pages selected for eviction unable to be evicted because of race between checkpoint and out of order timestamps handling" : 0,
        "pages walked for eviction" : NumberLong("3782243302"),
        "pages written from cache" : 12309253,
        "pages written requiring in-memory restoration" : 10496,
        "percentage overhead" : 8,
        "the number of times full update inserted to history store" : 3048395,
        "the number of times reverse modify inserted to history store" : 3483291,
        "tracked bytes belonging to internal pages in the cache" : 18964141,
        "tracked bytes belonging to leaf pages in the cache" : NumberLong("6193448732"),
        "tracked dirty bytes in the cache" : 1451807,
        "tracked dirty pages in the cache" : 5,
        "unmodified pages evicted" : 319887864
}

 

3.连接的监控

> db.serverStatus().connections
{
        "current" : 78,
        "available" : 51122,
        "totalCreated" : 1011819,
        "active" : 23,
        "threaded" : 78,
        "exhaustIsMaster" : 4,
        "exhaustHello" : 16,
        "awaitingTopologyChanges" : 12371
}

 

4.复制延迟监控

abce:PRIMARY> db.printSlaveReplicationInfo() 
WARNING: printSlaveReplicationInfo is deprecated and may be removed in the next major release. Please use printSecondaryReplicationInfo instead.
source: 192.16.12.24:27017
        syncedTo: Tue Feb 07 2023 13:41:39 GMT+0800 (CST)
        0 secs (0 hrs) behind the primary 
source: 192.16.12.25:27017
        syncedTo: Tue Feb 07 2023 13:41:39 GMT+0800 (CST)
        0 secs (0 hrs) behind the primary 
abce:PRIMARY> rs.printSlaveReplicationInfo()
WARNING: printSlaveReplicationInfo is deprecated and may be removed in the next major release. Please use printSecondaryReplicationInfo instead.
source: 192.16.12.24:27017
        syncedTo: Tue Feb 07 2023 13:41:49 GMT+0800 (CST)
        0 secs (0 hrs) behind the primary 
source: 192.16.12.25:27017
        syncedTo: Tue Feb 07 2023 13:41:49 GMT+0800 (CST)
        0 secs (0 hrs) behind the primary 
abce:PRIMARY>