MongoDB Search 进程使用的 CPU 和内存量达到指定阈值时,MongoDB Search 会触发 MongoDB Search 警报。如果搜索进程(mongot) 内存不足,索引和查询将失败。您可以在项目警报设置模式中配置MongoDB Search警报条件。您还可以通过集群监控查看MongoDB Search指标。
警告:如果您对已经具有MongoDB Search索引的集合分片,当该集合开始出现在分片上时,您可能会遇到短暂的查询停机。此外,如果您为包含MongoDB Search索引的已分片的集合添加分片,则针对该集合的搜索查询将失败,直到添加的分片完成初始同步进程为止。要学习;了解详情,请参阅初始同步进程。
警报条件
您可以在项目级警报设置页面中配置以下警报条件,以触发警报。
Atlas Search: Index Replication Lag如果MongoDB Search 在复制来自 的 oplog mongod的更改时延迟的大致毫秒数高于或低于阈值,则会发生 。
Atlas Search: Index Size on Disk 如果磁盘上所有MongoDB Search 索引的总大小(以字节为单位)高于或低于阈值,则会发生此情况。
Atlas Search: Max Number of Lucene Docs 默认下自动运行。如果用于存储给定副本集或分片的MongoDB搜索索引的LuceneDocs的上限数量高于阈值,则会出现此警报。
Atlas Search: Mongot stopped replication默认, 自动运行。如果由于磁盘利用率较高而复制被MongoDB Search mongot进程中断,则此警报仅在专用搜索节点上出现。暂停复制阈值为 90%,恢复复制阈值为 85% 磁盘利用率。
如果复制暂停很长时间,mongot进程将从oplog中消失。如果 mongot进程脱离oplog , Atlas会重建索引。但是,如果您升级搜索实例或删除MongoDB搜索索引,则可以防止 mongot 从oplog中脱落。
Atlas Search: Number of Error Queries 如果MongoDB Search 无法返回响应的查询数量高于或低于阈值,则会发生此情况。
Atlas Search: Number of Index Fields 如果MongoDB搜索索引中存在的唯一字段总数高于或低于阈值,则会发生此情况。
Atlas Search: Number of Successful Queries 如果MongoDB搜索成功返回响应的查询数量高于或低于阈值,则会发生此错误。
Atlas Search: Total Number of Queries 如果提交到MongoDB Search 的查询数量高于或低于阈值,则会发生此情况。
Atlas Search Opcounter: Delete 如果每秒删除的文档或字段(索引定义中指定的)总数高于或低于阈值,则发生此事件。
如果每秒对所有MongoDB搜索查询运行的 getmore 命令总数高于或低于阈值,则会出现 Atlas Search Opcounter: Getmore。
Atlas Search Opcounter: Insert 如果MongoDB Search 每秒索引的文档或字段(索引定义中指定的)总数高于或低于阈值,则会发生此错误。
Atlas Search Opcounter: Update 如果MongoDB Search 每秒更新的文档或字段(索引定义中指定的)总数高于或低于阈值,则会发生此错误。
Insufficient disk space to support rebuilding search indexes 默认下自动运行。当您的集群没有足够的可用磁盘空间来支持MongoDB搜索索引时,就会出现此警报。
注意
当 Atlas 自动升级搜索索引以启用新功能时,可能会出现此警报。您的集群必须拥有足够的磁盘空间来存储旧版和新版索引。如果重新构建增加了 90% 或更多的磁盘空间使用量,Atlas 会根据您是否已启用自动扩展来增加集群存储。索引升级完成后,Atlas 会删除旧版索引,从而释放磁盘空间。
Search Memory: Resident 如果MongoDB Search进程占用的常驻内存总字节数高于或低于阈值,则会发生此情况。
Search Memory: Shared 如果MongoDB Search进程占用的共享内存总字节数高于或低于阈值,则会发生此错误。
Search Memory: Virtual 如果MongoDB Search进程占用的虚拟内存总字节数高于或低于阈值,则会发生此错误。
Search Process: CPU (Kernel) % 如果为MongoDB搜索进程提供操作系统调用服务所花费的 CPU 时间百分比高于阈值,则会发生此情况。
Search Process: CPU (User) %
如果用于MongoDB搜索进程的CPU 时间百分比高于阈值,则会发生此情况。
Search Process: Disk space used
如果MongoDB搜索进程使用的磁盘空间总字节数高于阈值,则会发生此情况。
Search Process: Ran out of memory 默认情况下自动运行。您可以配置警报设置,以禁用此通知。当搜索进程 (mongot) 内存不足时,会发生此警报。当搜索进程内存不足时,索引和查询将失败。
常见触发器
当您尝试构建大型或复杂的搜索索引时,通常会出现MongoDB Search 警报。在解决内存问题之前,这些索引将保持 Initial Sync 阶段。
解决眼前的问题
如果搜索进程 ( mongot ) 耗尽内存或磁盘空间,您可以升级集群来解决眼前的问题。 您可以选择具有更多内存、存储空间和 IOPS的集群层级。
实施长期解决方案
要防止将来出现MongoDB Search 警报,请仔细查看提高MongoDB Search 性能的MongoDB Search。
为了优化索引,我们建议部署专用搜索节点,这样就可以独立扩展 Atlas 集群和 $search 工作负载。专用搜索节点仅运行 mongot 进程,因此可改善 mongot 进程的可用性、性能和工作负载均衡。
监控您的进度
查看可用的MongoDB Search 图表以监控MongoDB Search指标。
监控MongoDB Search指标以评估和优化MongoDB Search 索引。
要了解更多信息,请参阅查看集群指标