diff --git a/deploy/gcp/01-database.sh b/deploy/gcp/01-database.sh index 7f78a7c553..4e779b74d2 100755 --- a/deploy/gcp/01-database.sh +++ b/deploy/gcp/01-database.sh @@ -47,7 +47,9 @@ fi if [[ -n "$DB_PASSWORD" ]]; then # Cloud Run connects over a unix socket at /cloudsql/. - DB_URL="postgresql://${DB_USER}:${DB_PASSWORD}@localhost/${DB_NAME}?host=/cloudsql/${CONNECTION_NAME}" + # connection_limit caps Prisma's per-instance pool so max instances x 4 stays + # under db-g1-small's 50-connection limit. + DB_URL="postgresql://${DB_USER}:${DB_PASSWORD}@localhost/${DB_NAME}?host=/cloudsql/${CONNECTION_NAME}&connection_limit=4" secret_put "$DB_URL_SECRET" "$DB_URL" info "Stored connection string in secret '${DB_URL_SECRET}'." fi diff --git a/deploy/gcp/common.sh b/deploy/gcp/common.sh index 0dcd544b92..874b1ed778 100755 --- a/deploy/gcp/common.sh +++ b/deploy/gcp/common.sh @@ -29,11 +29,11 @@ fi : "${DB_INSTANCE:=keepcontracts-db}" : "${DB_NAME:=keepcontracts}" : "${DB_USER:=keepcontracts}" -: "${DB_TIER:=db-custom-1-3840}" +: "${DB_TIER:=db-g1-small}" : "${SECRET_PREFIX:=$SERVICE}" : "${UPLOAD_TRANSPORT:=database}" : "${RUN_MEMORY:=2Gi}" -: "${RUN_CPU:=2}" +: "${RUN_CPU:=1}" : "${RUN_MIN_INSTANCES:=1}" : "${RUN_MAX_INSTANCES:=10}" : "${RUN_CONCURRENCY:=40}" diff --git a/deploy/gcp/config.example.sh b/deploy/gcp/config.example.sh index 5f63096657..4647a6a97e 100755 --- a/deploy/gcp/config.example.sh +++ b/deploy/gcp/config.example.sh @@ -23,7 +23,7 @@ export SERVICE="keepcontracts" export DB_INSTANCE="keepcontracts-db" export DB_NAME="keepcontracts" export DB_USER="keepcontracts" -export DB_TIER="db-custom-1-3840" +export DB_TIER="db-g1-small" # Secrets are named "-enc-key", etc. Defaults to SERVICE. # export SECRET_PREFIX="keepcontracts" @@ -40,7 +40,7 @@ export WEBAPP_URL="https://keepcontracts.com" # ─── Cloud Run sizing ──────────────────────────────────────────────────────── export RUN_MEMORY="2Gi" -export RUN_CPU="2" +export RUN_CPU="1" # Keep at least 1 warm instance: the default in-process background-jobs provider # ("local") only runs scheduled work while an instance is alive. export RUN_MIN_INSTANCES="1"