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数据库常用的10条操作命令
Jun 18 MongoDB
SpringBoot整合MongoDB的实现步骤
Jun 23 MongoDB
常用的MongoDB查询语句的示例代码
Jul 25 MongoDB
阿里云服务器部署mongodb的详细过程
Sep 04 MongoDB
MongoDB日志切割的三种方式总结
Sep 15 MongoDB
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
Nov 01 MongoDB
SpringBoot系列之MongoDB Aggregations用法详解
Feb 12 MongoDB
MongoDB使用场景总结
Feb 24 MongoDB
MongoDB数据库部署环境准备及使用介绍
Mar 21 MongoDB
MongoDB支持的索引类型
Apr 11 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
真正面向对象编程:PHP5.01发布
2006/10/09 PHP
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
PHP利用Mysql锁解决高并发的方法
2018/09/04 PHP
PHP实现字母数字混合验证码功能
2019/07/11 PHP
Laravel 5+ .env环境配置文件详解
2020/04/06 PHP
jQuery代码优化 遍历篇
2011/11/01 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
jQuery获取多种input值的简单实现方法
2016/06/20 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
2016/09/01 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
PyQt5每天必学之弹出消息框
2018/04/19 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
python支持多线程的爬虫实例
2019/12/21 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
浅谈Python3中print函数的换行
2020/08/05 Python
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
接口的多继承会带来哪些问题
2015/08/17 面试题
给市场的环保建议书
2014/05/14 职场文书
党在我心中演讲稿
2014/09/02 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
迎新生标语大全
2014/10/06 职场文书
端午节寄语2015
2015/03/23 职场文书
监护人证明
2015/06/19 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
图解上海144收音机
2021/04/22 无线电
基于Python实现对比Exce的工具
2022/04/07 Python