配置项作用 #
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.max_compilations_rate (失效)
├── script.context.<context>.max_compilations_rate (失效)
└── 无限制编译
速率限制机制 #
编译速率限制原理
限制算法 (滑动窗口):
时间窗口: 固定时长 (如 1 分钟)
检查流程:
├── 记录每次脚本编译时间
├── 计算时间窗口内的编译次数
├── 比较: 次数 <= max_compilations_rate?
│ ├── 是 → 允许编译 ✅
│ └── 否 → 拒绝编译 ❌
└── 返回结果
配置优先级:
├── disable_max_compilations_rate: true
│ └── 最高优先级,禁用所有限制
│
├── script.context.<context>.max_compilations_rate
│ └── 特定上下文的编译速率
│ └── 优先级高于通用配置
│
└── script.max_compilations_rate
└── 通用的编译速率
└── 当没有上下文配置时使用
安全影响 #
安全风险分析
禁用限制 (true) 的风险:
├── 资源耗尽风险 ⚠️
│ ├── 恶意脚本持续编译
│ ├── 内存占用增加
│ └── CPU 负载升高
│
├── DoS 攻击风险 ⚠️
│ ├── 发送大量不同脚本
│ ├── 强制持续编译
│ └── 导致服务不可用
│
└── 性能下降风险 ⚠️
├── 编译占用资源
├── 影响正常请求
└── 响应时间增加
启用限制 (false) 的保护:
├── 资源保护 ✅
│ ├── 限制编译速率
│ ├── 防止资源耗尽
│ └── 保持系统稳定
│
├── 安全防护 ✅
│ ├── 防止恶意攻击
│ ├── 限制异常请求
│ └── 保护集群安全
│
└── 性能保障 ✅
├── 稳定的编译性能
├── 可预测的资源使用
└── 良好的用户体验
配置建议 #
生产环境(推荐) #
script:
disable_max_compilations_rate: false # 启用限制(默认)
建议: 生产环境必须保持默认值 false,启用编译速率限制。
测试环境 #
script:
disable_max_compilations_rate: true # 禁用限制
建议: 仅在测试环境中使用,避免编译限制影响测试。
开发环境 #
script:
disable_max_compilations_rate: true # 方便调试
建议: 开发环境可以禁用,方便频繁修改和测试脚本。
性能调优 #
script:
disable_max_compilations_rate: false # 保持限制
max_compilations_rate: "150/5m" # 调整速率
建议: 保持限制启用,根据需求调整速率值。
代码示例 #
基础配置 #
script:
disable_max_compilations_rate: false
测试环境配置 #
script:
disable_max_compilations_rate: true
完整脚本配置 #
script:
disable_max_compilations_rate: false
max_compilations_rate: "150/5m"
cache:
max_size: 500
expire: "30m"
上下文级配置 #
script:
disable_max_compilations_rate: false
context:
score:
max_compilations_rate: "200/5m"
update:
max_compilations_rate: "100/5m"
高安全配置 #
script:
disable_max_compilations_rate: false
max_compilations_rate: "75/5m" # 更严格的限制
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
disable_max_compilations_rate | 禁用速率限制 | false |
max_compilations_rate | 通用编译速率 | 75/5m |
context.<context>.max_compilations_rate | 上下文编译速率 | - |
注意事项 #
默认值: 默认值为
false,推荐保持。非动态更新: 需要重启节点才能生效。
生产环境: 生产环境必须保持
false。安全风险: 设置为
true存在安全风险。资源保护: 保持
false可以保护系统资源。测试专用: 仅在测试/开发环境使用
true。配置失效: 设置为
true时,其他速率配置失效。监控建议: 监控脚本编译频率和资源使用。
替代方案: 如需更高编译速率,调整
max_compilations_rate而非禁用。审计日志: 记录编译拒绝事件,便于安全审计。
使用场景 #
适合使用 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"





