perf(acceptance): 解耦 API 媒体请求并发

生产同构验收将 API 请求体并发独立配置为 AI_GATEWAY_ACCEPTANCE_API_MEDIA_REQUEST_CONCURRENCY,默认每个 API 128;Worker 执行槽和媒体物化仍按 P24/P28/P32 阶梯变化。\n\n这避免同步 Gemini 请求在整个任务生命周期占用仅 24/28/32 个入口槽,并继续由 RSS 与节点内存门禁验证安全上限。\n\n验证:bash -n;shellcheck -x;git diff --check。
This commit is contained in:
2026-07-31 09:39:23 +08:00
parent 387bf5842d
commit 580f84f569
+8 -1
View File
@@ -29,6 +29,7 @@ Optional model overrides (otherwise selected from current production candidates)
AI_GATEWAY_ACCEPTANCE_VIDEO_MODEL AI_GATEWAY_ACCEPTANCE_VIDEO_MODEL
AI_GATEWAY_ACCEPTANCE_GATEWAY_TLS_SERVER_NAME AI_GATEWAY_ACCEPTANCE_GATEWAY_TLS_SERVER_NAME
AI_GATEWAY_ACCEPTANCE_IDENTITY_SHARDS AI_GATEWAY_ACCEPTANCE_IDENTITY_SHARDS
AI_GATEWAY_ACCEPTANCE_API_MEDIA_REQUEST_CONCURRENCY
EOF EOF
} }
@@ -53,6 +54,7 @@ require_commands curl git jq node openssl sed
: "${AI_GATEWAY_ACCEPTANCE_GEMINI_MODEL:=}" : "${AI_GATEWAY_ACCEPTANCE_GEMINI_MODEL:=}"
: "${AI_GATEWAY_ACCEPTANCE_VIDEO_MODEL:=}" : "${AI_GATEWAY_ACCEPTANCE_VIDEO_MODEL:=}"
: "${AI_GATEWAY_ACCEPTANCE_API_DATABASE_MAX_CONNS:=64}" : "${AI_GATEWAY_ACCEPTANCE_API_DATABASE_MAX_CONNS:=64}"
: "${AI_GATEWAY_ACCEPTANCE_API_MEDIA_REQUEST_CONCURRENCY:=128}"
: "${AI_GATEWAY_ACCEPTANCE_IDENTITY_SHARDS:=32}" : "${AI_GATEWAY_ACCEPTANCE_IDENTITY_SHARDS:=32}"
: "${AI_GATEWAY_ACCEPTANCE_GATEWAY_TLS_SERVER_NAME:=}" : "${AI_GATEWAY_ACCEPTANCE_GATEWAY_TLS_SERVER_NAME:=}"
: "${AI_GATEWAY_ACCEPTANCE_GATEWAYS:?}" : "${AI_GATEWAY_ACCEPTANCE_GATEWAYS:?}"
@@ -62,6 +64,11 @@ require_commands curl git jq node openssl sed
echo 'AI_GATEWAY_ACCEPTANCE_API_DATABASE_MAX_CONNS must be between 1 and 256' >&2 echo 'AI_GATEWAY_ACCEPTANCE_API_DATABASE_MAX_CONNS must be between 1 and 256' >&2
exit 1 exit 1
} }
[[ $AI_GATEWAY_ACCEPTANCE_API_MEDIA_REQUEST_CONCURRENCY =~ ^[1-9][0-9]*$ &&
$AI_GATEWAY_ACCEPTANCE_API_MEDIA_REQUEST_CONCURRENCY -le 1024 ]] || {
echo 'AI_GATEWAY_ACCEPTANCE_API_MEDIA_REQUEST_CONCURRENCY must be between 1 and 1024' >&2
exit 1
}
[[ $AI_GATEWAY_ACCEPTANCE_IDENTITY_SHARDS =~ ^[1-9][0-9]*$ && [[ $AI_GATEWAY_ACCEPTANCE_IDENTITY_SHARDS =~ ^[1-9][0-9]*$ &&
$AI_GATEWAY_ACCEPTANCE_IDENTITY_SHARDS -le 128 ]] || { $AI_GATEWAY_ACCEPTANCE_IDENTITY_SHARDS -le 128 ]] || {
echo 'AI_GATEWAY_ACCEPTANCE_IDENTITY_SHARDS must be between 1 and 128' >&2 echo 'AI_GATEWAY_ACCEPTANCE_IDENTITY_SHARDS must be between 1 and 128' >&2
@@ -897,7 +904,7 @@ apply_capacity_profile() {
"AI_GATEWAY_DATABASE_MIN_IDLE_CONNS=$min_idle" \ "AI_GATEWAY_DATABASE_MIN_IDLE_CONNS=$min_idle" \
"AI_GATEWAY_DATABASE_MAX_CONN_IDLE_SECONDS=$max_idle_seconds" \ "AI_GATEWAY_DATABASE_MAX_CONN_IDLE_SECONDS=$max_idle_seconds" \
"AI_GATEWAY_MEDIA_MATERIALIZATION_CONCURRENCY=$media" \ "AI_GATEWAY_MEDIA_MATERIALIZATION_CONCURRENCY=$media" \
"AI_GATEWAY_MEDIA_REQUEST_CONCURRENCY=$media" >/dev/null "AI_GATEWAY_MEDIA_REQUEST_CONCURRENCY=$AI_GATEWAY_ACCEPTANCE_API_MEDIA_REQUEST_CONCURRENCY" >/dev/null
remote_kubectl rollout status "deployment/easyai-api-$site" \ remote_kubectl rollout status "deployment/easyai-api-$site" \
-n "$namespace" --timeout=300s -n "$namespace" --timeout=300s
done done