mongodb清除連接和日志的正確方法分享
前言
最近在做并發(fā),服務器卡死了。
感覺是pymongo未能完全close掉和mongodb創(chuàng)建的tcp連接,并且在mongo連接未自動釋放前進行高頻連接,導致連接數(shù)爆滿造成的。
所以對建立的連接進行清除,以此記錄并做分享。
查看MongoDB的連接信息
db.serverStatus().connections
current 當前連接數(shù)
available 可用連接數(shù)
connection.totalCreated 創(chuàng)建到服務器的所有傳入連接的計數(shù)。此數(shù)字包括已關(guān)閉的連接。

清除所有當前的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'

查看指定端口的進程號
netstat -tpna | grep :35522

然后kill掉該進程
kill -9 14335
再到db-shell中查看,已經(jīng)關(guān)閉一個current了。

這種方式關(guān)掉的tcp連接狀態(tài)會變成TIME_WAIT,端口依舊被占用,因為ACK是由我們主動關(guān)閉發(fā)出的。
不過還好的是一般等一段時間鏈接自動會被釋放,端口也不再被占用了。

可以看到35522和35524都已經(jīng)被釋放。
關(guān)閉current的方法二:
如果你知道是由哪個程序連接的mongodb,比如python程序
那么可以使用命令查看程序端口占用情況
ps -aux | grep python

然后kill掉對應的python程序,run.py,也能完成current的清除

批量清除指定程序:
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
不需要重啟服務,重新開啟一個新日志文件的方法
use admin
db.runCommand({logRotate:1})
運行過程中不能刪除日志文件,清空日志文件但不刪除文件的命令(刪除后沒有生成日志)
: >run.log
也可以使用旋轉(zhuǎn)日志 logRotate :對日志進行切割
去重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}});})
導出數(shù)據(jù)
mongoexport -h localhost:27017 -u 用戶名 -p 密碼 -d 庫名 -c 集合名 -o 導出文件路徑
總結(jié)
到此這篇關(guān)于mongodb清除連接和日志的文章就介紹到這了,更多相關(guān)mongodb清除連接和日志內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MongoDB使用小結(jié):一些不常見的經(jīng)驗分享
最近一年忙碌于數(shù)據(jù)處理相關(guān)的工作,跟MongoDB打交道極多,以下為實踐過程中的Q&A,后續(xù)會不定期更新補充2017-03-03
mongodb實現(xiàn)數(shù)組對象求和方法實例
這篇文章主要給大家介紹了關(guān)于mongodb實現(xiàn)數(shù)組對象求和的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-01-01
Mongodb常見錯誤與解決方法小結(jié)(Mongodb中經(jīng)常出現(xiàn)的錯誤)
這篇文章主要介紹了Mongodb常見錯誤與解決方法小結(jié)(Mongodb中經(jīng)常出現(xiàn)的錯誤),需要的朋友可以參考下2017-03-03
如何通過MongoDB?Atlas?實現(xiàn)語義搜索與?RAG(邁向AI的搜索機制)
MongoDBAtlas的語義搜索功能通過向量化存儲和檢索非結(jié)構(gòu)化數(shù)據(jù),結(jié)合RAG框架,實現(xiàn)了高效的知識檢索和增強型生成應用,本文給大家介紹如何通過MongoDB?Atlas?實現(xiàn)語義搜索與?RAG(邁向AI的搜索機制),感興趣的朋友跟隨小編一起看看吧2024-11-11

