Skip to main content

Health Checks

Health checks let the Kubernetes cluster automatically monitor and restart unhealthy containers. QuickStack maps them to three native Kubernetes probes:

ProbePurpose
StartupWaits up to 5 minutes for initial app startup
ReadinessGates traffic: only routes requests to ready pods
LivenessRestarts the container if it stops responding

Health check types

HTTP Health Checks

Sends a GET request to a specified path. The app is healthy if the response is 2xx–3xx.

Use when: your app exposes an HTTP/HTTPS endpoint (e.g. /health, /healthz, /api/status).

TCP Health Checks

Attempts a TCP connection to a specified port. Success = healthy.

Use when: your app uses a non-HTTP protocol (databases, message queues, gRPC).

Configuring health checks

  1. Open your app and go to the Advanced tab.
  2. Scroll to Health Check Settings.
  3. Toggle Enable Health Check.
  4. Select HTTP Probe or TCP Probe.
Health Check Settings

HTTP parameters

ParameterDescriptionDefault
HTTP PathEndpoint to check (e.g. /health)
HTTP PortPort the app listens on
HTTP SchemeHTTP or HTTPS (independent of domain TLS)HTTP
HTTP HeadersOptional custom headers (e.g. for auth)
Interval (Period)Seconds between checks15
TimeoutMax seconds to wait for response5
Failure ThresholdConsecutive failures before marking unhealthy3

TCP parameters

ParameterDescriptionDefault
TCP PortPort to probe (e.g. 5432 PostgreSQL, 3306 MySQL, 6379 Redis)
Interval (Period)Seconds between checks15
TimeoutMax seconds to wait5
Failure ThresholdConsecutive failures before marking unhealthy3
Redeployment required

Health check changes only take effect after redeployment.

ScenarioTypeNotes
Web app / REST APIHTTPUse a dedicated /health endpoint
PostgreSQL / MySQLTCPPort 5432 / 3306
Redis / RabbitMQTCPPort 6379 / 5672
gRPC serviceTCPProbe the gRPC port

Timing guidelines

  • Production interval: 15–30 seconds
  • Development: 5–10 seconds for faster feedback
  • Timeout: 3–5 seconds (must be less than interval)
  • Failure threshold: 3–5 (balances false positives vs. recovery speed)

Example: 15s interval × 3 failures = 45 seconds to mark unhealthy.

Troubleshooting

App keeps restarting:

  • Check if interval/timeout are too aggressive.
  • Verify health endpoint returns 2xx/3xx.
  • Increase failure threshold to tolerate transient failures.

Health checks never succeed:

  • Verify the HTTP path or TCP port matches what the app actually listens on.
  • Check if the app needs more startup time (increase startup probe tolerance).
  • Confirm the endpoint is accessible without authentication, or add the required header.

App marked "Not Ready" on startup:

  • Normal for up to 5 minutes during initialization.
  • Check logs for startup errors.

Debugging:

  1. Open the app's Overview tab and look for probe failure events.
  2. Check logs for connection errors or exceptions during health checks.
  3. Verify port numbers and HTTP paths match your app's configuration.