在我的Macbook Pro 15'(16 Giga RAM,4个物理内核)上从Mac iOS(El Capitan)上的shell执行gatling(加载测试工具)时,我发出错误“打开文件过多”。< / p>
我花了好几天时间来解决这个问题,但没有取得任何成功:
我在/Library/LaunchDaemons/limit.maxfiles.plist中创建了一个文件,其中包含从网络上复制的XML文件内容,但没有结果。
sudo ulimit -n 15000不起作用。
我使用以下内容创建了一个文件/etc/sysctl.conf
kern.maxfiles = 20480
kern.maxfilesperproc = 20480
我认为“/ Library / LaunchDaemons /”中的xml文件似乎有一些效果,因为当我更改maxfiles的值时,命令“sudo launchctl limit”向我显示我在XML文件中输入的值,当用某个值调用“ulimit -n”时,它接受小于该值的每个值,但是当我调用“ulimit -n”时,结果每次都是相同的“4096”。
我在Java中看到,限制是10240,所以我尝试了VM选项(-XX:-MaxFDLimit)而没有任何影响。
奇怪的是,当我从Intellij(IDE)执行Gatling时,我可以直到10 200个套接字。同样的事情,即使在所有组合中执行所有命令(ulimit,sysctl,launchctl,...)之后,也会产生不同的效果。
祝你好运
答案 0 :(得分:7)
以防万一其他人从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 limit maxfiles
<强> 4 强> 加载这些新设置:
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
<强> 5 强> 最后,检查限制是否正确:
launchctl limit maxfiles
答案 1 :(得分:5)
我找到了问题的答案。
Ulimit和Shell
我的gatling问题来自于我无法与我的用户执行ulimit(权限被拒绝)和&#34; sudo ulimit&#34;对我的用户的当前shell没有影响。所以,我的解决方案是
在root用户(sudo -s)下执行我的gatling压力测试。 添加一行&#34; ulimit -n 23000&#34;在/ etc / profile文件中。
<强>的Intellij 强>
对于intellij,答案是修改Info.plist文件中intellij的vmoptions,以在文件末尾的VMOptions键中添加&#34; -XX:-MaxFDLimit &#34;
更改文件箱/ idea.vmoptions无效。
应通过添加文件&#34; limit.maxfiles.plist&#34;来更改maxfiles的全局值。在 / Library / LaunchDaemons 目录中。
<?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>66111</string>
<string>66111</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
谢谢