Troubleshooting guide
Disk full or server out of memory? Find the cause, step by step
No space left, a read-only disk, killed processes, or a limit reached.
What do you see?
What does df say?
df -h
df -iLikely cause
The kernel switched the filesystem to read-only
Usually to protect it, after a disk or filesystem error. The kernel log says why; repair it unmounted, and check whether the disk is failing.
Check it
sudo journalctl -k | grep -iE "remount|error" | tailRead the fix: "Read-only file system" on Linux: why the disk went read-only, and how to fix it safelyNot this?Start over
Where did it run out?
Likely cause
A process reached its file descriptor limit
Each open file and network connection uses one. Check the limit of the process itself (not of your shell), then whether it's too low or the program leaks them.
Check it
cat /proc/$(pidof -s nginx)/limits | grep "open files"Read the fix: "Too many open files" on Linux: raise the right limit, or find the leakNot this?Start over
Which service?
Likely cause
The filesystem is full
Find which directories grew (logs, Docker images, caches, old kernels in /boot), then free space safely, without deleting files programs still have open.
Check it
sudo du -xh --max-depth=1 / 2>/dev/null | sort -h | tail -n 15Read the fix: No space left on device: find what is filling your Linux diskNot this?Start over
Likely cause
Out of inodes, or another limit
A filesystem can run out of inodes (one per file) while it still has space, usually from millions of tiny files: sessions, caches, mail queues. A quota or a read-only mount can also refuse writes.
Check it
df -iRead the fix: No space left on device: find what is filling your Linux diskNot this?Start over
Likely cause
A running program still holds the deleted file
The space comes back only when the last program closes the file. A log deleted under a running service is the classic case: restart the service, or empty the file instead of deleting it.
Check it
sudo lsof +L1 | sort -k7 -n | tailRead the fix: No space left on device: find what is filling your Linux diskNot this?Start over
Likely cause
The kernel's OOM killer stopped it
The machine (or the service's cgroup) ran out of memory, and the kernel killed the biggest process to save itself. The kernel log names it.
Check it
sudo journalctl -k | grep -iE "out of memory|oom-kill"Read the fix: Linux process "Killed" with no error: find the OOM killer and stop it happening againNot this?Start over
Likely cause
The container went over its memory limit, or was killed on stop
137 is SIGKILL. Docker records OOMKilled=true when the container hit its memory limit.
Check it
docker inspect -f "{{.State.ExitCode}} OOMKilled={{.State.OOMKilled}}" apiRead the fix: Docker "exited with code 137": OOM kill or a stop that took too longNot this?Start over
Likely cause
Redis is at its memory limit
used_memory reached maxmemory, and the eviction policy doesn't allow removing keys.
Check it
redis-cli INFO memory | grep -E "used_memory_human|maxmemory_human|maxmemory_policy"Read the fix: Redis "OOM command not allowed when used memory > maxmemory": choose what to do when fullNot this?Start over
Likely cause
Elasticsearch blocked writes to protect the disk
Over the flood-stage watermark (95% by default), it makes indices read-only. Free space first; recent versions lift the block by themselves once the disk is below the limit.
Check it
curl -s localhost:9200/_cat/allocation?vRead the fix: Elasticsearch "flood-stage watermark" and read-only indices: free the disk, then check the blockNot this?Start over
Likely cause
Redis can't save to disk, so it stops writes
The last background save failed: a full disk, a folder Redis can't write, or not enough memory to fork.
Read the fix: Redis "MISCONF Redis is configured to save RDB snapshots": why writes stoppedNot this?Start over
Likely cause
The node evicted pods to save itself
The node ran low on disk (or memory) and removed pods. Clean up the node's disk, and set requests and limits so it doesn't happen again.
Check it
kubectl describe node <node> | grep -A6 ConditionsRead the fix: Kubernetes pods "Evicted": find the pressure on the node, and stop it from coming backNot this?Start over
Have an exact error message? Paste it into search instead.
Every cause this guide covers
The same answers, all on one page, if you would rather scan them.
- The kernel switched the filesystem to read-only"Read-only file system" on Linux: why the disk went read-only, and how to fix it safely
- A process reached its file descriptor limit"Too many open files" on Linux: raise the right limit, or find the leak
- The filesystem is fullNo space left on device: find what is filling your Linux disk
- Out of inodes, or another limitNo space left on device: find what is filling your Linux disk
- A running program still holds the deleted fileNo space left on device: find what is filling your Linux disk
- The kernel's OOM killer stopped itLinux process "Killed" with no error: find the OOM killer and stop it happening again
- The container went over its memory limit, or was killed on stopDocker "exited with code 137": OOM kill or a stop that took too long
- Redis is at its memory limitRedis "OOM command not allowed when used memory > maxmemory": choose what to do when full
- Elasticsearch blocked writes to protect the diskElasticsearch "flood-stage watermark" and read-only indices: free the disk, then check the block
- Redis can't save to disk, so it stops writesRedis "MISCONF Redis is configured to save RDB snapshots": why writes stopped
- The node evicted pods to save itselfKubernetes pods "Evicted": find the pressure on the node, and stop it from coming back