本文主要參考 Increase Open Files Limit 和若干 Stack Overflow 的回答,並經過反覆實踐整理。
設定檔案最大開啟數
# 系統
echo 'fs.file-max = 65535' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 使用者
sudo tee -a /etc/security/limits.conf << EOF
* hard nofile 65535
* soft nofile 65535
root hard nofile 65535
root soft nofile 65535
EOF
# Systemd
sudo sed -i '/DefaultLimitNOFILE/c DefaultLimitNOFILE=65535' /etc/systemd/*.conf
sudo systemctl daemon-reexec
驗證
# 開啟新的終端
# ssh remote_user@host
# 檢視系統限制
cat /proc/sys/fs/file-max
# 檢視使用者硬限制
ulimit -Hn
# 檢視使用者軟限制
ulimit -Sn
# 檢視某程式的限制
cat /proc/PID/limits # 將 PID 替換為具體的程式 ID
# 檢視其他使用者限制
su - www -c 'ulimit -aHS' -s '/bin/bash'
備註
不需要在 /etc/pam.d/common-session
末尾新增 session required pam_limits.so
。