慢查询隔离(公测中)
为保证集群稳定,通常需要对一些大查询或慢查询放到特定的线程池进行隔离,避免影响正常查询。Lindorm搜索引擎支持慢查询隔离,可用于隔离指定的慢查询。本文介绍在Lindorm搜索引擎中如何使用慢查询隔离功能。
注意事项
Lindorm搜索引擎慢查询隔离目前处于公测阶段,如需体验该功能,请联系Lindorm技术支持(钉钉号:s0s3eg3)开启。
前置说明
搜索引擎版本不能低于3.9.31。
慢查询统计
可统计查看当前系统中资源消耗最高的搜索查询,帮助快速识别慢查询、高CPU或高内存占用的请求,为性能调优、查询隔离和容量规划提供依据。
语法
GET /_top_tasks?actions=*search&top=N[&resource=TYPE]&pretty参数说明
参数名称 | 必选 | 说明 |
| 是 | 固定值,表示仅统计搜索类请求(即查询操作)。 |
| 是 | 返回资源消耗最高的前 |
| 否 | 指定按哪种资源指标排序: |
| 否 | 返回格式化后的 JSON 结果,便于阅读。 |
示例
# 统计耗时前5的查询
curl -XGET "http://solr-1:port/_top_tasks?actions=*search&top=5&pretty"
# 统计cpu时长前5的查询
curl -XGET "http://solr-1:port/_top_tasks?actions=*search&top=5&resource=cpu&pretty"
# 统计memory占用前5的查询
curl -XGET "http://solr-1:port/_top_tasks?actions=*search&top=5&resource=memory&pretty"慢查询隔离
云原生多模数据库 Lindorm搜索引擎提供模式匹配隔离、时间阈值隔离两种慢查询隔离方式。用户可直接根据业务场景选择合适方式,精准隔离目标慢查询。
模式匹配隔离
可基于查询语句中的字符串进行匹配,将符合规则的查询自动识别并隔离到慢查询池中。
语法
PUT _cluster/settings参数说明
参数名称 | 必选 | 说明 |
| 是 | 定义慢查询匹配规则。满足该规则的查询将被加入慢查询池,主要为字符串匹配:
|
示例
# 同时包含date_histogram和aggregations字符串或者包含muti_match的查询放入慢查询池
curl -XPUT "host:port/_cluster/settings?" -H "Content-Type: application/json" -d'
{
"persistent" : {"search.slow.query.rule" : "date_histogram AND aggregations|| muti_match"}
}'
# 包含bucket_script或muti_match的查询放入慢查询池
curl -XPUT "host:port/_cluster/settings?" -H "Content-Type: application/json" -d'
{
"persistent" : {"search.slow.query.rule" : "bucket_script || muti_match"}
}'时间阈值隔离
可将响应时间(RT)超过指定阈值的查询自动识别并隔离到慢查询池中,从而限制其对系统资源的占用,保障核心查询的稳定性。
语法
PUT _cluster/settings参数说明
参数名称 | 必选 | 说明 |
| 是 | 设置慢查询的RT阈值。查询响应时间超过该值即被视为慢查询,并会放入慢查询池中,单位是毫秒(ms)。 |
此场景主要针对重复或周期性执行的慢查询,如果是不同查询,则无法隔离。
若后续相同查询RT低于阈值,系统会自动将其从慢查询池中移除,恢复正常调度。
示例
# 查询rt超30s的查询隔离到慢查询
curl -XPUT "host:port/_cluster/settings" -H "Content-Type: application/json" -d'
{
"persistent" : {"search.slow.query.threshold" : 30000}
}'