I mistakenly used a limited server as an iperf server for 5000 parallel connections. (limit is 1024 processes) Now every time I log in, I see this:
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
Then, I try to kill them, but when I do ps, I get this:
-bash-4.1$ ps
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
Same happens when I do a killall or similar things. I have even tried to reboot the system but again this is what I get after reboot:
-bash-4.1$ sudo reboot
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
-bash-4.1$
So Basically I cannot do anything. all the commands get this error :/ I can, however, do "exit".
This is an off-site server that I do not have physical access to, so I cannot turn it off/on physically.
Any ideas how I can fix this problem? I highly appreciate any help.
Answer. This could be resolved by the system administrator by increasing the number of user processes. The most common way to resolve this is by using the ulimit command, and specifying a larger value than currently present.
Root Cause There can be various reasons for processes not being able to fork: There is a misbehaving service or process running, consuming more resources than expected. The system was not able to create new processes, because of the limits set for nproc in /etc/security/limits.
"Resource temporarily unavailable" is the error message corresponding to EAGAIN , which means that the operation would have blocked but nonblocking operation was requested.
Errno 11 (EAGAIN) means the resource is temporarily unavailable. The call might work if tried again later. The number of processes reached 1024. The number of current processes is around 950. The database continues working.
Given that you can login, you may want to try using exec
to execute all your commands. After executing exec
you will have to log in again, since exec
will kill your shell (by replacing it with the command you run).
exec
won't take up an extra process slot because it will replaces the running shell with the program to run. Thus, it should be able to bypass the ulimit
restriction.
I had the same issue recently. In my case the reason was there was code that was executing under my ownership and consumed almost all the resources leaving nothing for my commands. Here's what I did, "exec top" to identify the PID thats consuming maximum resources "exec kill -9 " killing the PID identified by above command.
After killing the PID, everything came back to normal and I was able to login back.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With