Performance & Latency Errors
GC pauses, thread pool starvation and event loop blocking.
Understanding Performance errors
Performance failures rarely produce an error message. They produce timeouts elsewhere. The three classic causes are stop-the-world garbage collection, thread pool starvation (all workers blocked on I/O so new requests queue), and event loop blocking in single-threaded runtimes. All three look identical from outside: latency climbs, then upstream timeouts fire. Distinguishing them requires looking inside the process.
How to debug Performance errors
- Measure the p99, not the mean. Averages hide exactly the pauses that cause timeouts.
- For the JVM, enable GC logging (
-Xlog:gc*) and correlate pause durations with latency spikes before tuning anything. - For thread pools, log active versus queued task counts. A queue that grows while CPU is idle is starvation, and the fix is asynchronous I/O, not more threads.
- In Node.js, measure event loop lag directly (
perf_hooks.monitorEventLoopDelay). Any synchronous work over a few milliseconds per request will show up here. - Profile before optimising.
pprof,async-profiler,py-spyand Chrome's profiler all point at the real hot path, which is rarely where intuition suggests.
Tools worth reaching for
async-profilergo tool pprofpy-spyperf_hooks.monitorEventLoopDelay-Xlog:gc*
All 19 Performance errors
- Connections hang or reset with ListenOverflows increasing NewThe kernel finished the handshake but the application was too slow to call accept(), so the completed connection queue…
- Container CPU throttling: nr_throttled rising in cpu.stat NewA CPU limit is enforced as a quota per 100ms period, so a process that spends its quota early is stopped until the…
- CPU0: Core temperature above threshold, cpu clock throttled NewThe CPU hit its thermal limit and the hardware cut its clock speed to cool down. Everything still works, just slower…
- First requests after a deploy are slow, then it settles NewA freshly started process serves unoptimised code until the JIT has enough samples, with empty connection pools, empty…
- Go: high tail latency in a container, GOMAXPROCS above the CPU limit NewBefore Go 1.25, GOMAXPROCS defaulted to the number of CPUs on the node and ignored the container's CPU limit. A pod…
- High iowait: load average climbing while the CPU sits idle NewLinux counts tasks in uninterruptible sleep towards the load average, so processes blocked on a disk or an NFS mount…
- INFO: task kworker blocked for more than 120 seconds NewThe hung task detector found a process stuck in uninterruptible sleep (D state) for two minutes, almost always waiting…
- java.lang.OutOfMemoryError: GC overhead limit exceeded NewThe JVM spent over 98 percent of recent time collecting and recovered less than 2 percent of the heap, so it stopped…
- JVM: pause with no GC in the log (long time to safepoint) NewA safepoint stops every application thread, and the pause includes however long the slowest thread takes to reach one…
- Latency spikes with khugepaged and compaction in the profile NewTransparent huge pages let the kernel back a mapping with 2MB pages, but once memory is fragmented the faulting thread…
- Long GC pause / stop-the-world latency spikeA managed runtime paused application threads to collect garbage long enough to violate latency targets. Large heaps…
- Machine crawls with CPU idle: swap thrashing (si/so in vmstat) NewOnce the working set no longer fits in RAM the kernel evicts pages that are about to be needed again, so every fault…
- nf_conntrack: table full, dropping packet NewThe kernel tracks every connection passing through netfilter, and that table has a fixed size. Once it fills, new…
- Node.js: event loop lag / blocked synchronouslyCPU-bound work or sync I/O blocked Node's single event loop thread, delaying unrelated requests and timers.
- Node.js: high latency from synchronous crypto or JSON on the event loop NewNode runs JavaScript on a single thread. A synchronous bcrypt hash, a large JSON.parse, or a synchronous file read…
- perf: Access to performance monitoring and observability operations is limited NewThe kernel's perf_event_paranoid setting stops unprivileged users profiling, and most distributions ship it at 2…
- Requests take a multiple of 40ms more than the work needs NewNagle's algorithm holds a small write until the previous segment is acknowledged, and the peer's delayed ACK holds…
- Thread pool starvation / requests queueing behind blocked threadsAll threads in a bounded pool are blocked on I/O, locks, or sync-over-async calls. Latency rises while CPU can remain…
- watchdog: BUG: soft lockup - CPU#3 stuck for 22s! NewA CPU spent over twice the watchdog threshold in kernel code without letting the scheduler run. On physical hardware…
Other categories
- AI 35Rate limits, context windows, GPU memory and model-serving failures.
- Ansible 18Unreachable hosts, become passwords, undefined variables and Jinja2 failures.
- API 20Auth headers, payload limits, versioning, idempotency and webhook signatures.
- Apple 20Command line tools, dyld, Homebrew permissions, notarisation and Keychain.
- Auth 20OIDC, SAML, Auth0, Okta, Keycloak, passkeys and MFA failures.
- BigData 17Spark, Kafka, Airflow, Snowflake, Flink and Databricks failures.
- C# 18NuGet restore, null references, EF Core migrations, async deadlocks and Blazor…
- C++ 20Segfaults, linker errors, memory corruption and template deduction failures.
- Caching 20Cache stampedes, stale content, Varnish and CloudFront failures.
- CI/CD 18GitHub Actions, GitLab CI, Jenkins, CircleCI: permissions, runners and…
- Client 21CORS, mixed content, module resolution, memory limits and framework runtime…
- Cloud 25IAM permissions, quotas, service limits and credential failures.
- Dart 20Null safety, pub version solving and build toolchain problems.
- Database 41Connections, deadlocks, constraints, replication and memory limits.
- DNS 20NXDOMAIN, SERVFAIL, timeouts, propagation and delegation problems.
- Docker 27Daemon connectivity, disk space, image pulls, ports and architecture mismatches.
- Elixir 18GenServer timeouts, supervision failures and Mix compilation problems.
- Email 20Delivery failures, relay denial, authentication, SPF, DKIM and DMARC.
- Frontend 23Hydration mismatches, bundler resolution, layout shift and font loading.
- Git 20Merge conflicts, rejected pushes, detached HEAD, LFS and repository corruption.
- Go 19Nil map assignment, concurrent map access, context cancellation and deadlocks.
- GraphQL 19Validation, depth limits, N+1 queries and fragment problems.
- gRPC 17Status codes, deadlines, message limits, TLS and HTTP/2 transport failures.
- HTTP 494xx client errors, 5xx server errors, redirects, headers and protocol problems.
- ICMP 23Destination unreachable, time exceeded, fragmentation needed and redirects.
- Ingress 20404 default backend, missing TLS secrets, IngressClass and path matching.
- Java 19Class loading, dependency resolution, connection pools and JVM version…
- JavaScript 42npm resolution, async pitfalls, hydration, memory limits and runtime type…
- Kubernetes 34CrashLoopBackOff, ImagePullBackOff, OOMKilled, RBAC, scheduling and storage.
- Logging 18Log4j, Logback, Fluentd, Logstash and CloudWatch ingestion problems.
- MessageQueue 20Kafka, RabbitMQ, SQS, NATS and Celery: lag, rebalancing and poison messages.
- Mobile 20Gradle, CocoaPods, Xcode signing, Metro bundler and toolchain mismatches.
- Monitoring 18Prometheus scrapes, Grafana data sources, OpenTelemetry exporters and agent…
- Network 35Refused connections, timeouts, resets, MTU problems and port exhaustion.
- PHP 20Memory limits, execution timeouts, autoloading, Composer and PDO connections.
- Proxy 20nginx, Envoy, HAProxy, Traefik, Caddy and Cloudflare upstream failures.
- Python 35Imports, virtual environments, encoding, concurrency and dependency conflicts.
- Regex 17Catastrophic backtracking, back references, escaping and engine differences.
- Ruby 20Bundler, migrations, native extensions, encoding and asset compilation.
- Rust 19Borrow checker, ownership moves, trait bounds and lifetime mismatches.
- Scala 17Dependency resolution, binary compatibility and type inference failures.
- Security 25JWT validation, CSRF, OAuth grants, SELinux, SSH host keys and CSP.
- Serverless 20Lambda timeouts, package size limits, VPC networking and cold starts.
- Shell 19Command not found, permissions, quoting, expansion and Makefile syntax.
- Storage 19S3 permissions, NFS mounts, quotas, signed URLs and volume attachment.
- Svelte 20Store subscriptions, load functions and server/client boundaries.
- System 26Disk space, systemd units, file descriptors, OOM killer and scheduled jobs.
- Terraform 18State locks, provider auth, drift, dependency cycles and plan-time unknowns.
- Testing 18Jest, pytest, JUnit, Cypress and Playwright: fixtures, snapshots and timeouts.
- TLS 24Untrusted authorities, expiry, hostname mismatch, chains and cipher negotiation.
- TypeScript 19Assignability, missing declarations, strict null checks and generic constraints.
- Virtualization 20VirtualBox, VMware, Hyper-V, WSL, KVM and hypervisor conflicts.
- Web3 17Gas estimation, nonce management and reverted transactions.
- WebAssembly 17Compile errors, memory bounds and host binding mismatches.
- WebServer 20nginx, Apache, IIS and Caddy: binding, permissions, rewrites and TLS.
- Windows 20Installer failures, missing runtimes, update errors and permission problems.