Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux 資源限制完整指南:系統級、應用級與核心級三層架構詳解

編輯:Linux 系統常見問題解答

核心概念:三層限制體系

Linux 資源限制並非單一機制,而是形成「系統級 → 應用級 → 核心級」三層防護體系。理解各層職責邊界,才能精準定位效能瓶頸與安全風險。

第一層:系統級限制 /etc/security/limits.conf

配置語法解析

<domain> <type> <item> <value>
欄位說明
domain用戶名、@group 或 *(全域)
typesoft(當前生效)、hard(上限)、-(同時設定兩者)
item資源類型(見下表)
value具體數值

常用資源項目速查表

關鍵字限制對象典型場景
nofile單進程最大開啟檔案數高併發伺服器(Nginx、MySQL)必調
nproc用戶最大進程/執行緒數防止 Fork 炸彈、Java 執行緒池溢位
memlock可鎖定記憶體位址空間資料庫大頁記憶體、實時運算
stack執行緒堆疊大小深度遞迴、大量區域變數程式
core核心轉儲檔案大小除錯環境設為 unlimited
as虛擬位址空間上限容器化環境記憶體硬性隔離

生效關鍵:PAM 模組載入

修改 limits.conf 後,必須確認 /etc/pam.d/login、/etc/pam.d/sshd、/etc/pam.d/su 等檔案包含:

session required pam_limits.so

架構差異提醒:

  • 32 位元:/lib/security/pam_limits.so
  • 64 位元:/lib64/security/pam_limits.so

路徑錯誤是「配置不生效」的首要原因。

第二層:應用級限制

由應用程式自身實作,典型代表:

  • Nginx:worker_rlimit_nofile、worker_connections、limit_conn_zone、limit_req_zone
  • MySQL:max_connections、open_files_limit、thread_stack
  • JVM:-Xmx、-Xss、-XX:MaxDirectMemorySize
  • PHP-FPM:pm.max_children、rlimit_files、rlimit_core

優勢:感知業務語義,可實施更精細的配額與熔斷策略。

第三層:核心級限制

透過 sysctl 調整 /proc/sys/ 參數,影響全系統行為:

參數作用
fs.file-max系統全域最大檔案控制代碼數
kernel.pid_maxPID 最大值,間接限制進程總數
vm.max_map_count單進程記憶體映射區域數(Elasticsearch 必調)
net.core.somaxconnTCP 連線佇列長度
kernel.threads-max系統最大執行緒數

修改方式:sysctl -w kernel.pid_max=4194303 或寫入 /etc/sysctl.d/99-custom.conf 持久化。

實戰排查清單

  1. ulimit -a 檢視當前 Shell 繼承的軟限制
  2. cat /proc/<PID>/limits 確認具體進程實際生效值
  3. systemctl show --property=LimitNOFILE --property=LimitNPROC <service> 查看 systemd 服務單元限制
  4. 應用日誌搜尋 Too many open files、unable to create new native thread 等關鍵字

最佳實踐原則

  • 最小權限:僅為必要服務提升額度
  • 分層設防:系統級設上限,應用級設業務水位
  • 監控告警:採集 open file descriptors / max 比率,超 80% 告警
  • 變更驗證:修改後必須重啟服務並用 /proc/PID/limits 復核
Copyright © Windows教程網 All Rights Reserved