nginx
resource_error
ai_generated
true
nginx: [alert] socket() failed (24: Too many open files)
ID: nginx/open-too-many-files
92%Fix Rate
90%Confidence
3Evidence
2023-01-01First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 1 | active | — | — | — |
Root Cause
nginx process hit the OS file descriptor limit. Each connection uses at least 2 FDs (client + upstream). Proxy doubles this.
genericWorkarounds
-
92% success Set worker_rlimit_nofile in nginx.conf
worker_rlimit_nofile 65536; # in main context of nginx.conf; sets RLIMIT_NOFILE for worker processes
Sources: https://nginx.org/en/docs/http/ngx_http_core_module.html
-
90% success Increase limits in systemd service unit
In /etc/systemd/system/nginx.service.d/override.conf: [Service] LimitNOFILE=65536; then: systemctl daemon-reload && systemctl restart nginx
-
85% success Set system-wide limits in /etc/security/limits.conf
* soft nofile 65536 * hard nofile 65536 # Also check: sysctl fs.file-max
Dead Ends
Common approaches that don't work:
-
Restart nginx to temporarily fix the issue
85% fail
Restarting reclaims FDs but the limit is hit again under the same load. Must increase the limit.
-
Only set ulimit in the shell before starting nginx
80% fail
Shell ulimit does not persist across service restarts. Must configure in systemd unit or nginx.conf.