在Mac上执行gatling

时间:2015-11-20 21:08:44

标签: java macos shell osx-elcapitan

在我的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

  • 我尝试了“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时,我可以直到10 200个套接字。同样的事情,即使在所有组合中执行所有命令(ulimit,sysctl,launchctl,...)之后,也会产生不同的效果。

祝你好运

2 个答案:

答案 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>

谢谢