macOS提升ulimit与maxfiles:ulimit -n 100001:FRP、Nginx 高并发优化
› 社区话题 › Linux/macOS 与自动化运维 › macOS提升ulimit与maxfiles:ulimit -n 100001:FRP、Nginx 高并发优化
- 该话题为空。
正在查看 0 条回复

- 作者帖子
- 2025年7月16日 - 上午1:37 #737
追光管理员适用于 FRP 大并发、Nginx、高性能应用、数据库连接池 等场景。
1. 背景与功能作用
ulimit -n 表示 单个进程可打开的最大文件描述符数(影响 TCP 连接数)。
FRP(frps / frpc)在高并发时会因 “too many open files” 报错。
macOS 默认值仅 256,严重限制高并发性能。
目标:提升到 65536,并确保系统守护进程和终端都生效。
2. 默认值检查
ulimit -n # 默认:256
查看 Launchd 全局限制:
launchctl limit
3. 调整方法
(A) 临时生效(仅当前 shell)
ulimit -n 65536
缺点:重启后失效。
(B) 永久生效(终端会话)
修改 ~/.zshrc:
vi ~/.zshrc
添加:
ulimit -n 65536
执行:
source ~/.zshrc
验证:
ulimit -n # 输出:65536
(C) 系统级全局生效
编辑 sysctl(内核参数)
sudo vi /etc/sysctl.conf
添加:
kern.maxfiles=65536 kern.maxfilesperproc=65536
加载:
sudo sysctl -w kern.maxfiles=65536 sudo sysctl -w kern.maxfilesperproc=65536
创建 LaunchDaemon(确保开机生效)
sudo vi /Library/LaunchDaemons/limit.maxfiles.plist
内容:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>limit.maxfiles</string> <key>ProgramArguments</key> <array> <string>launchctl</string> <string>limit</string> <string>maxfiles</string> <string>65536</string> <string>65536</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
加载:
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
4. 验证
ulimit -n # 65536 launchctl limit # maxfiles 65536 unlimited
5. 对 FRP 的作用
每个 TCP 连接占用一个文件描述符。
256 → 65536 允许 frps 支持数万并发连接。
配合 frps.toml:
[transport] maxPoolCount = 10 heartbeatTimeout = 120 tcpKeepalive = 7200
并调整 Linux ulimit 和内核参数,FRP 可轻松支撑高并发。
- 作者帖子
正在查看 0 条回复
- 在下方一键注册,登录后就可以回复啦。