国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

靈活運用$currentop管道符進行Mongodb會話管理

IT那活兒 / 2823人閱讀
靈活運用$currentop管道符進行Mongodb會話管理

在DBA的日常工作中,數(shù)據(jù)庫的會話監(jiān)控和管理是一項十分重要的工作,在關(guān)系型數(shù)據(jù)庫中,有v$session、processlist、pg_stat_activity等表或者視圖提供會話信息查詢,但是在非關(guān)系型的mongodb中,除了local庫的system.session集合中存了簡單的用戶信息外,并無其他集合存了會話信息,只能通過db.currentOp()命令來采集信息。


db.currentOp()輸出的結(jié)果如下:





testrs:PRIMARY>db.currentOp();

{

       "inprog": [

{

"host": "standbydb:27017",---實例信息

"desc": "conn445", ---連接描述

"connectionId": 445,---連接ID

"client": "192.168.56.50:55029", ---客戶端IP和端口號

"clientMetadata": { ---客戶端信息,包括驅(qū)動、操作系統(tǒng)等

"driver": {

"name": "NetworkInterfaceASIO-RS",

"version": "3.6.4"

},

"os": {

"type": "Linux",

"name": "Red Hat Enterprise Linux Server release 6.5 (Santiago)",

"architecture": "x86_64",

"version": "Kernel 2.6.32-431.el6.x86_64"

}

},

"active": true, ---會話狀態(tài)

"currentOpTime": "2020-09-05T20:58:13.747+0800", --操作時間

"opid": 68359, ---操作ID,可kill

"secs_running": NumberLong(3), --運行時間,單位為S

"microsecs_running": NumberLong(3256666),--運行時間,單位為MS

"op": "getmore",  ---操作類型

"ns": "local.oplog.rs", ---操作記得集合

"command": {  ---命令相關(guān)信息

"getMore": NumberLong("10120168314"),

"collection": "oplog.rs",

"batchSize": 13981010,

"maxTimeMS": NumberLong(5000),

"term": NumberLong(78),

"lastKnownCommittedOpTime": {

"ts": Timestamp(1599310685, 1),

"t": NumberLong(78)

},

"$replData": 1,

"$oplogQueryData": 1,

"$readPreference": {

"mode": "secondaryPreferred"

},

"$clusterTime": {

"clusterTime": Timestamp(1599310685, 1),

"signature": {

"hash": BinData(0,"b61IG+HtFykMKvbLnQqsgQBe9tQ="),

"keyId": NumberLong("6844403992496177153")

}

},

"$db": "local"

},

"planSummary": "COLLSCAN", ---執(zhí)行計劃

"numYields": 2,

"locks": { ---鎖信息

},

"waitingForLock": false,---是否等待鎖

"lockStats": {

"Global": {

"acquireCount": {

"r": NumberLong(4)

}

},

"Database": {

"acquireCount": {

"r": NumberLong(2)

}

},

"oplog": {

"acquireCount": {

"r": NumberLong(2)

}

}

}

}

],

"ok": 1,

"operationTime": Timestamp(1599310685, 1),

"$clusterTime": {

"clusterTime": Timestamp(1599310685, 1),

"signature": {

"hash": BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),

"keyId": NumberLong(0)

}

}

}







向上滑動查看更多內(nèi)容


由上圖可看出輸出結(jié)果inprog是一個數(shù)組,在數(shù)組里面要實現(xiàn)統(tǒng)計和過濾等,比較困難,只能結(jié)合javascript腳本實現(xiàn)。而在Mongodb3.6中引入了$currentop聚合管道符,使Mongodb的會話管理變得更加容易。


該管道符只能在admin庫執(zhí)行,使用方法:

{$currentOp: { allUsers: , idleConnections: } }


示例:顯示當(dāng)前會話,按照客戶端IP進行分組統(tǒng)計


--顯示當(dāng)前的會話中,以客戶端IP(10網(wǎng)段)地址分組統(tǒng)計連接數(shù)


useadmin

db.aggregate([

{$currentOp: { allUsers: true ,idleConnections:true} },--取出所有會話


{$project:{IP:{$split:["$client",":"]}}},顯示client字段,并按:拆分成數(shù)組


{$unwind:"$IP"},--將數(shù)組拆分成文檔

{$match:{"IP":/^10./}},--過濾符合條件的文檔

{$group:{_id:"$IP",count:{$sum:1}}}—按IP地址分組統(tǒng)計

]);

以上為例,根據(jù)db.currentOp()的輸出結(jié)果字段信息,結(jié)合Mongodb管道的使用,就可靈活的實現(xiàn)各種統(tǒng)計功能和問題定位。


--顯示當(dāng)前的活動會話信息

db.aggregate([

{$currentOp: { allUsers: true ,idleConnections:false} },

{$project:{opid:1,client:1,op:1,ns:1,microsecs_running:1}},

{$match:{client:{$exists:true}}},

{$sort:{microsecs_running:-1}}

]);


--查看當(dāng)前是否有大量會話在等待鎖

