--- title: "脚本缓存大小配置" date: 2026-02-05 lastmod: 2026-02-05 description: "控制脚本缓存大小的配置项说明" tags: ["脚本配置", "缓存管理", "性能优化"] summary: "配置项作用 # script.cache.max_size 配置项控制已编译脚本缓存的最大数量。脚本编译后会被缓存以便后续快速执行,此配置决定缓存可以容纳的脚本数量。 配置项类型 # 该配置项为动态配置,可以在运行时通过集群设置 API 进行修改。 默认值 # 100 是否必需 # 可选配置项(有默认值) 取值范围 # 0 ~ 正无穷 配置格式 # # 默认配置 script.cache.max_size: 100 # 增加缓存大小 script.cache.max_size: 200 # 减少缓存大小 script.cache.max_size: 50 # 禁用缓存 script.cache.max_size: 0 相关配置项 # 配置项 默认值 说明 script.cache.max_size 100 最大缓存数量 script.cache.expire 0ms 缓存过期时间 script.max_compilations_rate use-context 编译速率限制 工作原理 # 脚本缓存机制:" --- ## 配置项作用 `script.cache.max_size` 配置项控制已编译脚本缓存的最大数量。脚本编译后会被缓存以便后续快速执行,此配置决定缓存可以容纳的脚本数量。 ## 配置项类型 该配置项为**动态配置**,可以在运行时通过集群设置 API 进行修改。 ## 默认值 ``` 100 ``` ## 是否必需 **可选配置项**(有默认值) ## 取值范围 ``` 0 ~ 正无穷 ``` ## 配置格式 ```yaml # 默认配置 script.cache.max_size: 100 # 增加缓存大小 script.cache.max_size: 200 # 减少缓存大小 script.cache.max_size: 50 # 禁用缓存 script.cache.max_size: 0 ``` ## 相关配置项 | 配置项 | 默认值 | 说明 | |-------|-------|------| | `script.cache.max_size` | 100 | 最大缓存数量 | | `script.cache.expire` | 0ms | 缓存过期时间 | | `script.max_compilations_rate` | use-context | 编译速率限制 | ## 工作原理 脚本缓存机制: ``` ┌─────────────────────────────────────────────────────────────────┐ │ 脚本缓存 │ └─────────────────────────────────────────────────────────────────┘ 脚本执行请求 │ ▼ 检查编译缓存 │ ├── 缓存命中 │ │ │ └── 直接使用编译结果 │ └── 缓存未命中 │ ├── 编译脚本 │ ├── 检查缓存大小 │ │ │ ├── 缓存未满 → 加入缓存 │ └── 缓存已满 → 驱逐最旧脚本 │ └── 执行编译结果 ``` ## 使用场景 ### 1. 默认配置(推荐) ```yaml script.cache.max_size: 100 ``` 适用于大多数集群配置。 ### 2. 大量脚本操作 ```yaml script.cache.max_size: 200 ``` **适用场景:** - 频繁脚本查询 - 大量不同脚本 - 提高命中率 ### 3. 资源受限 ```yaml script.cache.max_size: 50 ``` **适用场景:** - JVM 堆内存有限 - 脚本变化少 - 减少内存占用 ### 4. 禁用缓存 ```yaml script.cache.max_size: 0 ``` **适用场景:** - 脚本每次都不同 - 不需要缓存 - 节省内存 ## 推荐设置建议 | 脚本使用模式 | 推荐大小 | 说明 | |-----------|---------|------| | 少量固定脚本 | 50-100 | 默认配置 | | 大量不同脚本 | 200-500 | 提高命中率 | | 脚本频繁变化 | 0-50 | 减少缓存 | | 内存受限 | 20-50 | 节省资源 | ## 缓存效果分析 ``` 缓存大小与命中率的关系: 小缓存(50): - ✓ 内存占用少 - ✗ 命中率低 - ✗ 频繁重新编译 中缓存(100): - 平衡内存和性能 - 适中命中率 大缓存(500): - ✓ 高命中率 - ✗ 内存占用大 - ✓ 支持更多脚本 ``` ## 监控建议 ```bash # 查看当前配置 GET /_cluster/settings?filter_path=*.script.cache.max_size # 查看脚本统计 GET /_nodes/stats/script?filter_path=**.cache # 查看缓存使用情况 GET /_nodes/stats/script?filter_path=**.compilations ``` ## 动态配置示例 ```bash # 更新集群配置 PUT /_cluster/settings { "transient": { "script.cache.max_size": 200 } } ``` ## 注意事项 1. **动态更新**:此配置为动态配置,可在线修改 2. **内存消耗**:缓存占用 JVM 堆内存 3. **缓存过期**:配合 cache.expire 使用 4. **命中率监控**:监控缓存命中率 5. **合理设置**:根据脚本数量和变化频率调整