Storage & Runtime
Health Checks
Health checks live on the app Settings tab → jump Health → Health Checks. Enable the probe and set an HTTP path on the app port. New revisions wait on that path before they take traffic.
This is not a top-level Service → Settings → Health Check page. After you change the fields, Commit on the canvas.
Probe types
Readiness probe
HTTP GET to your health check path. Returns 200–299 = pod is ready to receive traffic. Returns anything else or times out = pod is removed from the load balancer endpoints until it recovers. Checked every 10 seconds.
Liveness probe
HTTP GET to your health check path. If the pod fails 3 consecutive liveness checks, Kubernetes kills and restarts the pod. Catches processes that are stuck or deadlocked but haven't crashed. Checked every 15 seconds after startup.
Startup probe
Runs on pod start only. The liveness probe is paused until the startup probe succeeds. Configure a grace period of up to 300 seconds for services with slow initialization (JVM warmup, loading ML models, etc.).
Health endpoint examples
Node.js (Express)
const express = require('express')
const app = express()
// Minimal health check, always returns 200
app.get('/health', (req, res) => {
res.json({ status: 'ok', uptime: process.uptime() })
})
// Advanced: check DB before declaring ready
app.get('/health/ready', async (req, res) => {
try {
await db.query('SELECT 1')
res.json({ status: 'ready', db: 'connected' })
} catch {
res.status(503).json({ status: 'unhealthy', db: 'disconnected' })
}
})Python (FastAPI)
from fastapi import FastAPI, HTTPException
from sqlalchemy import text
app = FastAPI()
@app.get("/health")
async def health_check():
try:
await db.execute(text("SELECT 1"))
return {"status": "ok"}
except Exception as e:
raise HTTPException(status_code=503, detail=str(e))Under the hood
- Settings → Health: enable Health Checks, then set Health Check Path, Startup Seconds, Timeout Seconds, and Interval Seconds. Commit on the canvas.
- HTTP probe on your port: StackBlaze GETs the path on the app port. A 200 means the revision can take traffic. Keep the path fast and unauthenticated.
- Startup Seconds: extra time for slow starts (JVM warmup, loading models). Raise this if deploys hang because the app is not ready yet.
- Rolling deploy gating: a new revision must pass the health path before it takes traffic. If it never becomes ready, the previous revision keeps serving.
Step by step
Add a cheap HTTP path
Serve HTTP 200 on something like /health when the process can take traffic. Keep it fast. Do not hide it behind auth.
Open Settings → Health
On the app, open the Settings tab and jump to Health. Enable Health Checks. The dashboard copy is “HTTP probe on your port.” Set Health Check Path, Startup Seconds, Timeout Seconds, and Interval Seconds.
Commit the app
Commit the change on the canvas. New revisions wait on this path before they take traffic. If deploys hang, the path is wrong or the app never becomes ready.