mongodb清除連接和日志的正確方法分享
前言
最近在做并發(fā),服務(wù)器卡死了。
感覺(jué)是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)閉的連接。
清除所有當(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) };
上面的命令無(wú)法關(guān)閉current連接
關(guān)閉current的方法一:
查看所有current的tcp連接:
netstat -nat | grep ‘27017'
查看指定端口的進(jìn)程號(hào)
netstat -tpna | grep :35522
然后kill掉該進(jìn)程
kill -9 14335
再到db-shell中查看,已經(jīng)關(guān)閉一個(gè)current了。
這種方式關(guān)掉的tcp連接狀態(tài)會(huì)變成TIME_WAIT,端口依舊被占用,因?yàn)锳CK是由我們主動(dòng)關(guān)閉發(fā)出的。
不過(guò)還好的是一般等一段時(shí)間鏈接自動(dòng)會(huì)被釋放,端口也不再被占用了。
可以看到35522和35524都已經(jīng)被釋放。
關(guān)閉current的方法二:
如果你知道是由哪個(gè)程序連接的mongodb,比如python程序
那么可以使用命令查看程序端口占用情況
ps -aux | grep python
然后kill掉對(duì)應(yīng)的python程序,run.py,也能完成current的清除
批量清除指定程序:
ps -efww|grep -w "run.py" |grep -v grep|cut -c 9-15|xargs kill -9
日志
查看日志位置
cat /etc/mongod.conf
日志文件過(guò)大,不能通過(guò)vim查看,用tail查看最后100行
tail -n 100 mongo.log
不需要重啟服務(wù),重新開(kāi)啟一個(gè)新日志文件的方法
use admin db.runCommand({logRotate:1})
運(yùn)行過(guò)程中不能刪除日志文件,清空日志文件但不刪除文件的命令(刪除后沒(méi)有生成日志)
: >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 庫(kù)名 -c 集合名 -o 導(dǎo)出文件路徑
總結(jié)
到此這篇關(guān)于mongodb清除連接和日志的文章就介紹到這了,更多相關(guān)mongodb清除連接和日志內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
win7平臺(tái)快速安裝、啟動(dòng)mongodb的方法
這篇文章主要介紹了win7平臺(tái)快速安裝、啟動(dòng)mongodb的方法,結(jié)合圖文形式分析了win7平臺(tái)下載、安裝、啟動(dòng)、配置MongoDB數(shù)據(jù)庫(kù)的方法與注意事項(xiàng),需要的朋友可以參考下2020-05-05mongoDB4.0數(shù)據(jù)庫(kù)的操作方法
這篇文章主要介紹了mongoDB4.0數(shù)據(jù)庫(kù)的操作方法及注意事項(xiàng),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10關(guān)于MongoDB謹(jǐn)防索引seek的效率問(wèn)題詳析
這篇文章主要給大家介紹了關(guān)于MongoDB謹(jǐn)防索引seek的效率問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Linux下MongoDB數(shù)據(jù)庫(kù)實(shí)現(xiàn)自動(dòng)備份詳解
這篇文章主要給大家介紹了在Linux系統(tǒng)下下MongoDB數(shù)據(jù)庫(kù)實(shí)現(xiàn)自動(dòng)備份的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。2017-06-06深入分析Mongodb數(shù)據(jù)的導(dǎo)入導(dǎo)出
這幾天想著公司要用MongoDB,自然就要用到數(shù)據(jù)導(dǎo)入導(dǎo)出,就自己學(xué)習(xí)了一下。本文介紹了mongoDb導(dǎo)入導(dǎo)出數(shù)據(jù)的方法,有需要的朋友參考下。2015-05-05Ubuntu系統(tǒng)中安裝MongoDB及其啟動(dòng)命令mongod的教程
這篇文章主要介紹了Ubuntu系統(tǒng)中安裝MongoDB及其啟動(dòng)命令mongod的教程,包括設(shè)置MongoDB開(kāi)機(jī)啟動(dòng)的腳本示例,非常推薦,需要的朋友可以參考下2016-01-01