Back to feed
Dev.to
Dev.to
6/24/2026
The Node.js bug that's invisible to your monitoring

The Node.js bug that's invisible to your monitoring

Short summary

Node.js uses a hidden libuv thread pool (default 4 threads) for CPU-heavy and blocking I/O operations like bcrypt hashing, gzip compression, and DNS lookups. When this pool becomes congested—like during concurrent login spikes or large compression jobs—requests queue invisibly with no signal in CPU, event-loop lag, or standard APM metrics. The result: rising p99 latencies while all monitoring says everything is fine, because the bottleneck lives outside the JavaScript event loop.

  • libuv thread pool (4 threads by default) is invisible to standard Node.js monitoring
  • CPU-bound ops (bcrypt, gzip, DNS) and blocking I/O compete for pool slots and can stall unrelated requests
  • Pool congestion produces latency spikes with no CPU or event-loop lag signals—a monitoring blind spot

Generated with AI, which can make mistakes.

Is this a good recommendation for you?

Explore more