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 18 MongoDB
MongoDB数据库常用的10条操作命令
Jun 18 MongoDB
SpringBoot整合MongoDB的实现步骤
Jun 23 MongoDB
常用的MongoDB查询语句的示例代码
Jul 25 MongoDB
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
Nov 01 MongoDB
SpringBoot 整合mongoDB并自定义连接池的示例代码
Feb 28 MongoDB
MongoDB数据库部署环境准备及使用介绍
Mar 21 MongoDB
MongoDB误操作后使用oplog恢复数据
Apr 11 MongoDB
MongoDB数据库之添删改查
Apr 26 MongoDB
详解MongoDB排序时内存大小限制与创建索引的注意事项
May 06 MongoDB
NoSQL优缺点与MongoDB数据库简介
Jun 05 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
如何将一个表单同时提交到两个地方处理
2006/10/09 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
2017/10/19 PHP
Laravel定时任务的每秒执行代码
2019/10/22 PHP
实例:尽可能写友好的Javascript代码
2006/10/09 Javascript
jquery创建div 实现代码
2009/04/27 Javascript
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
jquery使用ul模拟select实现表单美化的方法
2015/08/18 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
JavaScript中0和&quot;&quot;比较引发的问题
2016/05/26 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
详解如何实现一个简单的Node.js脚手架
2017/12/04 Javascript
Vue 组件注册实例详解
2019/02/23 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
[58:58]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第二场
2018/04/05 DOTA
python中wx将图标显示在右下角的脚本代码
2013/03/08 Python
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
详解Python进程间通信之命名管道
2017/08/28 Python
Python时间戳使用和相互转换详解
2017/12/11 Python
python3利用ctypes传入一个字符串类型的列表方法
2019/02/12 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
学生打架检讨书大全
2014/01/23 职场文书
日语系毕业求职信
2014/07/27 职场文书
2014会计年终工作总结
2014/12/20 职场文书
财务负责人岗位职责
2015/02/03 职场文书
党员干部廉洁自律承诺书
2015/04/28 职场文书
格列佛游记读书笔记
2015/06/30 职场文书
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL