Cloud Run min-instances=1 not respected: idle drops to 0, requests get 429 even with no significant traffic

Hi! I’m running a small web service on Cloud Run (europe-north1) and getting intermittent 429 - The request was aborted because there was no available instance errors. The issue persists even after setting min-instances=1.

Looking at the Container instance count metric, I can see the idle instance count drops to 0 periodically throughout the day, even though min-instances=1 is configured. When this coincides with incoming requests, those requests fail with 429.

Service configuration

  • Region: europe-north1

  • CPU: 1 vCPU

  • Memory: 512 MiB

  • Concurrency: 80 (default)

  • Min instances: 1

  • Max instances: 20

  • Timeout: 300s

  • Startup CPU boost: enabled

  • CPU throttling: enabled (default)

  • Execution environment: default

  • Startup probe: TCP on port 8080 (default)

  • Liveness probe: none

  • Custom domain via Cloud Run domain mapping

Observed behavior

Application logs show a pattern of rapid instance churn:

21:58:34  Starting new instance. Reason: MANUAL_OR_CUSTOMER_MIN_INSTANCE
21:58:36  Default STARTUP TCP probe succeeded
21:58:36  Server listening on :8080
21:58:37  [BOOT] SIGTERM received, shutting down
21:58:37  Starting new instance. Reason: MANUAL_OR_CUSTOMER_MIN_INSTANCE
21:58:39  Server listening on :8080
21:58:44  [BOOT] SIGTERM received, shutting down
21:59:20  Starting new instance. Reason: MANUAL_OR_CUSTOMER_MIN_INSTANCE
21:59:21  Server listening on :8080
21:59:25  [BOOT] SIGTERM received, shutting down

Instances live for 1-6 seconds before receiving SIGTERM. Between SIGTERM and the next instance start, there can be a gap of several seconds to a few minutes, during which there are 0 instances available. During these gaps, any incoming requests receive 429.

What I’ve tried out

  • Not a traffic burst: traffic is very low (a handful of requests per hour from known users).

  • Not a deploy storm: no new revisions are being created automatically; last manual deploy was days ago and only one revision is receiving 100% traffic.

  • Not application crashes: there are no application logs between Server listening on :8080 and [BOOT] SIGTERM received. The app is silent and healthy; SIGTERM is sent externally by the platform.

  • Not memory or CPU pressure: utilization is consistently below 20%.

  • Not a liveness probe failure: no liveness probe configured.

  • No custom signal handling issues: SIGTERM handler simply logs and calls server.close() + process.exit(0).

  • Min-instances = 1 doesn’t solve the problem. It get killed by SIGTERM and goes into endless loop

  • It happens only at ~ 7-9 pm European time

Any insight from the Cloud Run team or others who’ve seen this pattern would be appreciated. Happy to share any related logs or metrics if that would help.

Thanks, Vadim

1 Like