“Too many open files” when executing gatling on Mac

时光毁灭记忆、已成空白 提交于 2019-12-22 08:19:40

问题


When executing gatling (load test tools) from shell on Mac iOS (El Capitan) on my Macbook Pro 15 ' (16 Giga of RAM, 4 physical cores), i've the error "Too many open files".

I spend days to fix this problem, without any success :

  • I created a file in /Library/LaunchDaemons/limit.maxfiles.plist with a XML file content copied from the web, no result.

  • sudo ulimit -n 15000 doesn't work.

  • I created a file /etc/sysctl.conf with the following content

kern.maxfiles=20480
kern.maxfilesperproc=20480

  • I tried the command "sudo launchctl limit maxfiles 20480 20480" without any result.

I think that the xml file in "/Library/LaunchDaemons/" seem have some effect, because when i change the value of the maxfiles, the command "sudo launchctl limit" display to me the value i entered in the XML file, and when calling "ulimit -n" with some value, it accept every values less than this value, but when i call "ulimit -n", the result is everytime the same "4096".

I saw that in Java, the limit is 10240, so i tried the VM option (-XX:-MaxFDLimit) without any effect.

On strange thing, when i executed Gatling from Intellij (IDE), i ca go until 10 200 sockets. The same thing, give differents effects, even after executing all commands in all combinaisons (ulimit, sysctl, launchctl, ...).

Best regards


回答1:


Just in case any one else lands here from google, here are the steps required to change the open files limit on the latest versions of OS X:

1. In /Library/LaunchDaemons create a file named limit.maxfiles.plist and paste the following in (feel free to change the two numbers (which are the soft and hard limits, respectively):

<?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. Change the owner of your new file:

sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist

3. Check current settings launchctl limit maxfiles

4. Load these new settings:

sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist

5. Finally, check that the limits are correct:

launchctl limit maxfiles



回答2:


I found the answer to my question.

Ulimit and Shell

My problem with gatling come from the fact that i can't execute the ulimit with my user (permission denied), and "sudo ulimit" has not effect to the current shell for my user. So, my solution is to

Execute my gatling stress test under a root user (sudo -s). Add a line "ulimit -n 23000" in the /etc/profile file.

Intellij

For intellij, the answer is to modify the vmoptions of intellij in the Info.plist file to add in the VMOptions key at the end of the file the "-XX:-MaxFDLimit".

Changing the file bin/idea.vmoptions has no effect.

Global value of maxfiles should be changed by adding a file "limit.maxfiles.plist" in the /Library/LaunchDaemons directory.

<?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>

Thank you



来源:https://stackoverflow.com/questions/33836092/too-many-open-files-when-executing-gatling-on-mac

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!