mongodb清除连接和日志的正确方法分享


Posted in MongoDB onSeptember 15, 2021

前言

最近在做并发,服务器卡死了。

感觉是pymongo未能完全close掉和mongodb创建的tcp连接,并且在mongo连接未自动释放前进行高频连接,导致连接数爆满造成的。

所以对建立的连接进行清除,以此记录并做分享。

查看MongoDB的连接信息

db.serverStatus().connections

current 当前连接数

available 可用连接数

connection.totalCreated 创建到服务器的所有传入连接的计数。此数字包括已关闭的连接。

mongodb清除连接和日志的正确方法分享

清除所有当前的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)
};

上面的命令无法关闭current连接

关闭current的方法一:

查看所有current的tcp连接:

netstat -nat | grep ‘27017'

mongodb清除连接和日志的正确方法分享

查看指定端口的进程号

netstat -tpna | grep :35522

mongodb清除连接和日志的正确方法分享

然后kill掉该进程

kill -9 14335

再到db-shell中查看,已经关闭一个current了。

mongodb清除连接和日志的正确方法分享

这种方式关掉的tcp连接状态会变成TIME_WAIT,端口依旧被占用,因为ACK是由我们主动关闭发出的。

不过还好的是一般等一段时间链接自动会被释放,端口也不再被占用了。

mongodb清除连接和日志的正确方法分享

可以看到35522和35524都已经被释放。

关闭current的方法二:

如果你知道是由哪个程序连接的mongodb,比如python程序

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

ps -aux | grep python

mongodb清除连接和日志的正确方法分享

然后kill掉对应的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

不需要重启服务,重新开启一个新日志文件的方法

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

运行过程中不能删除日志文件,清空日志文件但不删除文件的命令(删除后没有生成日志)

: >run.log

也可以使用旋转日志 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}});})

导出数据

mongoexport -h localhost:27017 -u 用户名 -p 密码 -d 库名 -c 集合名 -o 导出文件路径

总结

到此这篇关于mongodb清除连接和日志的文章就介绍到这了,更多相关mongodb清除连接和日志内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MongoDB 相关文章推荐
详解MongoDB的条件查询和排序
Jun 23 MongoDB
SpringBoot整合MongoDB的实现步骤
Jun 23 MongoDB
浅析MongoDB之安全认证
Jun 26 MongoDB
mongodb的安装和开机自启动详细讲解
Aug 02 MongoDB
mongodb数据库迁移变更的解决方案
Sep 04 MongoDB
SpringBoot 整合mongoDB并自定义连接池的示例代码
Feb 28 MongoDB
MongoDB误操作后使用oplog恢复数据
Apr 11 MongoDB
MongoDB支持的数据类型
Apr 11 MongoDB
MongoDB数据库之添删改查
Apr 26 MongoDB
详解MongoDB排序时内存大小限制与创建索引的注意事项
May 06 MongoDB
阿里云服务器部署mongodb的详细过程
Sep 04 #MongoDB
mongodb数据库迁移变更的解决方案
Sep 04 #MongoDB
mongodb的安装和开机自启动详细讲解
Aug 02 #MongoDB
常用的MongoDB查询语句的示例代码
Jul 25 #MongoDB
Mongo服务重启异常问题的处理方法
Jul 01 #MongoDB
MongoDB安装使用并实现Python操作数据库
浅析MongoDB之安全认证
Jun 26 #MongoDB
You might like
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
关于IFRAME 自适应高度的研究
2006/07/20 Javascript
javascript 函数式编程
2007/08/16 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
js+JQuery返回顶部功能如何实现
2012/12/03 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
JavaScript判断FileUpload控件上传文件类型
2015/09/28 Javascript
javascript日期验证之输入日期大于等于当前日期
2015/12/13 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
Angular设置title信息解决SEO方面存在问题
2016/08/19 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
2017/11/15 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
JavaScript中继承原理与用法实例入门
2020/05/09 Javascript
详解Typescript里的This的使用方法
2021/01/08 Javascript
[08:53]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS 选手采访
2021/03/11 DOTA
Python信息抽取之乱码解决办法
2017/06/29 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
python 计算平均平方误差(MSE)的实例
2019/06/29 Python
学习和使用python的13个理由
2019/07/30 Python
Python如何实现FTP功能
2020/05/28 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
python 爬虫如何实现百度翻译
2020/11/16 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
汽车销售顾问求职自荐信
2014/01/01 职场文书
《桂林山水》教学反思
2014/02/08 职场文书
《东方明珠》教学反思
2014/04/20 职场文书
vue组件vue-esign实现电子签名
2022/04/21 Vue.js
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript