Linux -bash: fork retry No child process.Resource temporarily unavailable

文章描述了一台运行CentOS7的服务器上,Java程序遇到OOM错误,同时普通用户切换失败,提示资源不可用。通过排查发现句柄数超出默认限制(1024)。解决方案是增加最大文件打开数和最大进程数,对`/etc/security/limits.conf`和`/etc/security/limits.d/20-nproc.conf`进行配置,将限制值提升至65535。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务器是centos7

故障问题

java的程序报错OOM, java.lang.OutOfMemoryError
尝试切换普通用户报错

-bash: fork: retry: No child processes

故障排查

查看top内存和cpu都正常
查看df -hT硬盘资源正常

切换普通用户
failed to execute /bin/bash: Resource temporarily unavailable(资源暂时不可用)
(Linux系统root无法通过sudo -切换到某个普通用户,但可以su -到其他普通用户)

一般linux 服务器默认的句柄数都是 1024,查看方法如下:
#ulimit命令查看:
ulimit
ulimit -a

[root@test ~]# ulimit -n
1024

查看已开启线程数:

[root@test ~]# ps -efL |grep root|wc -l
863
[root@test ~]# ps -efL |grep www|wc -l
4390

超出了1024

解决

echo -e  "root soft nofile 65535\nroot hard nofile 65535\n* soft nofile 65535\n* hard nofile 65535\n" >> /etc/security/limits.conf
sed -i 's#4096#65535#g' /etc/security/limits.d/20-nproc.conf

一个是修改最大文件打开数,一个是最大进程数,其中root表示管理员,*表示普通用户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南巷Dong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值