欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

MongoDB詭異問(wèn)題:sh.stopBalancer卡住-創(chuàng)新互聯(lián)

MongoDB詭異問(wèn)題:sh.stopBalancer卡住

MongoDB詭異問(wèn)題:sh.stopBalancer卡住

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站建設(shè)、網(wǎng)站制作、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出龍鳳免費(fèi)做網(wǎng)站回饋大家。

背景

Part1:寫在最前

我們?cè)谑褂肕ongoDB sharding集群時(shí),會(huì)使用如下命令來(lái)管理啟停Balancer:

>sh.stopBalancer()  停止Balancer
>sh.startBalancer() 開啟Balancer

Part2:背景

開啟balancer后,客戶反饋前端應(yīng)用寫入緩慢,查詢超時(shí)。因此我們嘗試關(guān)閉balancer,來(lái)避免chunk遷移對(duì)集群性能帶來(lái)的影響。

但是在調(diào)用sh.stopBalancer的時(shí)候,發(fā)現(xiàn)卻停不下來(lái),sh.stopBalancer會(huì)處于卡住的狀態(tài):

mongos>sh.stopBalancer()
Waiting for active hosts...
Waiting for the balancer lock...
assert.soon failed,msg:Waited too long for lock balancer to unlock
doassert@src/mongo/shell/assert.js:18:14
assert.soon@src/mongo/shell/assert.js:202:13
sh.waitForDLock@src/mongo/shell/utils_sh.js:198:1
sh.waitForBalancerOff@src/mongo/shell/utils_sh.js:264:9
sh.waitForBalancer@src/mongo/shell/utils_sh.js:294:9
sh.stopBalancer@src/mongo/shell/utils_sh.js:161:5
@(shell):1:1
Balancer still may be active, you must manually verify this is not the case using the
config.changelog collection.
2018-02-11T16:28:29.753+0800
E QUERY    [thread1] Error: Error:
assert.soon failed, msg:Waited too long for lock balancer to unlock :
sh.waitForBalancerOff@src/mongo/shell/utils_sh.js:268:15
sh.waitForBalancer@src/mongo/shell/utils_sh.js:294:9
sh.stopBalancer@src/mongo/shell/utils_sh.js:161:5
@(shell):1:1

從上述報(bào)錯(cuò)能夠看出,是由于目前balancer正在運(yùn)行導(dǎo)致的,

Warning:警 在3.4版本中,balancer運(yùn)行在config server的主節(jié)點(diǎn)上,在早期的版本中,balancer是運(yùn)行在mongos上的。 當(dāng)balancer進(jìn)程處于活動(dòng)狀態(tài)時(shí),config server副本集的主服務(wù)器通過(guò)修改config數(shù)據(jù)庫(kù)的lock集合中的文檔,來(lái)獲取“平衡器鎖”。 這個(gè)“平衡器鎖”只能自己主動(dòng)釋放。

Part3:排查方法

我們調(diào)用sh.status()命令能夠看到當(dāng)前balancer已經(jīng)關(guān)閉了,但是running還是yes,這說(shuō)明有遷移正在運(yùn)行。 
  balancer:
Currently enabled:  no
Currently running:  yes
 
我們查看發(fā)現(xiàn)migrations集合下為空,說(shuō)明沒(méi)有集合在遷移
mongos> db.migrations.find()

我們查看locks集合下的信息,處于2狀態(tài)的說(shuō)明正持有鎖
mongos> db.locks.find()
{ "_id" : "balancer", "state" : 2, "ts" : ObjectId("5a324c42329457086086da07"), "who" : "ConfigServer:Balancer", "process" : "ConfigServer", "when" : ISODate("2018-01-31T08:33:43.346Z"), "why" : "CSRS Balancer" }

Warning:警

locks集合中的why列告訴我們持有鎖的原因,如果有正在遷移的文檔,其狀態(tài)應(yīng)該是2,why中的原因會(huì)顯示Migrating chunk(s) in collection db.collationname.

從3.4版本起,balancer的狀態(tài)字段將始終為值2,以防止老版本的mongos實(shí)例執(zhí)行平衡操作。 when字段指config server 成員成為主節(jié)點(diǎn)的時(shí)間。

解決辦法

Part1:寫在最前

sh.stopBalancer停不下來(lái),常見的可能原因有以下幾個(gè):

  1. 正在做chunk遷移,必須等待chunk遷移完成后,才能夠正常停止;

  2. 后端的server時(shí)間不同步;

  3. mongo客戶端版本低于server端,本文就是第3種情況。mongo客戶端的版本是3.2版本,config server和mongod都是3.4版本的mongo。

Part2:解決辦法

替換老版本的mongo客戶端,使用3.4版本的客戶端

mongos> sh.stopBalancer()
{ "ok" : 1 }
 
config:PRIMARY> db.version()
3.4.9-2.9

Part3:原因分析

卡住的原因是由于客戶端mongo是3.2版本,而config節(jié)點(diǎn)是3.4版本,3.2版本的mongos在執(zhí)行stopBalancer()時(shí),stopBalancer代碼假定如果balancerStop命令沒(méi)有找到,那么它會(huì)使用舊版本的邏輯,等待鎖被釋放。從3.4版本起,Balance進(jìn)程從mongos移動(dòng)之configer server的primary節(jié)點(diǎn)上。

——總結(jié)——

通過(guò)這個(gè)案例,我們能夠了解到mongo客戶端版本帶來(lái)的問(wèn)題,以及有哪些常見原因?qū)е聅h.stopBalancer停不下來(lái)。由于筆者的水平有限,編寫時(shí)間也很倉(cāng)促,文中難免會(huì)出現(xiàn)一些錯(cuò)誤或者不準(zhǔn)確的地方,不妥之處懇請(qǐng)讀者批評(píng)指正。喜歡筆者的文章,右上角點(diǎn)一波關(guān)注,謝謝~

MongoDB詭異問(wèn)題:sh.stopBalancer卡住

MongoDB詭異問(wèn)題:sh.stopBalancer卡住

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

文章題目:MongoDB詭異問(wèn)題:sh.stopBalancer卡住-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://chinadenli.net/article46/digeeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站小程序開發(fā)品牌網(wǎng)站設(shè)計(jì)網(wǎng)站制作靜態(tài)網(wǎng)站App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)