某日,朋友跟我讨论他巡检
oracle
数据库时遇到的一个情况,在使用
root
用户切换
grid
用户时报错
-bash: fork: retry: Resource temporarily unavailable
,
一般这个报错都是因为
/etc/security/limits.conf
或
/etc/security/limits.d/
下相关用户
nproc
设置过小导致,但是定位一波三折,最终参考了
redhat
官网说明,了解清楚了
nproc
参数生成、限制,将案例详细分享,供大家参考。
故障背景
巡 检
su – grid
无 法 完 成 切 换 , 报 错
-bash: fork: retry: Resource
temporarily unavailable
。
操作系统为
Redhat 6.8
,数据库版本为
Oracle 11.2.0.4 RAC
。
初步分析,获取已存在进程
limits
环境设置
根据经验,上述报错一般为下面三个原因:
用户的
nproc
达到限制,无法创建新的进程
系统没有可分配的的
pid
,即进程号已经达到内核参数
kernel.pid_max
的限制
系统可用内存低,新的进程无法申请到内存导致不能启动
下面我们一步一步排查:
检查用户已经存在进程
limits
设置与用户
ulimit
设置,检查如下:
如果已经有会话登陆
grid
用户,可以通过下面命令得到当前限制
评论