性能
在本页
当您开发和操作基于MongoDB的应用时,您或许需要分析应用和数据库的性能表现。应用的性能降级通常是因为数据库访问策略、硬件可用性和数据库连接数设置不正确导致的。
性能问题可能说明数据库正在按容量临界值执行,是时候 为数据库添加额外的服务器资源。通常应用程序的工作集需与服务器可用物理内存相匹配。
Database Profiling can help you to understand what operations are causing degradation. 数据库性能章节或许可以帮助您了解什么类型的操作会造成性能降级。
MongoDB使用一套锁机制确保数据集的一致性。如果某个操作执行时间较长或是一个队列表单,下一操作请求由于要等待当前 操作释放锁而出现性能降级。
locks.timeAcquiringMicros
除以locks.acquireWaitCount
能计算出特定锁模式的平均等待时间。locks.deadlockCount
获取死锁次数。慢查询可能的原因:索引的无效使用;非最优表设计模式;糟糕的查询结构;系统架构问题;内存不足触发磁盘读取。
是如下两个字段的容器:
如果有大量的并发应用请求,数据库可能无法满足需求。您可能需要对数据库进行扩容。
连接数峰值也可能是应用程序或驱动程序错误的结果。所有官方MongoDB驱动均实现了连接池,支持客户端更高效的使用和复用连接对象。高连接数却未发现相匹配的负载,可能说明驱动或者其他配置发生错误。
通过设置
maxIncomingConnections
配置指定mongoDB支持的最大传入连接数,该值不可超过操作系统最大范围限制。Unix类操作系统中,系统最大范围限制可以通过 ulimit
命令修改,或通过编辑 /etc/sysctl
文件修改。更多详情参见 UNIX ulimit 设置 章节。以下分析级别可用:
级别 | 描述 |
---|---|
0 | 分析器关闭且不收集数据,默认配置0。 |
1 | 分析器对执行时间超过 slowms 阈值的操作进行数据收集 |
2 | 分析 器对所有操作进行数据收集 |
重要分析器会影响性能且与系统日志共享配置。生产环境开启或设置分析器前请认证考虑性能和安全性影响。注意当logLevel
设置成0时,MongoDB慢查询将以slowOpSampleRate
确定的采样速率发送到诊断日志。从MongoDB 4.2开始,复制集Secondaries节点的所有超过慢查询阈值的oplog条目信息都将输出 ,并不遵从这一采样速率。更高级别的logLevel
配置下,所有操作都将显示在诊断日志中,无论其延迟时间如何,除了:secondaries节点的慢oplog条目消息的记录的日志。secondaries节点日志只记录慢的oplog条目;增加logLevel
不会记录所有oplog条目。
从MongoDB 4.2开始, profiler entries(分析器实体) 和 读/写操作的diagnostic log messages (i.e. mongod/mongos log messages)(诊断日志消息,例如:mongod/mongos 日志消息)包括:
“mongod”和“mongos”进程包括一个全时诊断数据收集(FTDC)机制,以便于MongoDB公司工程师对MongoDB服务器运行情况进行分析。FTDC数据文件是不可读压缩格式,并且继承与MongoDB数据文件相同的文件访问权限。只有能够访问FTDC数据文件的用户才能传输FTDC数据。工程师不能独立于系统所有者或运营人员访问FTDC数据。MongoDB进程默认运行FTDC。更多MongoDB支持选项请查看 Getting Started With MongoDB Support。
FTDC隐私
FTDC数据文件是的不可读压缩格式。MongoDB公司工程师没有系统所有者或运营者的明确许可和帮助,不能访问FTDC数据。
FTDC数据 从不 包含如下类型信息:
- 查询、查询谓词或查询结果的示例
- 从任何最终用户集合或索引中采样的数据
- 系统或MongoDB用户凭据或安全证书
FTDC定期收集由以下命令生成的统计信息:
依赖于主机操作系统,诊断数据可能包括如下统计:
- CPU使用率
- 内存使用率
- 与性能相关的磁盘利用率。FTDC不包括与存储容量相关的数据。
- 网络性能统计。FTDC只捕获元数据,不捕获或检查任何网络数据包。
FTDC收集在文件交换或启动时以下命令生成的统计信息
mongod
进程将FTDC数据文件存储在mongoDB实例 storage.dbPath
下的 diagnostic.data
目录中。所有诊断数据文件被存储在这个路径下。举例:dbPath
设置成 /data/db
,诊断数据路径则是 /data/db/diagnostic.data
。
mongos
进程将FTDC数据文件存储在相对于 systemLog.path
日志路径设置的诊断目录中。MongoDB截断日志文件扩展名,并将 diagnostic.data
连接到剩余的名称。举例: path
设置/var/log/mongodb/mongos.log
,诊断数据路径为/var/log/mongodb/mongos.diagnostic.data
。FTDC默认按如下执行:
- 每秒进行数据采集
- 最大200MB“diagnostic.data”文件夹大小。
这些默认设置旨在向MongoDB公司工程师提供有用的数据,对性能或存储大小的影响最小。这些值仅在MongoDB公司工程师出于特定诊断目的需求时才需修改。
setParameter:
diagnosticDataCollectionEnabled: false
关闭FTDC可能增加MongDB公司工程师分析和调试问题的时间和资源。
译者:程哲欣