일시적으로(머신을 다시 시작하지 않고 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에게 감사드립니다!