一時的に(マシンを再起動せずにJVMの起動をテストするために)、OSX Yosemiteのプロセス数を2048に増やそうとしましたが失敗しました。
まず電話をかけましたが、ulimit -S -u 2048
次のように戻ってきました。
ulimit: value exceeds hard limit
ハード制限は1064です。
$ ulimit -Hu
1064
私は一度sysctl
合計の制限を変更しましたが、うまくいきました。kern.maxproc
kern.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 thread
MVNテストに合格したにもかかわらず、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に感謝します!