本文使用SSH远程连接Linux系统的ECS实例时,提示“could not set limit for ‘nofile’: Operation not permitted”错误的原因和解决方案。
问题现象
使用SSH远程连接Linux系统的ECS实例时,提示以下错误信息。
-bash: fork: retry: Resource temporarily unavailable.
pam_limits(sshd:session):could not sent limit for 'nofile':operaton not permitted.
Permission denied.
问题原因
该问题可能是Linux内核中资源限制配置文件/etc/security/limits.conf
中nofile
值过大,超过内核可打开的文件数,导致无法使用SSH连接ECS实例。
解决方案
您可以根据业务需要,修改/etc/sysctl.conf
和/etc/security/limits.conf
配置文件以解决此问题。
以VNC方式远程连接ECS实例。
具体操作,请参见连接方式概述。
分别执行如下命令,查看
fs.file-max
和fs.nr_open
参数值。修改
/etc/sysctl.conf
配置文件。打开
/etc/sysctl.conf
配置文件。vim /etc/sysctl.conf
按
i
键进入编辑模式。修改
fs.file-max
和fs.nr_open
参数值。建议将
fs.file-max
和fs.nr_open
参数值都修改为大于65536。fs.file-max
:系统内核级别所有进程可打开的文件数。fs.nr_open
:系统内核级别单个进程可打开的文件数。
说明fs.file-max = 655360 fs.nr_open = 655360
修改
/etc/security/limits.conf
配置文件。打开
/etc/security/limits.conf
配置文件。vim /etc/security/limits.conf
按
i
键进入编辑模式。修改
* soft nofile
和* hard nofile
参数值。例如,将
* soft nofile
和* hard nofile
参数值都修改为大于65535。* soft nofile 655350 * hard nofile 655350
重启ECS实例。
具体操作,请参见启动实例。
依次执行以下命令,确认
fs.file-max
和fs.nr_open
值修改成功。cat /proc/sys/fs/file-max cat /proc/sys/fs/nr_open