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에게 감사드립니다!

관련 정보