此页面介绍如何调整为 Kubernetes 集群中的 MongoDB Search 和向量搜索提供服务的 mongot pod 的大小。使用它为 MongoDBSearch 资源上的 spec.clusters[].resourceRequirements、spec.clusters[].jvmFlags 和 spec.clusters[].persistence 选择初始值,并规划索引增长的持久卷容量。
在确定 mongot 大小之前,请查看您计划运行的部署模型和拓扑结构:
有关 MongoDB Search 部署模型,请参阅 MongoDB Search 架构。
有关向量搜索部署模型,请参阅MongoDB 向量搜索架构。
有关此页面上引用的每个设置的完整模式,请参阅 MongoDB Search 和向量搜索设置。
资源大小
选择工作负载类
分配的 CPU 内存比取决于搜索工作负载配置文件。
工作负载类 | RAM 到 CPU 比率 | 使用时 |
|---|---|---|
高 CPU | 2 : 1 | 您运行通用全文搜索,其中查询性能是 CPU 密集型的。 |
低 CPU | 8 : 1 | 您在数据量较小的情况下运行向量搜索工作负载,在这种情况下,内存比原始 CPU 更重要。 |
对于大多数常规使用案例,小型或中型高 CPU 配置是一个均衡的起始点。
选择起始大小
根据预期的向量数据量(低 CPU)或每秒查询次数(高 CPU)来调整 mongot Pod 的大小。
size | 低 CPU(向量搜索) | 高 CPU(全文) |
|---|---|---|
小 | 最多 10 GB 的向量 | 20 到 40 QPS,轻度索引 |
中型 | 10 GB 到 50 GB 的向量 | 80 到 160 QPS |
大 | 50 GB 或更多的向量 | 320 到 480 QPS,重度索引 |
例如,如果您预计全文搜索应用程序的每秒查询处理量为 100,则从中型高 CPU 配置开始。
配置 CPU 和内存
在 spec.clusters[].resourceRequirements 中设置 mongot 节点的 CPU 和内存。requests 字段会在节点上预留容量;limits 字段会限制节点可以消耗的容量。
spec: clusters: - resourceRequirements: requests: cpu: "2" memory: 4Gi limits: cpu: "3" memory: 5Gi
如果您省略 spec.clusters[].resourceRequirements,Kubernetes Operator 将使用以下默认值:
requests.cpu:2requests.memory:4Gi无
limits— 节点可以消耗节点的所有可用资源。
将 limits 设置为与工作负载匹配的值。没有限制的 Pod 会使节点饱和,并影响其他工作负载。
配置 JVM 堆
如果您未在 spec.clusters[].jvmFlags 中指定 -Xms 或 -Xmx,Kubernetes Operator 将两个标志都设置为 spec.clusters[].resourceRequirements.requests.memory 的一半,从而自动计算 Java 虚拟机(JVM)堆。
要显式覆盖堆,请在 spec.clusters[].jvmFlags 中设置 -Xms 和 -Xmx。Kubernetes 操作符不会修改您提供的任何标志,并将其添加到操作符计算的标志之后。
spec: clusters: - jvmFlags: - -Xms2g - -Xmx2g
持久卷大小调整
每个 mongot pod 都有自己的持久卷,其中包含搜索和向量索引。规划卷以容纳索引和重建的内存容量。
估计索引大小
集合的大小与由此产生的搜索索引的大小并不总是相关的。索引大小取决于映射的字段以及在索引上启用的功能(例如自动完成)。要估算工作负载的索引大小:
插入代表性示例。
插入 1 到 2 GB 的数据,或使用 $out 创建一个小型集合。
调整要部署的持久卷的大小
分配索引所需磁盘空间的 double。额外空间允许 mongot 在需要时重建索引。当磁盘使用率达到 90% 时,mongot 变为只读。
使用二进制数量后缀在 spec.clusters[].persistence.single.storage 中设置卷大小:
spec: clusters: - persistence: single: storage: 60Gi storageClass: local-nvme
如果省略 spec.clusters[].persistence,Kubernetes 操作符将预配 16 GB 的默认卷。对于 30 GB 索引,将 spec.clusters[].persistence.single.storage 设置为 60Gi,为索引重建留出空间。
选择存储类
参考 spec.clusters[].persistence.single.storageClass 中卷的 StorageClass。选择符合以下指导的类:
磁盘类型:使用通用固态硬盘支持的存储。读写入 IOPS 对
mongot性能很重要。复制涉及新索引段的磁盘写入以及mongot将旧段合并为较大段时的磁盘读取。只读阈值:当卷的使用率达到 90% 时,
mongot进入只读模式并停止写入操作。要恢复写入,请删除索引数据,使使用率低于 85%。
监控资源使用情况
部署后,监控以下阈值,以确认初始大小是否足够,并了解何时进行扩展。
Resource | 阈值 | 操作 |
|---|---|---|
CPU | 持续超过 80% 使用率 | 增加 |
内存 |
| 增加 |
Disk | 使用率超过 90% | 减少索引大小,使用用量低于阈值。 |