Mar
16
2021
Linux实例由于Ulimit限制原因导致SSH登录后系统异常
问题描述
客户端SSH登录Linux实例后,命令行操作时系统提示如下错误。
-bash: fork: retry: Resource temporarily unavailable. pam_limits(sshd:session):could not sent limit for 'nofile':operaton not permitted. Permission denied.
问题原因
通常是由于当前Shell进程开启或文件开启数量,超出服务器Ulimit系统环境限制造成的。
解决方案
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
说明:本文相关配置及说明在CentOS 7.6 64位操作系统和CentOS 5 64位操作系统中进行测试。其它类型及版本操作系统配置可能有所差异,具体情况请参阅相应操作系统官方文档。
根据以上问题原因需要在CentOS系统版本中,修改limits.conf文件来永久变更Ulimit系统环境限制。由于在CentOS 6系统版本及之后发行版本中,增加了X-nproc.conf
文件管理Ulimit系统环境限制。因此这里分别对不同版本进行操作说明,步骤如下。
说明:
X-nproc.conf
文件在不同系统版本中前缀数字不同,比如在CentOS 6版本中为90-nproc.conf
,在CentOS 7版本中为20-nproc.conf
,请根据现场环境为准。
CentOS 6之前版本
此处以CentOS 5 64位系统版本为例,步骤如下。
-
通过管理终端登录该实例,执行如下命令,查看系统当前Ulimit系统资源限制信息,确认是否开启系统资源限制,并因为开启系统资源限制值设置过小。
cat /etc/security/limits.conf
说明:
-
<domain>需要限制的系统用户,可以用
*
代替所有用户。 -
<type>有
soft
、hard
和-
三种参数。-
soft
指的是当前系统已经生效的<value>值。 -
hard
指系统中设定的最大<value>值。 -
soft
的限制不能比hard
限制高,用-
表示同时设置了soft
和hard
的值。
-
-
<item>指需要限制的使用资源类型,资源类型参数如下。
-
core
指限制内核文件的大小。 -
rss
指最大持久设置大小。 -
nofile
指打开文件的最大数目。 -
noproc
指进程的最大数目。
-
-
<domain>需要限制的系统用户,可以用
-
根据现场反馈结果为准,如果系统开启并配置系统资源限制,通过编辑
limits.conf
文件,选择注释、修改或删除noproc
或nofile
参数限制的资源类型代码操作。
说明:此处以注释noproc为例。
- 保存退出编辑模式后,重启该Linux实例即可。
CentOS 6及之后版本
此处以CentOS 7.6 64位版本为例,步骤如下。
-
通过管理终端登录该实例,执行如下命令,查看系统当前Ulimit系统资源限制信息。
cat /etc/security/limits.d/20-nproc.conf
-
参考CentOS 6之前版本步骤,修改
/etc/security/limits.d/20-nproc.conf
文件。
说明:操作前请先对
/etc/security/limits.d/20-nproc.conf
文件备份。 - 以上操作完成并保存配置后,重启对应Linux实例即可。
本公司销售:阿里云、腾讯云、百度云、天翼云、金山大米云、金山企业云盘!可签订合同,开具发票。
我有话说: