OSX Yosemiteで「ulimit -u」設定を一時的に増やします。

OSX Yosemiteで「ulimit -u」設定を一時的に増やします。

一時的に(マシンを再起動せずにJVMの起動をテストするために)、OSX Yosemiteのプロセス数を2048に増やそうとしましたが失敗しました。

まず電話をかけましたが、ulimit -S -u 2048次のように戻ってきました。

ulimit: value exceeds hard limit

ハード制限は1064です。

$ ulimit -Hu
1064

私は一度sysctl合計の制限を変更しましたが、うまくいきました。kern.maxprockern.maxprocperuid

$ sudo sysctl -w kern.maxprocperuid=2048
$ sudo sysctl -w kern.maxproc=2048
$ sysctl kern.maxprocperuid kern.maxproc
kern.maxprocperuid: 2048
kern.maxproc: 2048

また、制限を変更してみましたが、launchctl maxproc正常に動作しているようです。

$ sudo launchctl limit maxproc 2048 2048
$ launchctl limit maxproc
maxproc     2048           2048

ただし、このように変更してもキャップを変更することはできませんulimit -u

私がこれをすべて行う理由は、OOME: Unable to create native threadMVNテストに合格したにもかかわらず、MVNテストで開始されたJVMでいくつかのエラーが発生するためです-Xss265k -Xmx2g

どんなアイデアがありますか?

ベストアンサー1

/Library/LaunchDaemons/limit.maxproc.plist制限を一時的にのみ変更したい場合でも、権限 644 があり、次の内容を含む root:wheel 所有のファイルを生成して変更を永久に実行する必要があります。

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

助けてくれたJason Greeneに感謝します!

おすすめ記事