Milvus 2.4.4集群插入致特定集合读延迟升高的优化咨询
Milvus 2.4.4 集合读延迟优化及读写分离配置建议
一、优化读延迟的核心参数调整
针对单个集合插入导致读延迟升高的情况,重点调优以下Milvus内部参数:
dataCoord.segment.maxSize:默认1GB,可适当调大至2GB左右。插入过程中小segment会频繁触发合并操作,合并会占用资源并干扰读性能,调大参数能减少合并频次,降低对读操作的影响。dataCoord.segment.sealProportion:默认0.7,可调整到0.8-0.9。当segment数据填充到该比例时会触发封闭(seal),调高能减少segment的seal次数,降低因seal带来的读阻塞。queryNode.loadingWorkers:默认4,可增加到8-16。提升并行加载segment的能力,加快新封闭的segment上线速度,减少读请求的等待时间。queryNode.gracefulTime:默认30秒,可缩短至10-15秒。该参数是query节点等待segment加载完成的超时时间,缩短后读操作不会长时间等待未就绪的segment。
二、让查询/搜索不等待插入的配置选项
Milvus支持通过一致性级别配置,让读操作跳过正在插入的未封闭segment,直接从已封闭的稳定segment读取:
- 设置集合默认一致性级别为
Eventually:创建或修改集合时指定该参数,后续查询/搜索会直接读取已提交的稳定数据,不等待当前正在插入的未完成数据。示例代码:from pymilvus import Collection, CollectionSchema schema = CollectionSchema([...]) coll = Collection(name="target_collection", schema=schema, consistency_level="Eventually") - 单次查询时指定一致性级别:如果不想修改集合默认配置,可在每次查询/搜索时单独指定参数,同样能避免读等待插入:
注意:该配置会牺牲强一致性,读操作无法获取最新插入的未提交数据,但能彻底消除读等待插入的阻塞情况。results = coll.search(..., consistency_level="Eventually")
另外,可开启**queryNode.enableSegmentParallelLoad**(默认关闭)并设置为true,让query节点并行加载多个segment,进一步降低插入对读操作的干扰。
内容的提问来源于stack exchange,提问作者R2D2
相关产品推荐
相关产品推荐

