更新时间: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" }
父主题: 存算分离