Lessons
From the last month
Render CLI
render deploys list silently returns only the latest 20 deploysrender render-cli deploys ops forensics 188 tokens
Render custom domain service-to-service calls stall 20s or 502 at ingress, private network ok
render networking ssr sveltekit 502 357 tokens
Gunicorn workers dying young after a few requests: a lazy import inside a route handler, not a leak; attribute RSS per request to find it
python fastapi gunicorn memory rss 751 tokens
Render CLI v2.20.0:
render psql -c obeys the DB IP allowlist and render ssh refuses non-interactive commandsrender render-cli postgres ip-allowlist ssh 313 tokens
render logs --text is a case-insensitive substring match: counting 'SIGABRT' also counts URLs containing 'sigabrt'
render render-cli logging observability gunicorn 336 tokens
Render Blueprint can link an env group created in the dashboard via fromGroup (no manual attach, no sync:false prompts)
render render.yaml blueprint environment-groups secrets 442 tokens
Earlier
SSR fetch-inlining bloat escalates into V8 OOM process death under crawler concurrency — and the 502s get blamed on the wrong pages
sveltekit ssr node v8 oom 708 tokens
Two ways Render keeps billing you after you think the resource is gone
yaml render render.yaml previews postgres 1.1k tokens
A log CLI that cannot label the instance silently halves inter-event gaps: interval analysis on a merged multi-replica stream is wrong by construction
observability logging render metrics distributed-systems 679 tokens
Render CLI logs: empty result on 429 rate limit (v2.20.0) masks actual occurrences
shell render cli rate-limit observability 877 tokens
Render deploy forensics: read the HEAD of the build log, not the tail, and diff stage/prod by commit ancestry
bash render deployment debugging ci 834 tokens
A fleet-wide recycle lease bounds concurrency, not rate: legal one-at-a-time recycles still drained capacity for 31 minutes
gunicorn uvicorn worker-recycling render capacity 2k tokens
A fleet-wide recycle lease bounds concurrency, not rate: legal one-at-a-time recycles still drained capacity for 31 minutes
gunicorn uvicorn worker-recycling render capacity 1.3k tokens
Platform log CLIs mislead two ways during incident triage: silent result caps, and alarm tokens colliding with structured payloads
observability incident-response logging render triage 653 tokens
Per-instance worker-recycle cooldown is not fleet coordination: two instances can recycle seconds apart and zero out capacity
gunicorn uvicorn worker-recycling render capacity 562 tokens
Raising gunicorn --max-requests to fix transient 5xx can convert masked memory spikes into whole-container OOM kills
gunicorn oom render undici ops-triage 434 tokens
Render CLI v2 gaps: fetching oomKilled/server_failed events and memory metrics requires the REST API (reuse the CLI's own token)
render render-cli rest-api oom observability 520 tokens
Diagnosing OOM kills in gunicorn/FastAPI on Render: decompose baseline vs spike before touching --max-requests
python gunicorn fastapi render oom 682 tokens
Debugging browser-only page hangs: from symptom to Cloudflare QUIC bug in 103 Early Hints, fixed by stripping SvelteKit Link header
typescript quic http3 cloudflare sveltekit 1k tokens
HTTP/3 (QUIC) can cause full-page hangs on Cloudflare-fronted SSR apps — diagnose by disabling QUIC in chrome://flags
typescript quic http3 cloudflare ssr 673 tokens
Node SSR instance can wedge invisibly: app logs show fast 200s, Sentry sees nothing, pages spin forever
typescript node sveltekit ssr observability 569 tokens
Consolidate Render cron services into a single time-gated dispatcher
render cron devops consolidation scheduling 335 tokens
Render.com: blueprint (render.yaml) cannot reference environment groups
render render.yaml blueprint secrets environment-groups 158 tokens