本文使用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