性能
IBM Cloud® Databases for MongoDB 部署可以手动 缩放到使用情况,也可以在特定资源条件下配置为 自动缩放。 如果要调整部署的性能,请首先考虑几个因素。
监视部署
Databases for MongoDB 部署提供与 IBM Cloud® Monitoring 服务 的集成,用于基本监视部署上的资源使用情况。 提供了许多可用度量,例如磁盘使用率和 IOPS,以帮助您在部署上配置 自动缩放。 观察使用趋势并配置自动缩放以响应这些趋势可帮助缓解数据库因资源耗尽而变得不稳定之前的性能问题。
磁盘使用情况
如果您担心 MongoDB 正在使用多少空间来存储数据,那么可以运行一些本机 MongoDB 数据存储诊断 来查找诸如数据库,集合和索引之类的大小。 如果已知并固定了数据集的大致大小,那么可以手动缩放磁盘以容纳数据。 如果数据集随时间推移以可预测的速率增长,那么可以配置自动缩放以在磁盘使用率达到特定阈值时增加磁盘大小。
磁盘 I/O
Databases for MongoDB 部署上的每秒输入/输出操作数 (IOPS) 受存储卷类型限制。 Databases for MongoDB 部署的存储卷是 Block Storage 10 IOPS/GB 层中的耐久性卷。 达到 I/O 利用率限制可能会导致数据库响应缓慢或显得无响应。 例如,未优化的查询, 索引构建和创建新索引可能会导致 IOPS 峰值,但应用程序的正常工作负载也可能超过可用于部署的 IOPS。
您可以通过增加磁盘空间来增加可用于部署的 IOPS 数。 如果部署的 I/O 利用率在较长一段时间内达到特定饱和点,那么还可以配置自动缩放以自动增加磁盘大小。
有关更多信息,请参阅 MongoDB 文档。
WiredTiger 高速缓存和内存
Databases for MongoDB使用 WiredTiger存储引擎,它同时使用文件系统内存缓存和内部内存缓存。 当 MongoDB 从其内部高速缓存提供数据时,性能最高; 当数据位于文件系统高速缓存中时,性能最低; 当它必须从磁盘抓取数据时,性能最低。
内部高速缓存的缺省大小为 50% of (total RAM per member - 1 GB) 或 256 MB,以较大者为准。 例如, Databases for MongoDB 部署的最小内存大小为每个数据成员 4096 MB,因此内部缓存为 1536 MB(因为 0.5 * (4096 MB - 1024 MB) = 1536 MB.
内部/文件系统高速缓存比率在您的部署上不可由用户配置,但您可以调整内存总量以调整内部高速缓存,从而使数据库性能更高。 例如,如果将每个成员的内存扩展到 5120 MB,内部缓存大小就会变成 2048 MB。0.5 * (5120 MB - 1024 MB) = 2048 MB.
另一种使用自动缩放的方法是将内存设置为在磁盘 I/O 利用率达到特定阈值时进行缩放。 增加内存会减少 MongoDB 读取或写入磁盘的数量,因此额外的内存可能会通过支持更多高速缓存来减轻磁盘 I/O 的压力。
有关 WiredTiger 高速缓存的更多信息,请参阅 MongoDB 文档。
查询性能
MongoDB 文档包含有关查询性能的多个资源,包括有关 分析查询性能的操作方法。 一旦您对查询的执行方式有了一般的了解,他们还会提供有关 优化查询的提示。
作为更高级的主题,您可以了解 MongoDB 如何管理查询计划。
其他 MongoDB 监测工具
您还可以利用某些本机 MongoDB 监视功能。 例如,可以同时使用 mongotop 和 mongostat。
mongotop 30 --username admin --password $PASSWORD --tls --tlsCAFile $CERTFILE --authenticationDatabase admin --host host1.databases.appdomain.cloud:31712, host2.databases.appdomain.cloud:31712
mongostat -n 20 1 --username admin --password $PASSWORD --tls --tlsCAFile $CERTFILE --authenticationDatabase admin --host host1.databases.appdomain.cloud:31712,host2.databases.appdomain.cloud:31712 --json
运行报告 MongoDB 数据库状态的任何 已记录命令。
许多 MongoDB 实用程序和命令都需要 群集监控器角色才能执行。 它不是 admin 缺省角色集的一部分。 向部署上的 admin 用户 授予集群监视器角色。
有关更多信息,请参阅 最佳实践博客帖子。