當我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… 版權宣告:本文為博主原創文章,轉載請附上博文連結!