environment: systematically determine queue quantity with system limits - dynamically determine queue numbers per region based on region max container instances. Change-Id: Ib02c9486a074c03605d71366a1e3223720718e3c Reviewed-on: https://go-review.googlesource.com/c/pkgsite-metrics/+/709476 Auto-Submit: Ethan Lee <ethanalee@google.com> Reviewed-by: Markus Kusano <kusano@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
diff --git a/terraform/environment/worker.tf b/terraform/environment/worker.tf index ed373dd..bf4878c 100644 --- a/terraform/environment/worker.tf +++ b/terraform/environment/worker.tf
@@ -43,13 +43,19 @@ } locals { + max_dispatches_per_queue = 500 # Defined by https://cloud.google.com/tasks/docs/quotas?hl=en#limits + max_instances = { + # These values indicate the max number of container instances per region. + "us-central1" = 5000 + "us-east1" = 2240 + } worker_url = data.google_cloud_run_service.worker[tolist(var.regions)[0]].status[0].url tz = "America/New_York" worker_service_account = "worker@${var.project}.iam.gserviceaccount.com" pkgsite_db = "${var.pkgsite_db_project}:${tolist(var.regions)[0]}:${var.pkgsite_db_name}" task_queues = flatten([ for region in var.regions : [ - for i in range(14) : { + for i in range(ceil(local.max_instances[region] / local.max_dispatches_per_queue)) : { name = format("%s-%s-%05s", var.env, region, i) region = region url = data.google_cloud_run_service.worker[region].status[0].url @@ -184,7 +190,7 @@ metadata { annotations = { "autoscaling.knative.dev/minScale" = "10" - "autoscaling.knative.dev/maxScale" = each.value == "us-central1" ? "5000" : "2240" + "autoscaling.knative.dev/maxScale" = local.max_instances[each.value] "run.googleapis.com/cloudsql-instances" = local.pkgsite_db "run.googleapis.com/execution-environment" = "gen2" }