mongodb 性能优化文档
检查现有系统的运行
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()