问题现象
远程连接失败:
通过 SSH 或Workbench 远程连接实例时,连接被拒绝或超时,无法建立会话。
通过 VNC 登录,输入正确的用户名和密码后提示“System error”,无法登录。
业务程序运行异常:
应用日志或命令行输出“Too many open files”错误。

问题原因
nofile 资源限制过严:/etc/security/limits.conf 文件中的 nofile 参数值决定每个进程可打开文件数量上限,若设置过小,单进程所需打开文件数量超出此限制,将提示无法打开更多文件或直接拒绝登录。
操作步骤
若可登录,可直接修改配置;若已无法登录,则需要通过挂载系统盘方式修复。
可登录实例
使用root用户登录ECS实例。
访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。
进入目标实例详情页,单击远程连接,选择通过Workbench远程连接。根据页面提示使用root用户登录,进入终端页面。
修改配置文件。
编辑
/etc/security/limits.conf文件,修改hard nofile和soft nofile参数值为默认的65535后,保存并退出。* soft nofile 65535 * hard nofile 65535 root soft nofile 65535 root hard nofile 65535*代表所有普通用户,root代表 root 用户。hard nofile:文件打开数的硬性上限,该值不能超过内核参数/proc/sys/fs/nr_open的限制,否则可能导致实例登录失败。。soft nofile:当前可打开的文件数限制,该值不得超过hard nofile,否则配置将被忽略。若设置的
soft nofile大于hard nofile,实际生效的nofile值为hard nofile参数值。
使配置生效。
退出并使用目标用户重新登录ECS实例,使配置生效。
使用
sudo ulimit -n,输出为65535,表示nofile已更新。
重启并运行相关业务程序,确认功能恢复正常。
无法登录实例
若系统盘存在历史快照,建议新建快照备份当前数据后,优先利用历史快照回滚系统盘,然后验证恢复正常。
若无历史快照,则需准备一台与故障实例在同一可用区的正常Linux实例,通过挂载系统盘的方式更改nofile参数。
卸载系统盘。
确保异常实例状态为已停止,执行以下操作:
作为数据盘挂载至正常实例。
确保正常实例状态为运行中,执行以下操作:
挂载异常系统盘至正常实例。
单击正常实例ID进入实例详情页。
切换至块存储页签后,单击挂载云盘。
在挂载到实例页面的目标盘中,选择已卸载的异常系统盘,单击下一步。
在分区及创建文件系统并挂载界面,选择稍后设置,完成挂载。
单击远程连接,选择通过Workbench远程连接。根据页面提示使用root用户登录,进入终端页面。
挂载文件系统。
确定故障盘分区名称。
lsblk -fvda ├─vda1 ├─vda2 vfat 7938-FA03 /boot/efi └─vda3 ext4 root 33b46ac5-7482-4aa5-8de0-60ab4c3a4c78 / vdb ├─vdb1 ├─vdb2 vfat 7938-FA03 └─vdb3 ext4 root 33b46ac5-7482-4aa5-8de0-60ab4c3a4c78示例中,故障盘
vdb的根分区为vdb3需挂载,各分区含义如下:vdb1/vdb2:存放系统启动相关程序,可忽略。
vdb3:存放操作系统文件和数据,需挂载。
创建目录并挂载文件系统。
mkdir <挂载目录> && sudo mount /dev/<分区名称> <挂载目录>参数
说明
<分区名称>替换为上一步确定的故障盘的根分区名称。
<挂载目录>自定义<挂载目录>,应为以
/开头的空路径,可自定义但不可重复。重要若目录非空,原目录下文件将被隐藏导致无法读取,请谨慎评估。
以将目标分区
vdb1挂载至新创建的/test为例,需执行mkdir /test && sudo mount /dev/vdb3 /test。检查文件系统挂载结果。
运行
lsblk命令,若目标分区存在挂载目录(MOUNTPOINT),表示文件系统挂载成功。
修改配置文件。
编辑<挂载目录>/etc/security/limits.conf文件,修改
hard nofile和soft nofile参数值为默认的65535后,保存并退出。* soft nofile 65535 * hard nofile 65535 root soft nofile 65535 root hard nofile 65535*代表所有用户,root代表 root 用户。hard nofile:文件打开数的硬性上限,该值不能超过内核参数<挂载目录>/proc/sys/fs/nr_open的限制,否则可能导致实例登录失败。soft nofile:当前可打开的文件数限制,该值不得超过hard nofile,否则配置将被忽略。若设置的
soft nofile大于hard nofile,实际生效的nofile值为hard nofile参数值。
作为系统盘挂载回异常ECS实例。
卸载文件系统。
<挂载目录>需替换为实际的挂载路径。umount <挂载目录>示例需执行
umount /test。卸载修复后的系统盘。
返回ECS控制台,进入正常实例详情页的块存储页签。
单击修复后的系统盘操作列的卸载。
在卸载云盘界面,单击确定卸载。
将修复后的系统盘挂载回源实例。
进入异常实例详情页的块存储页签,单击挂载云盘。
在挂载到实例页面的目标盘中,选择修复后的系统盘,配置登录凭证后,单击下一步。
在分区及创建文件系统并挂载界面,选择稍后设置,完成挂载。
启动ECS实例。
登录异常ECS实例,查看是否正常。
后续建议
谨慎操作核心系统文件:在修改核心系统文件前,请务必手动创建单个快照备份数据,并确认操作的必要性和潜在风险。切勿轻易修改不熟悉的系统参数。
监控告警:为保障关键业务系统的稳定性与安全性,建议在所有核心实例上部署
ulimit -n配置检查机制。通过定期检测ulimit -n的实际运行值及其期望配置的一致性,确保系统资源限制设置符合预期标准,及时发现并预警异常修改行为。
> 卸载