我爱编程

mongodb 性能优化文档

2018-04-10  本文已影响0人  陆遥远

检查现有系统的运行

ps -ef | grep mongo

检查系统是不是宕机

sudo grep mongod /var/log/messages

查看mongodb的进程和子线程

pstree -p | grep mongo

按照内存大小排序显示进程

ps aux --sort=%mem

查看端口

netstat -tunpl | grep 27018

查看端口号对应的进程

netstat -antp|grep 2897

mg1的启动配置 内网IP: 10.30.41.83

/usr/local/src/mongodb/bin/mongod -f /usr/local/src/mongodb/bin/mongodb.conf
/usr/local/src/mongodb/bin/mongod -f /usr/local/mongoShard/mongodb.conf
mongos --configdb configRS/10.30.41.83:37017,10.30.40.71:37017,10.25.33.111:37017 --port 27018 --fork --logpath=/usr/local/mongoRouter/log/mongo.log

停止mongodb的正确方法

pkill mongod

停止mongodb的不正确做法,会锁表,必须删除锁才能启动

kill -9 pid
killall mongod
rm -fr data/mongod.lock

服务器信息

db.serverStatus()
db.printShardingStatus()

连接和内存 mapped:映射到内存的数据大小、visze:占用的虚拟内存大小、res:实际使用的内存大小

db.serverStatus().connections #连接数
db.serverStatus().mem
db.serverStatus().dur #日志Journal相关

命令行参数

db.serverCmdLineOpts()

查看集群的大小

db.stats();

查看库的大小

db.mscrm.stats();

查看链接当前db的物理主机

db.getMongo();

显示所有的库

show databases;

切换ku

use mscrm

查看表

show collections;

查看表

db.t_project_cwarehouse.find().limit(1);

查看当前的操作

db.currentOp()
db.currentOP({"ns":"crm_mshuoke_com"})

查系统中所有的索引

db.system.indexes.find();

查一个库上的所有的索引,ns是数据库名.集合名

db.system.indexes.find({"ns":"mylearndb.user"});

在数据库空闲时创建索引,不会阻塞数据库服务,但还是会很耗费系统

db.user.ensureIndex({"name":1,"registered":-1},{"background":true});

得到指定名称的聚集集合(table)

db.getCollection("account");

获取当前db下的所有集合

db.getCollectionNames();

显示当前db所有聚集索引的状态

db.printCollectionStats();

命令可以统计当前DB内的collection数目,DB可支持collection数量是由于nssize参数指定的,它指定了dbname.ns磁盘文件的大小,也就指定了DB可支持的最大collection数目,ns为namespace缩写。默认nssize为16MB

db.system.namespaces.count()

查看慢查询的状态

db.getProfilingStatus();

设置慢日志的状态,1000毫秒就记录

db.setProfilingLevel(2,100);

查看慢日志

db.system.profile.find()

按照插入顺序逆序查看最近3条

db.system.profile.find().sort({$natrual: -1}).limit(3)
db.system.profile.find().limit(3).sort({ ts : -1 }).pretty()

db.project_customers_5993e3a426d509663164d676.find({ callStat.called: { $gte: 2 }, $or: [ { callStat.answered: { $exists: false } }, { callStat.answered: 0 } ], created: { $lte: new Date

(1508000412807) } })explain("executionStats")
db.project_customers_5993e3a426d509663164d676.find({ callStat.called: { $gte: 2 }, $or: [ { callStat.answered: { $exists: false } }, { callStat.answered: 0 } ], created: { $lte: new Date

(1508000412807)}})explain("executionStats")
db.project_customers_5993e3a426d509663164d676.find()
db.project_customers_5993e3a426d509663164d676.find({callStat.called:{ $gte:2})

慢日志查看

db.system.profile.find().pretty()
db.system.profile.find({op:'command'}).limit(1)

返回所有的操作,除command类型的

db.system.profile.find( { op: { $ne : 'command' } } ).pretty()

返回大于10秒慢的操作

db.system.profile.find( { millis : { $gt : 50000 } } ).pretty()

上一篇下一篇

猜你喜欢

热点阅读