問題現象
遠端連線失敗:
通過 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參數。
卸載系統硬碟。
確保異常執行個體狀態為已停止,執行以下操作:
為防止誤操作導致資料丟失,建議對系統硬碟建立快照,備份當前資料。
訪問ECS控制台-執行個體。在頁面左側頂部,選擇目標資源所在的資源群組和地區。
單擊異常執行個體ID進入執行個體詳情頁後,切換至Block Storage頁簽。
在系統硬碟的操作列選擇。
在卸載雲端硬碟對話方塊中確認資訊,單擊確定卸載。當執行個體狀態顯示無系統硬碟時,表示卸載成功。
作為資料盤掛載至正常執行個體。
確保正常執行個體狀態為運行中,執行以下操作:
掛載異常系統硬碟至正常執行個體。
單擊正常執行個體ID進入執行個體詳情頁。
切換至Block Storage頁簽後,單擊掛載雲端硬碟。
在掛載到執行個體頁面的目標盤中,選擇已卸載的異常系統硬碟,單擊下一步。
在分區及建立檔案系統並掛載介面,選擇稍後設定,完成掛載。
單擊遠端連線,選擇通過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控制台,進入正常執行個體詳情頁的Block Storage頁簽。
單擊修複後的系統硬碟操作列的卸載。
在卸載雲端硬碟介面,單擊確定卸載。
將修複後的系統硬碟掛載回源執行個體。
進入異常執行個體詳情頁的Block Storage頁簽,單擊掛載雲端硬碟。
在掛載到執行個體頁面的目標盤中,選擇修複後的系統硬碟,配置登入憑證後,單擊下一步。
在分區及建立檔案系統並掛載介面,選擇稍後設定,完成掛載。
啟動ECS執行個體。
登入異常ECS執行個體,查看是否正常。
後續建議
謹慎操作核心系統檔案:在修改核心系統檔案前,請務必建立快照備份資料,並確認操作的必要性和潛在風險。切勿輕易修改不熟悉的系統參數。
監控警示:為保障關鍵業務系統的穩定性與安全性,建議在所有核心執行個體上部署
ulimit -n配置檢查機制。通過定期檢測ulimit -n的實際運行值及其期望配置的一致性,確保系統資源限制設定符合預期標準,及時發現並預警異常修改行為。
> 卸載