更新时间:2024-12-02 GMT+08:00
查询冷数据性能提升
背景信息
在Kibana的Discover页面的首次查询时,由于此时无任何缓存,导致所有数据均需要从OBS上获取。当命中的文档数量较多时,需要耗费大量的时间从OBS上获取对应的时间字段以及文件元数据。若将这一部分数据直接缓存在本地,即可大量提升查询性能,解决Discover页面首次查询慢的问题。
前提条件
此特性仅支持在2023年02月后创建的7.6.2和7.10.2版本集群以及Opensearch集群。
查询冷数据本地缓存API
您可以使用该API查询冷数据本地缓存的相关指标。
请求示例
GET /_frozen_stats/local_cache
GET /_frozen_stats/local_cache/{nodeId}
响应示例
{
"_nodes" : {
"total" : 1,
"successful" : 1,
"failed" : 0
},
"cluster_name" : "elasticsearch",
"nodes" : {
"6by3lPy1R3m55Dcq3liK8Q" : {
"name" : "node-1",
"transport_address" : "127.0.0.1:9300",
"host" : "127.0.0.1",
"ip" : "127.0.0.1",
"local_cache" : {
"get_stats" : {
"get_total_count" : 562, //从冷数据本地缓存查询数据的总次数
"get_hit_count" : 562, //从冷数据本地缓存查询数据命中的次数
"get_miss_count" : 0, //从冷数据本地缓存查询数据未命中的次数
"get_total_ns" : 43849200, //从冷数据本地缓存查询数据的总时长
"get_avg_ns" : 78023 //从冷数据本地缓存查询数据的平均时长
},
"load_stats" : {
"load_count" : 2, //加载冷数据本地缓存的次数
"load_total_ms" : 29, //加载冷数据本地缓存的总时长
"load_avg_ms" : 14, //加载冷数据本地缓存的平均时长
"load_fail_count" : 0, //加载冷数据本地缓存的失败次数
"load_overflow_count" : 0 //加载冷数据本地缓存时超过缓存池的次数
},
"reload_stats" : {
"reload_count" : 0, //重新生成冷数据本地缓存的次数
"reload_total_ms" : 0, //重新生成冷数据本地缓存的总时长
"reload_avg_ms" : 0, //重新生成冷数据本地缓存的平均时长
"reload_fail_count" : 0 //重新生成冷数据本地缓存的失败次数
},
"init_stats" : {
"init_count" : 0, //初始化冷数据本地缓存的次数
"init_total_ms" : 0, //初始化冷数据本地缓存的总时长
"init_avg_ms" : 0, //初始化冷数据本地缓存的平均时长
"init_fail_count" : 0 //初始化冷数据本地缓存的失败次数
}
}
}
}
}
配置参数
|
配置项 |
类型 |
单位 |
取值范围 |
scope |
是否可动态修改 |
作用 |
|---|---|---|---|---|---|---|
|
low_cost.local_cache.max.capacity |
Integer |
无 |
10-5000,默认值500。 |
node |
是 |
节点上,能够打开的冷数据缓存的最大数量。(每个shard对应一个缓存对象)
说明:
|
|
index.low_cost.local_cache.threshold |
Integer |
% |
0-100,默认值50。 |
index |
是 |
启用冷数据本地缓存的阈值。
说明:
|
|
index.low_cost.local_cache.evict_time |
字符串 |
天 |
1d-365d,默认值30d。 |
index |
是 |
冷数据本地缓的淘汰时间。根据index.frozen_date(冻结成功的时间)判定。
说明:
|
修改参数
- 修改low_cost.local_cache.max.capacity
PUT _cluster/settings { "persistent": { "low_cost.local_cache.max.capacity":1000 } } - 修改index.low_cost.local_cache.threshold
PUT es_write_pref2-00000000021/_settings { "index.low_cost.local_cache.threshold":20 } - 修改index.low_cost.local_cache.evict_time
PUT es_write_pref2-00000000021/_settings { "index.low_cost.local_cache.evict_time":"7d" }
父主题: 存算分离