--- title: "禁用脚本编译速率限制配置" date: 2026-03-07 lastmod: 2026-03-07 description: "script.disable_max_compilations_rate 配置项用于控制是否禁用脚本编译速率限制。" tags: ["Script", "脚本", "编译", "性能限制"] summary: "配置项作用 # script.disable_max_compilations_rate 配置项用于控制是否禁用脚本最大编译速率限制。 当设置为 true 时,系统不再对脚本编译的速率进行限制;当设置为 false(默认值)时,启用脚本编译速率限制,以防止资源耗尽。 配置项属性 # 配置路径: script.disable_max_compilations_rate 数据类型: Boolean(布尔值) 默认值: false 是否可选: 是 作用域: NodeScope(节点级别) 动态更新: 否(需要重启节点生效) 配置项详解 # 工作机制 # 脚本编译速率控制 disable_max_compilations_rate: false (默认,启用限制): 脚本编译请求: ├── 检查编译速率 ├── 计算时间窗口内的编译次数 ├── 是否超过限制? │ ├── 是 → 拒绝编译 ❌ │ └── 否 → 允许编译 ✅ └── 继续执行 相关配置生效: ├── script.max_compilations_rate ├── script.context.<context>.max_compilations_rate └── 速率限制生效 disable_max_compilations_rate: true (禁用限制): 脚本编译请求: ├── 跳过速率检查 ├── 允许无限编译 └── 直接执行 ✅ 相关配置失效: ├── script." --- ## 配置项作用 `script.disable_max_compilations_rate` 配置项用于控制**是否禁用脚本最大编译速率限制**。 当设置为 `true` 时,系统不再对脚本编译的速率进行限制;当设置为 `false`(默认值)时,启用脚本编译速率限制,以防止资源耗尽。 ## 配置项属性 - **配置路径**: `script.disable_max_compilations_rate` - **数据类型**: `Boolean`(布尔值) - **默认值**: `false` - **是否可选**: 是 - **作用域**: NodeScope(节点级别) - **动态更新**: **否**(需要重启节点生效) ## 配置项详解 ## 工作机制 ``` 脚本编译速率控制 disable_max_compilations_rate: false (默认,启用限制): 脚本编译请求: ├── 检查编译速率 ├── 计算时间窗口内的编译次数 ├── 是否超过限制? │ ├── 是 → 拒绝编译 ❌ │ └── 否 → 允许编译 ✅ └── 继续执行 相关配置生效: ├── script.max_compilations_rate ├── script.context..max_compilations_rate └── 速率限制生效 disable_max_compilations_rate: true (禁用限制): 脚本编译请求: ├── 跳过速率检查 ├── 允许无限编译 └── 直接执行 ✅ 相关配置失效: ├── script.max_compilations_rate (失效) ├── script.context..max_compilations_rate (失效) └── 无限制编译 ``` ## 速率限制机制 ``` 编译速率限制原理 限制算法 (滑动窗口): 时间窗口: 固定时长 (如 1 分钟) 检查流程: ├── 记录每次脚本编译时间 ├── 计算时间窗口内的编译次数 ├── 比较: 次数 <= max_compilations_rate? │ ├── 是 → 允许编译 ✅ │ └── 否 → 拒绝编译 ❌ └── 返回结果 配置优先级: ├── disable_max_compilations_rate: true │ └── 最高优先级,禁用所有限制 │ ├── script.context..max_compilations_rate │ └── 特定上下文的编译速率 │ └── 优先级高于通用配置 │ └── script.max_compilations_rate └── 通用的编译速率 └── 当没有上下文配置时使用 ``` ## 安全影响 ``` 安全风险分析 禁用限制 (true) 的风险: ├── 资源耗尽风险 ⚠️ │ ├── 恶意脚本持续编译 │ ├── 内存占用增加 │ └── CPU 负载升高 │ ├── DoS 攻击风险 ⚠️ │ ├── 发送大量不同脚本 │ ├── 强制持续编译 │ └── 导致服务不可用 │ └── 性能下降风险 ⚠️ ├── 编译占用资源 ├── 影响正常请求 └── 响应时间增加 启用限制 (false) 的保护: ├── 资源保护 ✅ │ ├── 限制编译速率 │ ├── 防止资源耗尽 │ └── 保持系统稳定 │ ├── 安全防护 ✅ │ ├── 防止恶意攻击 │ ├── 限制异常请求 │ └── 保护集群安全 │ └── 性能保障 ✅ ├── 稳定的编译性能 ├── 可预测的资源使用 └── 良好的用户体验 ``` ## 配置建议 ## 生产环境(推荐) ```yaml script: disable_max_compilations_rate: false # 启用限制(默认) ``` **建议**: 生产环境必须保持默认值 `false`,启用编译速率限制。 ## 测试环境 ```yaml script: disable_max_compilations_rate: true # 禁用限制 ``` **建议**: 仅在测试环境中使用,避免编译限制影响测试。 ## 开发环境 ```yaml script: disable_max_compilations_rate: true # 方便调试 ``` **建议**: 开发环境可以禁用,方便频繁修改和测试脚本。 ## 性能调优 ```yaml script: disable_max_compilations_rate: false # 保持限制 max_compilations_rate: "150/5m" # 调整速率 ``` **建议**: 保持限制启用,根据需求调整速率值。 ## 代码示例 ## 基础配置 ```yaml script: disable_max_compilations_rate: false ``` ## 测试环境配置 ```yaml script: disable_max_compilations_rate: true ``` ## 完整脚本配置 ```yaml script: disable_max_compilations_rate: false max_compilations_rate: "150/5m" cache: max_size: 500 expire: "30m" ``` ## 上下文级配置 ```yaml script: disable_max_compilations_rate: false context: score: max_compilations_rate: "200/5m" update: max_compilations_rate: "100/5m" ``` ## 高安全配置 ```yaml script: disable_max_compilations_rate: false max_compilations_rate: "75/5m" # 更严格的限制 ``` ## 相关配置 | 配置项 | 作用 | 默认值 | |--------|------|--------| | `disable_max_compilations_rate` | 禁用速率限制 | false | | `max_compilations_rate` | 通用编译速率 | 75/5m | | `context..max_compilations_rate` | 上下文编译速率 | - | ## 注意事项 1. **默认值**: 默认值为 `false`,推荐保持。 2. **非动态更新**: 需要重启节点才能生效。 3. **生产环境**: 生产环境必须保持 `false`。 4. **安全风险**: 设置为 `true` 存在安全风险。 5. **资源保护**: 保持 `false` 可以保护系统资源。 6. **测试专用**: 仅在测试/开发环境使用 `true`。 7. **配置失效**: 设置为 `true` 时,其他速率配置失效。 8. **监控建议**: 监控脚本编译频率和资源使用。 9. **替代方案**: 如需更高编译速率,调整 `max_compilations_rate` 而非禁用。 10. **审计日志**: 记录编译拒绝事件,便于安全审计。 ## 使用场景 ``` 适合使用 false 的场景 (默认): 1. 生产环境 ├── 需要资源保护 ├── 需要安全防护 └── 防止恶意攻击 2. 多租户环境 ├── 多个用户共享集群 ├── 防止单个用户占用资源 └── 保证服务质量 3. 公网访问环境 ├── 面向外部用户 ├── 潜在攻击风险 └── 需要安全保护 适合使用 true 的场景 (谨慎): 1. 测试环境 ├── 频繁修改脚本 ├── 不受编译限制 └── 方便功能测试 2. 开发环境 ├── 快速迭代 ├── 调试脚本 └── 本地开发 3. 私有安全环境 ├── 受控访问 ├── 信任用户 └── 特殊需求 ``` ## 故障排查 ``` 编译速率限制问题 问题: 脚本编译被拒绝 错误信息: script compilation limit exceeded 排查: ├── 检查编译速率 ├── 查看被拒绝的脚本 ├── 分析编译频率 └── 识别问题来源 解决: ├── 调整 max_compilations_rate ├── 优化脚本减少编译 ├── 使用脚本缓存 └── 不要使用 disable_max_compilations_rate 问题: 需要更高的编译速率 错误的解决: ❌ script.disable_max_compilations_rate: true 正确的解决: ✅ script.max_compilations_rate: "200/5m" ✅ script.context.score.max_compilations_rate: "300/5m" ```