【发布时间】:2016-02-23 11:54:37
【问题描述】:
在我的 Macbook Pro 15(16 Giga 内存,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
- 我尝试了命令“sudo launchctl limit maxfiles 20480 20480”,没有任何结果。
我认为“/Library/LaunchDaemons/”中的 xml 文件似乎有一些效果,因为当我更改 maxfiles 的值时,命令“sudo launchctl limit”会向我显示我在 XML 文件中输入的值,并且当使用某个值调用“ulimit -n”时,它接受小于该值的每个值,但是当我调用“ulimit -n”时,结果每次都是相同的“4096”。
我看到在Java中,限制是10240,所以我尝试了VM选项(-XX:-MaxFDLimit)没有任何效果。
奇怪的是,当我从 Intellij (IDE) 执行 Gatling 时,我可以一直运行到 10200 个套接字。相同的东西,即使在所有组合(ulimit、sysctl、launchctl、...)中执行了所有命令之后,也会产生不同的效果。
最好的问候
【问题讨论】:
-
并尝试了 doccu 在gatling.io/docs/2.0.0-RC2/general/operations.html 上所说的内容?例如而不是 20k 将 300k 设置为 kerm.*?
-
感谢您的回答。我找到了我的问题的答案。我的问题来自于我无法对我的用户执行 ulimit(权限被拒绝),并且“sudo ulimit”对我的用户的当前 shell 没有影响。所以,我的解决方案是在 root 用户 (sudo -s) 下执行我的加特林压力测试,为什么我不能在没有 sudo 的情况下执行 ulimit?从 Intellij(10 240 限制)执行 java 程序时问题仍然存在。我知道在 Intellij 中执行这样的程序是没有意义的,只是好奇:)
-
对于intellij,答案是修改Info.plist文件中intellij的vmoptions,在文件末尾的VMOptions键中添加“-XX:-MaxFDLimit”。更改文件 idea.vmoptions 无效。对于 ulimit,答案是在我的 /etc/profile 中添加“ulimit -n 23000”。
标签: java macos shell osx-elcapitan