服务器是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表示管理员,*表示普通用户

Logo

鸿蒙生态一站式服务平台。

更多推荐