centos7无法远程和登录,在线用户命令执行报错 fork failed :Cannot allocate memory

背景:
服务器SSH提示(无法连接),VNC操作命令提示 (命令无返回结果),用户登录用户提示(用户登录失败),服务器重启后恢复
fork:cannot allocate memory

分析:

从字面上理解可能的原因:内存不足。

1.首先想到通过free -m检查可用内存的情况,未发现内存问题,排除内存问题

注意:执行该命令时,也会提示can not allocate memory,多执行几次试试。
free -m
在这里插入图片描述
重点关注这几个指标:
Mem的total:总内存大小
Used:已用内存
buff/cache:缓存使用内存
swap的used:为0表示未使用交换分区,该值越小越好,正常情况下应该为0

2.ps-eLf | wc -l查看进程数

结果显示为:

32555

经验判断这个值过大,接近系统进程数的阈值

3.确认系统中支持的最大进程数

sysctl kernel.pid_max

结果显示为:

32768

4.确定问题原因为:进程太多,达到阈值后,操作系统无法为ssh分配进程,导致无法远程
5.查找满的原因

ps -eLf|more

通过观察后,发现一个应用的线程很多,进一步统计该应用使用的线程数

ps -eLf|grep 'appcation keyword'|wc -l

说明:appcation keyword表示进程command中的关键词

显示有32051个线程,判断线程满的原因由它引起。

kill该应用,恢复正常。

网上的解决方法(治标不治本):

修改最大进程数后系统恢复

echo 1000000 > /proc/sys/kernel/pid_max

永久生效

echo "kernel.pid_max=1000000 " >> /etc/sysctl.conf
sysctl -p

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值