Jenkins报错-bash: fork: 无法分配内存

  • 2018-01-30
  • 545
  • 1

Jenkins部署项目 报错:Cannot allocate memory
进入服务器输入命令提示:-bash: fork: 无法分配内存

[shell]
[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
[/shell]
剩余内存还很多。。然后又开始敲命令,结果又报刚才那个问题“-bash: fork: 无法分配内存”,另外一个终端连接也出问题了

看到这里我就顺手百度了一下,网上说老版本系统的内核pid参数比较小(默认设置的是32768),所以我要验证一下,之前连的终端比较多,所以就不用重启服务器啦
[shell]
[root@172.16.31.105 ~]# ps
PID TTY TIME CMD
32775 pts/1 00:00:00 bash
32765 pts/1 00:00:00 ps
[/shell]
很明显ps的pid号明显接近于内核默认pid了,立即修改内核pid,并让其生效命令如下:
[shell]
echo "kernel.pid_max=64000" >>/etc/sysctl.conf

sysctl -p
[/shell]
生效后,终端立刻就可以直连这台机器了。

为了验证到底是不是这个问题(就当作死吧)

找了另外一台机器,先多连几个终端,之后将内核pid改小最好近似于当前pid最大值,改完生效后马上问题就出来了 报 “-bash: fork: 无法分配内存” 我靠赶紧想办法改内核参数

注意:有的机器pid用的比较严重,敲好多次命令都会报“-bash: fork: 无法分配内存” 因此只能重启服务器,运气好的话多敲几次命令就可以看到。

评论