=== 问题 ===
max_query_parallelism 原来是硬编码值,改过两轮(8 → 6):
- 8:4 核机器上 76% 调度周期被限流,label values 要 20 秒
- 6:仍然高于核数,25% 周期限流,查询并没有更快
根因不是"该填几",而是**并行度只有一个正确值:等于 CPU 核数**。
把它做成可配置项反而是坑 —— 用户改了 CPU 忘了改并行度就出现错配。
=== 做法 ===
新增 queryParallelism(resourcesCPU):
- 从部署记录的资源规格推导,模板渲染成 {{ .QueryParallelism }}
- 容错:支持 "4000m"/"500m" 毫核写法(向上取整)
- 边界:低于 2 核按 2,高于 12 核按 12(再高频只会互相抢 CPU)
- 非法值/空值回退 4
用户在「组件部署」里改 CPU,并行度自动跟随,页面上不需要新字段。
=== 实测(4 核 + 并行 4)===
by-app(15m) 11913ms 75 条序列 (并行 6 时 12438ms)
label/namespace 38ms
label/app 25ms
label/pod 25ms
限流 61/252 周期(仅重查询那几秒)
附带 TestQueryParallelism 覆盖 10 种输入(含毫核/越界/非法值)。