在Macbook Pro 15'(16 Giga的RAM,4个物理核)的Mac iOS(El Capitan)上的 shell 上执行加特林(负载测试工具)时,出现错误“打开的文件太多”。
我花了几天时间解决此问题,但没有成功:
我认为“/Library/LaunchDaemons/”中的xml文件似乎有一定作用,因为当我更改maxfiles的值时,命令“sudo launchctl limit”会向我显示我在XML文件中输入的值,以及何时用某个值调用“ulimit -n”,它接受小于该值的每个值,但是当我调用“ulimit -n”时,结果每次都是相同的“4096”。
我看到在Java中,限制为10240,所以我尝试了VM选项(-XX:-MaxFDLimit),但没有任何效果。
奇怪的是,当我从Intellij(IDE)执行加特林时,我直到10 200个套接字。即使在所有组合(ulimit,sysctl,launchctl等)中执行了所有命令之后,同一件事也会产生不同的效果。
最好的祝福
最佳答案
以防万一其他人从Google登陆,以下是更改最新版本OS X的打开文件限制所需的步骤:
1.
在/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>64000</string>
<string>524288</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
2.
更改新文件的所有者:
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
3.
检查当前设置
launchctl限制maxfiles
4.
加载以下新设置:
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
5.
最后,检查限制是否正确:
launchctl limit maxfiles