|
|
|
@@ -20,6 +20,7 @@ source "$config_file"
|
|
|
|
|
: "${AI_GATEWAY_ASYNC_WORKER_INSTANCE_HARD_LIMIT:=24}"
|
|
|
|
|
: "${AI_GATEWAY_ASYNC_WORKER_HARD_LIMIT:=48}"
|
|
|
|
|
: "${AI_GATEWAY_ASYNC_WORKER_GLOBAL_HARD_LIMIT:=$AI_GATEWAY_ASYNC_WORKER_HARD_LIMIT}"
|
|
|
|
|
: "${AI_GATEWAY_ASYNC_ADMISSION_MICROBATCH_SIZE:=8}"
|
|
|
|
|
: "${AI_GATEWAY_WORKER_MEMORY_REQUEST_MIB:=1536}"
|
|
|
|
|
: "${AI_GATEWAY_WORKER_CPU_REQUEST_MILLICORES:=500}"
|
|
|
|
|
: "${AI_GATEWAY_DATABASE_MAX_CONNS:=32}"
|
|
|
|
@@ -71,6 +72,7 @@ for capacity_value in \
|
|
|
|
|
"$AI_GATEWAY_ASYNC_WORKER_INSTANCE_HARD_LIMIT" \
|
|
|
|
|
"$AI_GATEWAY_ASYNC_WORKER_HARD_LIMIT" \
|
|
|
|
|
"$AI_GATEWAY_ASYNC_WORKER_GLOBAL_HARD_LIMIT" \
|
|
|
|
|
"$AI_GATEWAY_ASYNC_ADMISSION_MICROBATCH_SIZE" \
|
|
|
|
|
"$AI_GATEWAY_WORKER_MEMORY_REQUEST_MIB" \
|
|
|
|
|
"$AI_GATEWAY_WORKER_CPU_REQUEST_MILLICORES" \
|
|
|
|
|
"$AI_GATEWAY_DATABASE_MAX_CONNS" \
|
|
|
|
@@ -113,6 +115,7 @@ done
|
|
|
|
|
AI_GATEWAY_ASYNC_WORKER_INSTANCE_HARD_LIMIT <= 256 &&
|
|
|
|
|
AI_GATEWAY_ASYNC_WORKER_HARD_LIMIT <= 512 &&
|
|
|
|
|
AI_GATEWAY_ASYNC_WORKER_GLOBAL_HARD_LIMIT <= 512 &&
|
|
|
|
|
AI_GATEWAY_ASYNC_ADMISSION_MICROBATCH_SIZE <= 32 &&
|
|
|
|
|
AI_GATEWAY_ASYNC_WORKER_HARD_LIMIT == AI_GATEWAY_ASYNC_WORKER_GLOBAL_HARD_LIMIT &&
|
|
|
|
|
AI_GATEWAY_WORKER_MEMORY_REQUEST_MIB >= 256 &&
|
|
|
|
|
AI_GATEWAY_WORKER_MEMORY_REQUEST_MIB <= 1900 &&
|
|
|
|
@@ -170,6 +173,7 @@ capacity_config_hash() {
|
|
|
|
|
"$AI_GATEWAY_ASYNC_WORKER_INSTANCE_HARD_LIMIT" \
|
|
|
|
|
"$AI_GATEWAY_ASYNC_WORKER_HARD_LIMIT" \
|
|
|
|
|
"$AI_GATEWAY_ASYNC_WORKER_GLOBAL_HARD_LIMIT" \
|
|
|
|
|
"$AI_GATEWAY_ASYNC_ADMISSION_MICROBATCH_SIZE" \
|
|
|
|
|
"$AI_GATEWAY_WORKER_MEMORY_REQUEST_MIB" \
|
|
|
|
|
"$AI_GATEWAY_WORKER_CPU_REQUEST_MILLICORES" \
|
|
|
|
|
"$AI_GATEWAY_DATABASE_MAX_CONNS" \
|
|
|
|
@@ -211,6 +215,7 @@ record_capacity_config() {
|
|
|
|
|
--arg autoscaling "$AI_GATEWAY_WORKER_AUTOSCALING_ENABLED" \
|
|
|
|
|
--arg instanceLimit "$AI_GATEWAY_ASYNC_WORKER_INSTANCE_HARD_LIMIT" \
|
|
|
|
|
--arg globalLimit "$AI_GATEWAY_ASYNC_WORKER_GLOBAL_HARD_LIMIT" \
|
|
|
|
|
--arg admissionMicrobatch "$AI_GATEWAY_ASYNC_ADMISSION_MICROBATCH_SIZE" \
|
|
|
|
|
--arg workerPool "$AI_GATEWAY_DATABASE_MAX_CONNS" \
|
|
|
|
|
--arg materialization "$AI_GATEWAY_MEDIA_MATERIALIZATION_CONCURRENCY" \
|
|
|
|
|
--arg mediaRequest "$AI_GATEWAY_MEDIA_REQUEST_CONCURRENCY" \
|
|
|
|
@@ -233,6 +238,7 @@ record_capacity_config() {
|
|
|
|
|
AI_GATEWAY_ASYNC_WORKER_INSTANCE_HARD_LIMIT:$instanceLimit,
|
|
|
|
|
AI_GATEWAY_ASYNC_WORKER_HARD_LIMIT:$globalLimit,
|
|
|
|
|
AI_GATEWAY_ASYNC_WORKER_GLOBAL_HARD_LIMIT:$globalLimit,
|
|
|
|
|
AI_GATEWAY_ASYNC_ADMISSION_MICROBATCH_SIZE:$admissionMicrobatch,
|
|
|
|
|
AI_GATEWAY_WORKER_DATABASE_MAX_CONNS:$workerPool,
|
|
|
|
|
AI_GATEWAY_MEDIA_MATERIALIZATION_CONCURRENCY:$materialization,
|
|
|
|
|
AI_GATEWAY_MEDIA_REQUEST_CONCURRENCY:$mediaRequest,
|
|
|
|
@@ -396,6 +402,7 @@ rollout_worker_site() {
|
|
|
|
|
"AI_GATEWAY_ASYNC_WORKER_INSTANCE_HARD_LIMIT=$AI_GATEWAY_ASYNC_WORKER_INSTANCE_HARD_LIMIT" \
|
|
|
|
|
"AI_GATEWAY_ASYNC_WORKER_HARD_LIMIT=$AI_GATEWAY_ASYNC_WORKER_HARD_LIMIT" \
|
|
|
|
|
"AI_GATEWAY_ASYNC_WORKER_GLOBAL_HARD_LIMIT=$AI_GATEWAY_ASYNC_WORKER_GLOBAL_HARD_LIMIT" \
|
|
|
|
|
"AI_GATEWAY_ASYNC_ADMISSION_MICROBATCH_SIZE=$AI_GATEWAY_ASYNC_ADMISSION_MICROBATCH_SIZE" \
|
|
|
|
|
"AI_GATEWAY_DATABASE_MAX_CONNS=$AI_GATEWAY_DATABASE_MAX_CONNS" \
|
|
|
|
|
"AI_GATEWAY_DATABASE_CRITICAL_MAX_CONNS=$AI_GATEWAY_DATABASE_CRITICAL_MAX_CONNS" \
|
|
|
|
|
"AI_GATEWAY_DATABASE_RIVER_MAX_CONNS=$AI_GATEWAY_DATABASE_RIVER_MAX_CONNS" \
|
|
|
|
@@ -617,7 +624,7 @@ apply_capacity_config() {
|
|
|
|
|
verify_site ningbo
|
|
|
|
|
wait_for_url 'public readiness' "$PUBLIC_BASE_URL/api/v1/readyz" '"ok":true'
|
|
|
|
|
record_capacity_config
|
|
|
|
|
echo "production_capacity=PASS config_hash=$(capacity_config_hash) ningbo_replicas=$AI_GATEWAY_WORKER_REPLICAS_NINGBO hongkong_replicas=$AI_GATEWAY_WORKER_REPLICAS_HONGKONG instance_limit=$AI_GATEWAY_ASYNC_WORKER_INSTANCE_HARD_LIMIT global_limit=$AI_GATEWAY_ASYNC_WORKER_GLOBAL_HARD_LIMIT worker_database_pool=$AI_GATEWAY_DATABASE_MAX_CONNS api_database_pool=$AI_GATEWAY_API_DATABASE_MAX_CONNS database_min_idle=$AI_GATEWAY_DATABASE_MIN_IDLE_CONNS database_max_idle_seconds=$AI_GATEWAY_DATABASE_MAX_CONN_IDLE_SECONDS media_concurrency=$AI_GATEWAY_MEDIA_MATERIALIZATION_CONCURRENCY worker_memory_request_mib=$AI_GATEWAY_WORKER_MEMORY_REQUEST_MIB worker_cpu_request_millicores=$AI_GATEWAY_WORKER_CPU_REQUEST_MILLICORES autoscaling=$AI_GATEWAY_WORKER_AUTOSCALING_ENABLED"
|
|
|
|
|
echo "production_capacity=PASS config_hash=$(capacity_config_hash) ningbo_replicas=$AI_GATEWAY_WORKER_REPLICAS_NINGBO hongkong_replicas=$AI_GATEWAY_WORKER_REPLICAS_HONGKONG instance_limit=$AI_GATEWAY_ASYNC_WORKER_INSTANCE_HARD_LIMIT global_limit=$AI_GATEWAY_ASYNC_WORKER_GLOBAL_HARD_LIMIT admission_microbatch=$AI_GATEWAY_ASYNC_ADMISSION_MICROBATCH_SIZE worker_database_pool=$AI_GATEWAY_DATABASE_MAX_CONNS api_database_pool=$AI_GATEWAY_API_DATABASE_MAX_CONNS database_min_idle=$AI_GATEWAY_DATABASE_MIN_IDLE_CONNS database_max_idle_seconds=$AI_GATEWAY_DATABASE_MAX_CONN_IDLE_SECONDS media_concurrency=$AI_GATEWAY_MEDIA_MATERIALIZATION_CONCURRENCY worker_memory_request_mib=$AI_GATEWAY_WORKER_MEMORY_REQUEST_MIB worker_cpu_request_millicores=$AI_GATEWAY_WORKER_CPU_REQUEST_MILLICORES autoscaling=$AI_GATEWAY_WORKER_AUTOSCALING_ENABLED"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rollout_site() {
|
|
|
|
|