--- title: "Script Too many dynamic script compilations within max – 如何解决此 Elasticsearch 异常" date: 2026-02-20 lastmod: 2026-02-20 description: "当 Elasticsearch 在短时间内编译过多唯一动态脚本,超过系统设置的限制时,会出现此错误。这可能会降低 Elasticsearch 集群的性能。" tags: ["脚本", "动态脚本", "性能优化", "编译限制"] summary: "版本: 6.8-7.15 简要来说,当 Elasticsearch 在短时间内编译过多唯一动态脚本,超过系统设置的限制时,会出现此错误。这可能会降低 Elasticsearch 集群的性能。要解决此问题,你可以增加脚本编译速率限制,缓存和重用脚本,或将动态脚本转换为存储脚本。但是,增加限制时要谨慎,因为这可能会导致高 CPU 使用率。建议优化你的脚本以获得更好的性能。 日志上下文 # 日志 “[script] Too many dynamic script compilations within; max: [” 的类名是 ScriptCache.java。 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人参考: }); if (tokenBucketState.tokenSuccessfullyTaken == false) { scriptMetrics.onCompilationLimit(); // Otherwise reject the request throw new CircuitBreakingException("[script] Too many dynamic script compilations within; max: [" + rate + "]; please use indexed; or scripts with parameters instead; " + "this limit can be changed by the [" + contextRateSetting + "] setting"; CircuitBreaker." --- > **版本:** 6.8-7.15 简要来说,当 Elasticsearch 在短时间内编译过多唯一动态脚本,超过系统设置的限制时,会出现此错误。这可能会降低 Elasticsearch 集群的性能。要解决此问题,你可以增加脚本编译速率限制,缓存和重用脚本,或将动态脚本转换为存储脚本。但是,增加限制时要谨慎,因为这可能会导致高 CPU 使用率。建议优化你的脚本以获得更好的性能。 ## 日志上下文 日志 "[script] Too many dynamic script compilations within; max: [" 的类名是 [ScriptCache.java。](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/) 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人参考: ```java }); if (tokenBucketState.tokenSuccessfullyTaken == false) { scriptMetrics.onCompilationLimit(); // Otherwise reject the request throw new CircuitBreakingException("[script] Too many dynamic script compilations within; max: [" + rate + "]; please use indexed; or scripts with parameters instead; " + "this limit can be changed by the [" + contextRateSetting + "] setting"; CircuitBreaker.Durability.TRANSIENT); } } ```