當linux報 “-bash: fork: 無法分配記憶體”

llla發表於2018-10-20

當我ps檢視的時候發現不能執行命令並返回“-bash: fork: 無法分配記憶體”,特麼非要哥重起伺服器嗎,忽然發現我連了好多終端,然後斷開了一個終端,然後這邊終端可以敲命令了

[root@172.16.31.105 /home/www/test]# free -m              total       used       free     shared    buffers     cached Mem:         15979       8025       7954          0        218       1109 -/+ buffers/cache:       6697       9282 Swap:            0          0          0

臥槽,還有那麼多記憶體。。。很無語,然後又開始敲命令,結果又報剛才那個問題“-bash: fork: 無法分配記憶體”,另外一個終端連線也出問題了

[root@172.16.31.102 ~]# ssh 172.16.31.105 shell request failed on channel 0

看到這裡我就順手百度了一下,網上說老版本系統的核心pid引數比較小(預設設定的是32768),所以我要驗證一下,之前連的終端比較多,所以就不用重啟伺服器啦,當然我也是走了狗屎運,然後我又斷開一個終端,這邊ps了一下

[root@172.16.31.105 ~]# ps   PID TTY          TIME CMD 32775 pts/1    00:00:00 bash 32765 pts/1    00:00:00 ps

很明顯ps的pid號明顯接近於核心預設pid了,立即修改核心pid,並讓其生效命令如下:

echo "kernel.pid_max=64000" >>/etc/sysctl.conf

sysctl -p

生效後,終端立刻就可以直連這臺機器了。

為了驗證到底是不是這個問題(就當作死吧)

找了另外一臺機器,先多連幾個終端,之後將核心pid改小最好近似於當前pid最大值,改完生效後馬上問題就出來了 報 “-bash: fork: 無法分配記憶體”  我靠趕緊想辦法改核心引數

注意:有的機器pid用的比較嚴重,敲好多次命令都會報“-bash: fork: 無法分配記憶體”   因此只能重啟伺服器,運氣好的話多敲幾次命令就可以看到。

作者:cfster 來源:CSDN 原文:blog.csdn.net/cfaster/art… 版權宣告:本文為博主原創文章,轉載請附上博文連結!

相關文章