Knowledge base
The Opyntel knowledge base: guides to the errors and limits that take services down on app platforms and servers, and how to fix them.
- Exit code 137 and OOM killed: what they mean, and how to get warned firstExit code 137 means a process got SIGKILL, usually from the out-of-memory killer. Confirm it on Docker, Kubernetes and ECS, fix it, and get warned first.
- 5xx errors: what they mean and how to catch them5xx errors mean the server failed a valid request. What 500, 502, 503 and 504 mean on an app platform, how they differ from 4xx, and how to get alerted.
- 502 Bad Gateway: what it means and how to fix itA 502 Bad Gateway means a proxy got no valid answer from the server behind it. What causes it and how to fix it on nginx, Cloudflare, Railway and Render.
- 503 Service Unavailable: what it means and how to fix itA 503 Service Unavailable means the server cannot handle the request right now. Why it happens on app platforms, how long it lasts and how to fix it.
- 504 Gateway Timeout: what it means and how to fix itA 504 Gateway Timeout means a proxy waited too long for the server behind it. What causes it and how to fix it on nginx, Cloudflare, Vercel and app platforms.
- 499 status code: when the client gives up firstA 499 status code means the client closed the connection before the server answered: where it comes from, why your app is usually too slow, and why it counts.
- Why a Docker container keeps restarting, and how to find the causeA container that keeps restarting is exiting and being brought back by its restart policy. Find the exit code, read the logs, fix it, get told when it loops.
- Linux disk full on a VPS: find what filled it, then stop it happening againLinux disk full on a VPS? It is usually Docker images, container logs or the journal. Find what filled it with df and du, free space, and get alerted early.
- Check memory usage on Linux, and what swap usage meansCheck memory usage on Linux with free, top and docker stats, read the available column, see what swap usage means, and get alerted before memory runs out.
- Linux load average: what the three numbers mean and when to worryLinux load average explained: what the 1, 5 and 15 minute numbers mean, how they compare with CPU cores, why load is high while CPU is idle, and what to do.
- SSL certificate expired: why it happened and how to renew itSSL certificate expired? Check the expiry date with openssl, find why auto-renewal failed, renew with Certbot, Traefik or your platform, and get alerted first.
- “Too many open files” on Linux: raise the limit and find the leakFix "Too many open files" on Linux: check the file descriptor limit, raise it for systemd, Docker or your shell, find a descriptor leak, and get alerted early.
- Cron job not running: find out why, and know the next time it failsCron job not running on Linux? Check that cron fired it, then fix the usual causes: PATH, permissions, the wrong crontab, % signs and lost output.
- P50, P90, P95 and P99 latency, explainedP99 latency is the response time 99% of requests beat, and P95 the time 95% beat. What P50 to P99 mean, a worked example, and which to alert on.
Knowledge base guides by platform
- Exit code 137 on Railway: why your service was killed, and how to see it comingRailway exit code 137 means your service ran out of memory. How to confirm it, fix it, and get a memory alert before the crash on any plan.
- Exit code 137 on Coolify: why your container was killed, and how to get warnedWhy Coolify containers exit with code 137, how to confirm an OOM kill on the server, how to set memory limits, and how to get an alert Coolify does not send.
- OOM killed on Fly.io: what “Out of memory: Killed process” means, and how to see it comingA Fly.io out of memory error (“Killed process”) means your Machine ran out of RAM. Fix it with more memory or swap, and get the alert Fly.io does not send.
- Out of memory on Render: what “Ran out of memory” means, and how to see it comingWhen a Render service runs out of memory, Render restarts it. Why the Metrics tab can disagree, how to fix it, and how to get a memory alert before the restart.
- Railway 5xx errors and “Application failed to respond”Railway 5xx errors: why Railway returns a 502 “Application failed to respond”, where to see them, and how to get alerted when a service’s error rate climbs.
- Render 5xx errors and 502 Bad Gateway: find the cause and get alertedRender 5xx errors: why a web service returns 502 or other server errors, where Render shows them, and how to get an alert when the error rate rises.
- Cloudflare 502 Bad Gateway and 52x errorsWhat a Cloudflare 502 Bad Gateway and the 520 to 526 errors mean, where to see Workers errors, and how to get alerted without an Enterprise plan.
- Why a Railway service keeps restarting, and how to hear about it firstA Railway service keeps restarting until its 10 default retries run out and the deployment shows as crashed. Find the cause in the logs and get told first.
- Why a Render service keeps restarting, and how to hear about itA Render service keeps restarting when its instance crashes. The Events feed and exit code tell a boot crash from a memory loop; get told when it repeats.
- Why a Fly.io Machine keeps restarting, and how to hear about itWhen a Fly.io Machine keeps restarting, Fly.io retries up to 10 times in five minutes, then leaves it stopped. Find the exit code in fly machine status, fix it.
- Hetzner server disk full: what the console shows, and what to doHetzner disk full? The console has no fill level, so a full disk surfaces as a failed deploy. Free space, grow the disk or add a Volume, and get alerted early.
- Vercel cron jobs: why one did not run, and how to know next timeVercel cron jobs not running? Check production deployments, UTC schedules, Hobby limits, redirects and CRON_SECRET, read the logs, and get alerted on misses.
- P95 latency alerts on RailwayRailway charts P95 latency, with P50, P90 and P99, for every service, but its monitors can’t alert on it. How to read it and get a P95 alert.
- Latency percentiles on VercelVercel latency percentiles stop at P75, and only with Observability Plus. What each Vercel tier shows, and how to get P50, P95 and P99 with alerts.
- Latency alerts on RenderRender has no latency alerts: it charts P50, P75, P90 and P99 on Pro workspaces. Where to find them, and how to get a P95 alert.
- Latency alerts on KoyebKoyeb has no latency alerts: it charts P50, P90 and P99 response times for up to 7 days. How to read them, and how to get alerted.
- Latency percentiles on Fly.ioFly.io latency percentiles come from a Prometheus histogram, with no built-in alerts. The PromQL for P50, P95 and P99, and how to get alerted.
The alerts your platform doesn’t send.
One dashboard for everything you run, with the alerts your platforms leave out. Read-only, nothing to install in your apps.