AlgoMaster Logo

File Descriptor Exhaustion

Medium Priority26 min readUpdated August 14, 2026

Suppose a backend service runs normally for days, then suddenly stops accepting new connections. Existing requests still work for a while, but database connections fail, log rotation breaks, and even opening a configuration file returns:

These failures seem unrelated, but they share one dependency: each operation needs a new file descriptor.

File-descriptor exhaustion happens when the process or system reaches its descriptor limit.

The immediate question is which limit was reached. The deeper question is why descriptors accumulated: high but expected concurrency, a limit that is too low, or a resource leak where descriptors were never closed.

This chapter distinguishes process and system-wide exhaustion, verifies live limits and descriptor ownership, measures and classifies growth, traces acquisition and release, and develops a response that preserves evidence while separating capacity from lifecycle bugs.

Premium Content

Subscribe to unlock full access to this content and more premium articles.