MongoDB诊断及性能优化.pptx

上传人(卖家):无敌的果实 文档编号:2535887 上传时间:2022-05-01 格式:PPTX 页数:22 大小:1.85MB
下载 相关 举报
MongoDB诊断及性能优化.pptx_第1页
第1页 / 共22页
MongoDB诊断及性能优化.pptx_第2页
第2页 / 共22页
MongoDB诊断及性能优化.pptx_第3页
第3页 / 共22页
MongoDB诊断及性能优化.pptx_第4页
第4页 / 共22页
MongoDB诊断及性能优化.pptx_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、MongoDB数据库问题诊断议程 性能相关 诊断工具 问题诊断WireTiger存储引擎Snapshot & Checkpoint write snapshot data to disk at intervals 60s or 2g journal data During the write of a new checkpoint, the previous checkpoint is still valid MongoDB can recover from the last valid checkpoint To recover changes made after the last che

2、ckpoint, run with journalingJournal write-ahead transaction log persists all data modifications between checkpoints Default snappy compression Buffer size 128kBJournal sync 50ms j : true checkpoint journal file switch (100MB)Memory Use 50% of (RAM - 1 GB), or 256 MB B-tree filesystem cache索引 索引已经排序

3、sort查询,尽量使用索引,多字段索引统一升序或降序 Index prefixes可以被过滤(filter)和排序(sort)使用 多查询条件,按照等值、排序、范围的顺序创建索引 分片集合,只有_id和片键可以创建唯一索引db.runCommand(planCacheSetFilter: ,索引创建query: , foreground,快,锁库 Background,慢,无阻塞 从节点手工创建sort: ,projection: ,indexes: , , .) 4.2开始该参数被废弃查询相关 选择性好的field $and操作要对同一个filed,否则不走索引 covered query,

4、”totalDocsExamined : 0” indexFilterSet设置后则hint()失效db.collection.aggregate( $indexStats : , $project : key: 1, accesses.ops: 1 ).pretty()性能影响 影响写入操作,平均每个索引下降6% 尽量将索引cache在内存中 定期检查未使用索引CURD查询优化思路 使用索引加速查询 减少批次返回数据量 projection只返回需要的字段 hint() $incr写操作性能 索引的影响 bulkwrite write concern journal commitInterv

5、alMs 磁盘 io-wait%聚合操作 Pipline开始阶段,优先$match, $projection 在$match后使用$sort, 索引排序 分片的sort、limits、skips议程 性能相关 诊断工具 问题诊断mongostat dirty 脏数据/WT cache百分比 used WT使用的cache百分比 vsize 虚拟内存使用大小 res 真是使用内存大小 qrw qr读等待队列长度qw写等待队列长度 arw ar活跃的读操作的客户端数量 aw活跃的写操作客户端数量 -discover,可以显示集群下所有mongod和mongos的指标,节点密码要保持一致mongot

6、op快速定位到压力最大的数据库、集合db.currentOp() microsecs_running 操作的耗时 op操作类型 planSummary Lock集合扫描还是索引扫描等待锁的类型 waitingForLock是否正在等待锁db.serverStatus() opcounters只记录操作数,不包含受影响的document统计 metrics.document包含操作影响到的document globalLock.totalTime如果和uptime接近,表示数据库一直有锁的性能问题 globalLock.currentQueue.total 表示实时的锁统计信息profilerL

7、evel Description 数据库级别,非整个mongod server01关闭,默认值 db.system.profile 是capped集合,默认大小1m采集设定阈值的慢操作信息采集所有的慢操作信息 4.0开始,可以在mongos上开启,但只能记录进log;db.setProfilingLevel(0, slowms: 20 )2 会对数据库产生额外的压力db.setProfilingLevel(1, 100)db.system.profile.find().pretty()db.system.profile.find().sort($natural: -1).limit(1).pr

8、etty()db.getProfilingStatus()db.system.profile.aggregate( $group : _id : $op, count : $sum : 1) db.setProfilingLevel(0)explainLevelDescriptionqueryPlannerexecutionStatsallPlansExecution默认值,并不真实执行执行查询并返回执行计划的信息执行查询并返回所有执行计划的信息 stage : COLLSCAN IXSCAN FETCH SHARD_MERGE SHARDING_FILTER nReturned : 查询返回

9、的数量 executionTimeMillis : 查询执行时间 totalKeysExamined : 扫描的索引数量 totalDocsExamined : 扫描的文档数量log messages severitycomponentLevel Description ACCESS COMMAND ELECTION INDEX NETWORK QUERY REPL JOURNAL WRITE .FFatalEWIErrorWarningInformational, for Verbosity Level of 0D1-5 DebugmtoolsToolsDescriptionmlogfilt

10、ermloginfo合并、分割日志文件,过滤慢查询,集合扫描,格式转换等统计日志内的数据库信息(启停、连接、集群状态等)日志转化为图表形式mplotqueriesmlogvismlaunch日志转化为HTML页面,与mplotqueries类似快速搭建本地测试环境(单机、集群、分片)https:/ 性能相关 诊断工具 问题诊断诊断思路问题数据库系统 rs.status( ) rs.printSlaveReplicationInfo( ) rs.printReplicationInfo( ) sh.status( )系统日志应用日志error mongod.log mongos.log局部慢 d

11、b.currentOp( ) db.setProfilingLevel( ) explain mongod.logtopiostatsarperformance整体慢 mongostat db.currentOp( ) db.serverStatus( ) mplotqueries mongod.log sh.status( )系统日志应用日志案例#1 使用 mongodump迁移数据库, 数据导出84.5%后退出,无任何报错#mongodump -archive | mongorestore -archive 是否按计划切换应用? 应用放心上线!案例#1 原因分析:不加条件的count()基

12、于metadata,分片环境和意外关闭数据库会导致数据不准确https:/ eventTime: -1.0 案例#2创建索引 eventTime: -1.0 案例#2In a blocking SORT, all input must be consumed by the sort step before it can produce output. In a non-blocking, or indexed sort, the sort step scans the index to produce results in the requested order.解决办法:在$match和$s

13、ort两阶段之间加入$project $project: contactID: 1, eventTime: 1 案例#3 实验db.testcol.drop()for (i=1; i=10000; i+) arr = ;1.mongoshell运行代码2.运行一段时间后,写入效率逐渐降低3.尝试使用诊断工具优化性能for (j=1; j=1000; j+) doc = _id: (1000 * (i-1) + j), a: i, b: j, c: (1000 * (i-1)+ j) ;arr.push(doc);db.testcol.insertMany(arr);var x = db.testcol.find( b : 255 );x.next();var x = db.testcol.find( _id : 1000 * (i-1) + 255 );x.next();var x = asdf;db.testcol.updateOne( a : i, b : 255 , $set : d : x.pad(1000) ); print(i)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 常用办公文档
版权提示 | 免责声明

1,本文(MongoDB诊断及性能优化.pptx)为本站会员(无敌的果实)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|