更新时间:2023-06-20 GMT+08:00

配置缓存

将数据转储到OBS后,为了尽可能的减少对OBS的访问请求,并提升ES的查询性能,系统将会缓存部分数据。第一次获取到数据时,会直接访问OBS,之后将获取到的数据缓存在内存中,后续访问会先检查是否有缓存。数据缓存支持内存和文件。

ES访问不同的文件访问的模式是不一样的,缓存系统支持多级缓存,分别使用不同的block大小来缓存不同的文件,如对fdx,tip文件,使用大量的小block缓存,对fdt文件,使用较少的大block缓存。

表1 针对缓存的所有配置

配置名

类型

说明

low_cost.obs.blockcache.names

Array

缓存系统支持多级缓存,分别用来缓存不同访问粒度的数据。此配置列出所有缓存的名字,即使不配置,系统也会默认有一个缓存,名字为default。如果自定义配置,请确保有一个名字为default的缓存,其他名字任意。

默认值:default。

low_cost.obs.blockcache.<NAME>.type

ENUM

缓存的类型,支持memory和file。

当使用memory类型的缓存时,会占用一定的内存大小。当使用file类型的缓存时,会使用磁盘作为缓存。建议使用超高IO型的磁盘提升缓存性能。

默认值:memory。

low_cost.obs.blockcache.<NAME>.blockshift

Integer

缓存每个block的大小,为字节左移数,即2x字节。如配置为16,表示block大小为216字节,等于65536字节,即64K。

默认值:13(即8K)。

low_cost.obs.blockcache.<NAME>.bank.count

Integer

缓存分区数。

默认值:1。

low_cost.obs.blockcache.<NAME>.number.blocks.perbank

Integer

每个缓存分区中包含的block数。

默认值:8192。

low_cost.obs.blockcache. <NAME>.exclude.file.types

Array

不缓存的文件后缀名。如果某些后缀既不包含在exclude列表,也不包含在include列表,则会使用default缓存。

low_cost.obs.blockcache. <NAME>.file.types

Array

缓存的文件后缀名。如果某些后缀既不包含在exclude列表,也不包含在include列表,则会使用default缓存。

以下为一个较为常见的缓存配置,该配置使用两级缓存,名字分别为default和large。其中default缓存使用64K的block大小,并且一共有30*4096个block,default缓存用于缓存除fdt后缀的其他文件。large缓存使用2M的block大小,一共有5*1000个block,large缓存用于缓存fdx,dvd,tip后缀的文件。

low_cost.obs.blockcache.names: ["default", "large"]
low_cost.obs.blockcache.default.type: file
low_cost.obs.blockcache.default.blockshift: 16
low_cost.obs.blockcache.default.number.blocks.perbank: 4096
low_cost.obs.blockcache.default.bank.count: 30
low_cost.obs.blockcache.default.exclude.file.types: ["fdt"]

low_cost.obs.blockcache.large.type: file
low_cost.obs.blockcache.large.blockshift: 21
low_cost.obs.blockcache.large.number.blocks.perbank: 1000
low_cost.obs.blockcache.large.bank.count: 5
low_cost.obs.blockcache.large.file.types: ["fdx", "dvd", "tip"]

表2 其他可配置参数

配置名

类型

说明

index.frozen.obs.max_bytes_per_sec

String

冻结过程中往OBS上传文件最大限速。动态配置,修改后立即生效。

默认值:150MB。

low_cost.obs.index.upload.threshold.use.multipart

String

冻结过程中文件大小超过此配置会使用OBS的分段上传。

默认值:1GB。

index.frozen.reader.cache.expire.duration.seconds

Integer

此参数设置超时时间。

为了减少冻结后的索引占用的堆内存,在索引shard启动后,reader会缓存一段时间,超时后关闭。

默认值:300s。

index.frozen.reader.cache.max.size

Integer

配置缓存最大值。

默认值:100。