增加应用程序的优胜美地最大文件限制

toa*_*333 5 launchd daemon launchctl ulimit osx-yosemite

我一直在尝试提高优胜美地的 maxfile 限制和 maxfileperproc 限制,但没有运气。我在 etc 文件夹中创建了一个 sysctl.conf 文件,它在通过 grep 显示时成功增加了值。

但是,如果我查看launchctl limit maxfiles,该值仍然不正确。

一些解决方案似乎使用 ulimit -n 来设置限制,但是在终端中时,我实际上无法使用它。它给了我“无效参数”或“未经授权的操作”的错误。我已经通过 bash_profile 脚本成功增加了 ulimit,但是由于应用程序是从应用程序运行的,而不是从 shell 运行的,所以它无关紧要。我还通过 root 用户成功地增加了 ulimit,但是当它被注销时,它不会保存更改。

理想情况下,我正在寻找像 launchd.conf 文件那样工作的东西,并且只是在重新启动时自动增加 launchctl limit maxfiles {#}。

有没有办法成功地做到这一点?也许使用像 Lingon 这样的 3rd 方,或者使用启动守护程序?

谢谢!

mbb*_*mbb 8

由于与Basho 的 Riak一起玩,我弄清楚了这一点。优胜美地的路线是:


要在 Mac OS X Yosemite 中在系统范围的基础上调整打开文件限制,您必须创建两个配置文件。

第一个是/Library/LaunchDaemons/limit.maxfiles.plist包含以下 XML 配置的属性列表(又名 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>65536</string>
          <string>65536</string>
        </array>
      <key>RunAtLoad</key>
        <true/>
      <key>ServiceIPC</key>
        <false/>
    </dict>
  </plist>
Run Code Online (Sandbox Code Playgroud)

这会将打开文件限制设置为 65536。第二个 plist 配置文件应存储在/Library/LaunchDaemons/limit.maxproc.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.maxproc</string>
      <key>ProgramArguments</key>
        <array>
          <string>launchctl</string>
          <string>limit</string>
          <string>maxproc</string>
          <string>2048</string>
          <string>2048</string>
        </array>
      <key>RunAtLoad</key>
        <true />
      <key>ServiceIPC</key>
        <false />
    </dict>
  </plist>
Run Code Online (Sandbox Code Playgroud)

两个 plist 文件都必须由 拥有root:wheel并具有权限-rw-r--r--。默认情况下,此权限应该到位,但您可以通过运行sudo chmod 644 <filename>. 虽然上面解释的步骤将导致在重新启动时正确设置系统范围内的打开文件限制,但您可以通过运行手动应用它们launchctl limit

除了在系统级别设置这些限制,我们建议在会话级设置,以及通过附加以下行到你bashrcbashprofile或类似的文件:

ulimit -n 65536
ulimit -u 2048
Run Code Online (Sandbox Code Playgroud)

与 plist 文件一样,您bashrc或类似的文件应该具有-rw-r--r--权限。此时,您可以重新启动计算机并进入ulimit -n您的终端。如果您的系统配置正确,您应该看到 maxfiles 已设置为 65536。


该过程在其他版本的 OS X 上略有不同,但该团队也有详细记录。再次感谢Basho团队记录此过程。