溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

mongodb如何清除連接和日志

發(fā)布時(shí)間:2021-09-14 15:38:47 來源:億速云 閱讀:311 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下mongodb如何清除連接和日志,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

前言

最近在做并發(fā),服務(wù)器卡死了。

感覺是pymongo未能完全close掉和mongodb創(chuàng)建的tcp連接,并且在mongo連接未自動(dòng)釋放前進(jìn)行高頻連接,導(dǎo)致連接數(shù)爆滿造成的。

所以對(duì)建立的連接進(jìn)行清除,以此記錄并做分享。

查看MongoDB的連接信息

db.serverStatus().connections

current 當(dāng)前連接數(shù)

available 可用連接數(shù)

connection.totalCreated 創(chuàng)建到服務(wù)器的所有傳入連接的計(jì)數(shù)。此數(shù)字包括已關(guān)閉的連接。

mongodb如何清除連接和日志

清除所有當(dāng)前的currentOp:

var ops = db.currentOp().inprog;
for(i = 0; i < ops.length; i++){
        var opid = ops[i].opid;
        db.killOp(opid);
        print("Stopping op ... #"+opid)
};

上面的命令無法關(guān)閉current連接

關(guān)閉current的方法一:

查看所有current的tcp連接:

netstat -nat | grep ‘27017'

mongodb如何清除連接和日志

查看指定端口的進(jìn)程號(hào)

netstat -tpna | grep :35522

mongodb如何清除連接和日志

然后kill掉該進(jìn)程

kill -9 14335

再到db-shell中查看,已經(jīng)關(guān)閉一個(gè)current了。

mongodb如何清除連接和日志

這種方式關(guān)掉的tcp連接狀態(tài)會(huì)變成TIME_WAIT,端口依舊被占用,因?yàn)锳CK是由我們主動(dòng)關(guān)閉發(fā)出的。

不過還好的是一般等一段時(shí)間鏈接自動(dòng)會(huì)被釋放,端口也不再被占用了。

mongodb如何清除連接和日志

可以看到35522和35524都已經(jīng)被釋放。

關(guān)閉current的方法二:

如果你知道是由哪個(gè)程序連接的mongodb,比如python程序

那么可以使用命令查看程序端口占用情況

ps -aux | grep python

mongodb如何清除連接和日志

然后kill掉對(duì)應(yīng)的python程序,run.py,也能完成current的清除

mongodb如何清除連接和日志

批量清除指定程序:

ps -efww|grep -w "run.py" |grep -v grep|cut -c 9-15|xargs kill -9

日志

查看日志位置

cat /etc/mongod.conf

日志文件過大,不能通過vim查看,用tail查看最后100行

tail -n 100 mongo.log

不需要重啟服務(wù),重新開啟一個(gè)新日志文件的方法

use admin
db.runCommand({logRotate:1})

運(yùn)行過程中不能刪除日志文件,清空日志文件但不刪除文件的命令(刪除后沒有生成日志)

: >run.log

也可以使用旋轉(zhuǎn)日志 logRotate :對(duì)日志進(jìn)行切割

去重script

db.getCollection('集合名').aggregate([{$group:{_id:{'去重字段':'$去重字段'}, count:{$sum:1}, dups:{$addToSet: '$_id'}}},{$match:{count:{$gt:1}}}] ,{ allowDiskUse: true }).forEach(function(doc){doc.dups.shift();db.getCollection('集合名').remove({_id: {$in: doc.dups}});})

導(dǎo)出數(shù)據(jù)

mongoexport -h localhost:27017 -u 用戶名 -p 密碼 -d 庫名 -c 集合名 -o 導(dǎo)出文件路徑

以上是“mongodb如何清除連接和日志”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI