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 orm框架的注意事项及简单使用
Jun 20 MongoDB
MongoDB安装使用并实现Python操作数据库
Jun 28 MongoDB
Mongo服务重启异常问题的处理方法
Jul 01 MongoDB
MongoDB日志切割的三种方式总结
Sep 15 MongoDB
SpringBoot系列之MongoDB Aggregations用法详解
Feb 12 MongoDB
一次线上mongo慢查询问题排查处理记录
Mar 18 MongoDB
mongoDB数据库索引快速入门指南
Mar 23 MongoDB
MongoDB支持的索引类型
Apr 11 MongoDB
Centos系统通过Docker安装并搭建MongoDB数据库
Apr 12 MongoDB
SpringBoot集成MongoDB实现文件上传的步骤
Apr 18 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
用PHP编程开发“虚拟域名”系统
2006/10/09 PHP
php feof用来识别文件末尾字符的方法
2010/08/01 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
2016/10/13 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
jquery对象和DOM对象的相互转换详解
2016/10/18 Javascript
详解vue axios中文文档
2017/09/12 Javascript
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
vue实现前台列表数据过滤搜索、分页效果
2019/05/28 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
python获得图片base64编码示例
2014/01/16 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
Django如何将URL映射到视图
2019/07/29 Python
Python PO设计模式的具体使用
2019/08/16 Python
Django继承自带user表并重写的例子
2019/11/18 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
使用HTML5和CSS3表单验证功能
2017/05/05 HTML / CSS
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
网络方面基础面试题
2012/11/16 面试题
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
英语专业学生个人求职信范文
2014/01/06 职场文书
鲜花方阵解说词
2014/02/13 职场文书
财务检查整改报告
2014/11/06 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
国情备忘录观后感
2015/06/04 职场文书
保险公司岗前培训工作总结
2015/10/24 职场文书
MySQL连接控制插件介绍
2021/09/25 MySQL
macos系统如何实现微信双开? mac登录两个微信以上微信的技巧
2022/07/23 数码科技