bsh*_*bsh 4 java macos shell osx-elcapitan
在我的Macbook Pro 15'(16千兆RAM,4个物理内核)上从Mac iOS(El Capitan)上的shell执行gatling(加载测试工具)时,我的错误是"打开的文件过多".
我花了几天时间来解决这个问题,没有任何成功:
我在/Library/LaunchDaemons/limit.maxfiles.plist中创建了一个文件,其中包含从Web复制的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,...)之后,也会产生不同的效果.
最好的祝福
万一其他任何人从谷歌到这里,这里是更改最新版本的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>
Run Code Online (Sandbox Code Playgroud)
2. 更改新文件的所有者:
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
Run Code Online (Sandbox Code Playgroud)
3. 检查当前设置launchctl limit maxfiles
4. 加载以下新设置:
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
Run Code Online (Sandbox Code Playgroud)
5. 最后,检查限制是否正确:
launchctl limit maxfiles
Run Code Online (Sandbox Code Playgroud)
我找到了问题的答案.
Ulimit和壳牌
我的gatling问题来自于我无法用我的用户执行ulimit(权限被拒绝),而"sudo ulimit"对我的用户的当前shell没有影响.所以,我的解决方案是
在root用户(sudo -s)下执行我的gatling压力测试.在/ etc/profile文件中添加一行"ulimit -n 23000".
的IntelliJ
对于intellij,答案是修改Info.plist文件中intellij的vmoptions,以在文件末尾的VMOptions键中添加" -XX:-MaxFDLimit ".
更改文件bin/idea.vmoptions无效.
应通过在/ Library/LaunchDaemons目录中添加文件"limit.maxfiles.plist"来更改maxfiles的全局值.
<?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>
Run Code Online (Sandbox Code Playgroud)
谢谢
| 归档时间: |
|
| 查看次数: |
3896 次 |
| 最近记录: |