Blog

SSH, Linux, and production operations — page 27

Practical runbooks for servers, containers, databases, cloud hosting, incident response, and safe AI-assisted operations.

High I/O wait: find the disk queue behind the slowdown

Correlate device latency and queue depth with the process issuing I/O; CPU graphs alone make this incident look mysterious.

The Tryssh team · July 21, 2026 →

Load balancer says unhealthy while the app looks fine

Validate bind address, path, host header, protocol, status code, timeout, and firewall from the load balancer's perspective.

The Tryssh team · July 21, 2026 →

No space left on device: disk blocks, inodes, and deleted files

During failed writes despite confusing disk reports, the first danger is the outage.

The Tryssh team · July 21, 2026 →

The OOM killer terminated your app: what to inspect next

Identify the killed cgroup, memory growth, limits, and swap behavior before merely restarting with more RAM.

The Tryssh team · July 21, 2026 →

Address already in use: find the owner without killing the wrong service

Identify process ownership and supervisor state; random kill -9 commands often create duplicate restart loops.

The Tryssh team · July 21, 2026 →

Postgres lock incident: find the blocker, not just the blocked

Trace the blocking transaction and its owner; terminating every waiting query treats victims as the cause.

The Tryssh team · July 21, 2026 →

Redis latency incident: slow commands, forks, and network stalls

Distinguish command complexity, blocked clients, persistence forks, swapping, and network latency before flushing anything.

The Tryssh team · July 21, 2026 →

Locked out of SSH: recovery paths before desperation

Use the provider console to distinguish firewall, daemon, disk, user, and key failures; restore a narrow safe path before hardening again.

The Tryssh team · July 21, 2026 →

Build an incident timeline from logs, metrics, traces, and changes

The search intent behind this problem is converting conflicting signals into an ordered explanation.

The Tryssh team · July 21, 2026 →

Expired TLS certificate incident: restore trust without creating a second outage

Confirm which terminator serves the certificate, renew there, reload safely, and validate the full chain from outside.

The Tryssh team · July 21, 2026 →

Website down: the first 15 minutes of production triage

Prove DNS, TLS, routing, proxy, application, and database layers in that order before changing anything.

The Tryssh team · July 21, 2026 →

IPv6 works but IPv4 fails—or the reverse

The search intent behind this problem is testing address families as separate production paths.

The Tryssh team · July 21, 2026 →

journalctl for incidents: filters that cut through the noise

Start with unit, boot, severity, and time boundaries; export the relevant window before rotation removes it.

The Tryssh team · July 21, 2026 →

Kubernetes ConfigMap changed but the pod did not: why

The search intent behind this problem is understanding environment, volume, and application reload behavior.

The Tryssh team · July 21, 2026 →

Kubernetes CrashLoopBackOff: debug the exit before changing the manifest

When finding why a container repeatedly starts and exits, speed comes from ordering the investigation—not from typing more commands.

The Tryssh team · July 21, 2026 →

Kubernetes DNS debugging without restarting CoreDNS first

The search intent behind this problem is isolating pod DNS, service discovery, upstream resolution, and policy.

The Tryssh team · July 21, 2026 →

Kubernetes HPA not scaling: metrics, requests, and stabilization

The search intent behind this problem is diagnosing an autoscaler that ignores visible load.

The Tryssh team · July 21, 2026 →

ImagePullBackOff: fix registry, tag, and credential failures safely

The search intent behind this problem is diagnosing why a Kubernetes node cannot retrieve an image.

The Tryssh team · July 21, 2026 →

Kubernetes Ingress 502 errors: trace ingress to pod

The search intent behind this problem is finding where an ingress-to-service-to-pod request fails.

The Tryssh team · July 21, 2026 →

Kubernetes Job keeps failing: retries, exit codes, and idempotency

The search intent behind this problem is debugging batch work without duplicating side effects.

The Tryssh team · July 21, 2026 →

kubectl logs --previous: the command that explains vanished crashes

The search intent behind this problem is retrieving evidence from the last terminated container.

The Tryssh team · July 21, 2026 →

Kubernetes NetworkPolicy debugging: prove which flow is denied

The search intent behind this problem is isolating ingress, egress, namespace selectors, and DNS.

The Tryssh team · July 21, 2026 →

Kubernetes Node NotReady: kubelet, runtime, network, or pressure?

The search intent behind this problem is determining why the control plane stopped trusting a worker.

The Tryssh team · July 21, 2026 →

Kubernetes OOMKilled: limit breach or node memory pressure?

The search intent behind this problem is distinguishing a container memory-limit kill from host-wide pressure.

The Tryssh team · July 21, 2026 →