db.aggregate([

{$currentOp: { allUsers: true ,idleConnections:false} },

{$project:{opid:1,client:1,op:1,ns:1,microsecs_running:1,waitingForLock:1}},

{$match:{"waitingForLock":true}},

{$count:"waitfor locks"}

]);


如果存在大量鎖等待,則首先檢查是否存在表、庫、全局鎖:

db.aggregate([

{$currentOp: { allUsers: true ,idleConnections:false} }, {$match:{$or:[{"locks.Global":"W"},{"locks.Database":"W"},{"locks.Collection":"W"}]}}

])


如果發(fā)現(xiàn)有會話持有表級、庫級或者全局鎖,則可根據(jù)其opid,執(zhí)行db.killOp(opid)釋放鎖資源。如果未發(fā)現(xiàn)表級以上的鎖,則檢查不處于等待狀態(tài)的會話在做些什么操作,再進行具體處理:


db.aggregate([

{$currentOp: { allUsers: true ,idleConnections:false} },

{$project:{opid:1,client:1,op:1,ns:1,microsecs_running:1,waitingForLock:1}},

{$match:{$and:[{"waitingForLock":false},{client:{$exists:true}}]}},

{$sort:{microsecs_running:-1}}

]);


示例:前臺索引創(chuàng)建導(dǎo)致庫級鎖

模擬在前臺創(chuàng)建索引,同時其他會話在相同數(shù)據(jù)庫做讀寫操作,通過下圖可看到有兩個會話在等待:


以上查詢,均只能查詢實時會話情況,如果要查詢歷史問題,在開啟了慢日志的情況下,可以通過后臺日志進行跟蹤,但是如果在業(yè)務(wù)量較大的環(huán)境下,如果出現(xiàn)鎖阻塞,可能會導(dǎo)致大量日志產(chǎn)生,建議使用mtools工具包進行日志分析。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/130147.html

相關(guān)文章

  • MongoDB指南---1、MongoDB簡介

    摘要:不采用關(guān)系模型主要是為了獲得更好的擴展性。易于擴展應(yīng)用程序數(shù)據(jù)集的大小正在以不可思議的速度增長。過去非常罕見的級別數(shù)據(jù),現(xiàn)在已是司空見慣了。這種精簡方式的設(shè)計是能夠?qū)崿F(xiàn)如此高性能的原因之一。下一篇文章指南基礎(chǔ)知識文檔集合數(shù)據(jù)庫客戶端 下一篇文章:MongoDB指南---2、MongoDB基礎(chǔ)知識-文檔、集合、數(shù)據(jù)庫、客戶端 MongoDB是一款強大、靈活,且易于擴展的通用型數(shù)據(jù)庫。它...

    VPointer 評論0 收藏0
  • MongoDB指南---1、MongoDB簡介

    摘要:不采用關(guān)系模型主要是為了獲得更好的擴展性。易于擴展應(yīng)用程序數(shù)據(jù)集的大小正在以不可思議的速度增長。過去非常罕見的級別數(shù)據(jù),現(xiàn)在已是司空見慣了。這種精簡方式的設(shè)計是能夠?qū)崿F(xiàn)如此高性能的原因之一。下一篇文章指南基礎(chǔ)知識文檔集合數(shù)據(jù)庫客戶端 下一篇文章:MongoDB指南---2、MongoDB基礎(chǔ)知識-文檔、集合、數(shù)據(jù)庫、客戶端 MongoDB是一款強大、靈活,且易于擴展的通用型數(shù)據(jù)庫。它...

    guyan0319 評論0 收藏0
  • PHP面試常考之網(wǎng)絡(luò)協(xié)議

    摘要:是為互聯(lián)網(wǎng)服務(wù)的協(xié)議族,它是網(wǎng)絡(luò)通信協(xié)議的統(tǒng)稱,由和等協(xié)議組成。預(yù)告本周五更新面試常考題之會話控制和網(wǎng)絡(luò)協(xié)議,敬請期待。以上內(nèi)容摘自程序員面試筆試寶典書籍,該書已在天貓京東當(dāng)當(dāng)?shù)入娚唐脚_銷售。 你好,是我琉憶,歡迎您來到PHP面試專欄。本周(2019.2-25至3-1)的一三五更新的文章如下: 周一:PHP面試常考之會話控制周三:PHP面試常考之網(wǎng)絡(luò)協(xié)議周五:PHP面試常考題之會話控...

    joywek 評論0 收藏0
  • 排查MongoDB CPU使用一直1000

    摘要:排查使用一直在使用云數(shù)據(jù)庫的時候您可能會遇到使用率很高或者使用率接近的問題,從而導(dǎo)致數(shù)據(jù)讀寫處理異常緩慢分析數(shù)據(jù)庫正在執(zhí)行的請求通過連接實例。表示該操作已經(jīng)執(zhí)行的時間,單位為微秒。通常是查詢插入更新刪除中的一種。排查MongoDB CPU使用一直1000%在使用云數(shù)據(jù)庫MongoDB的時候您可能會遇到MongoDB CPU使用率很高或者CPU使用率接近100%的問題,從而導(dǎo)致數(shù)據(jù)讀寫處理異常...

    Tecode 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<