응용 프로그램에 대한 Yosemite Maxfile 제한 늘리기


5

요세미티에서 maxfile 한도 및 maxfileperproc 한도를 높이려고 노력했지만 운이 없습니다. etc 폴더에 sysctl.conf 파일을 만들었으며 grep을 통해 표시 될 때 값이 성공적으로 증가했습니다.

그러나 launchctl limit maxfiles를 보면 값이 여전히 올바르지 않습니다.

일부 솔루션은 한계를 설정하기 위해 ulimit -n을 사용하는 것으로 보이지만 실제로 터미널에있을 때 이것을 사용할 수 없습니다. "잘못된 인수"또는 "권한없는 작업"오류가 발생합니다. bash_profile 스크립트를 통해 ulimit를 성공적으로 늘 렸지만 응용 프로그램이 셸이 아닌 응용 프로그램에서 실행되기 때문에 관련이 없습니다. 또한 루트 사용자를 통해 ulimit를 성공적으로 늘 렸지만 로그 아웃하면 변경 사항이 저장되지 않습니다.

이상적으로는 launchd.conf 파일처럼 작동하는 것을 찾고 있으며 재부팅시 launchctl limit maxfiles {#}을 자동으로 증가시킵니다.

이것을 성공적으로 수행하는 방법이 있습니까? Lingon과 같은 타사를 사용하거나 시작 데몬을 사용합니까?

감사!

답변:


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>

이렇게하면 열린 파일 제한이 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>

두 plist 파일은 모두 소유 root:wheel하고 권한이 있어야합니다 -rw-r--r--. 이 권한은 기본적으로 있어야하지만을 실행하여 권한이 있는지 확인할 수 있습니다 sudo chmod 644 <filename>. 위에서 설명한 단계로 인해 시스템 전체 열린 파일 제한이 다시 시작될 때 올바르게 설정되지만을 실행하여 수동으로 적용 할 수 있습니다 launchctl limit.

시스템 레벨에서 이러한 제한을 설정하는 것 외에, 우리는 세션 수준에서 설정뿐만 아니라하여 다음 줄 추가 추천 bashrc, bashprofile또는 유사한 파일 :

ulimit -n 65536
ulimit -u 2048

plist 파일과 마찬가지로 귀하 bashrc또는 유사한 파일에 -rw-r--r--권한이 있어야합니다 . 이 시점에서 컴퓨터를 다시 시작하고 ulimit -n터미널에 들어갈 수 있습니다. 시스템이 올바르게 구성된 경우 maxfiles가 65536으로 설정되어 있어야합니다.


다른 버전의 OS X에서는 프로세스가 약간 다르지만 해당 팀에서 잘 문서화했습니다. 이 과정을 문서화 한 Basho 다시 한 번 감사드립니다 .


방금이 과정을 거쳐 작동하는지 확인할 수 있지만 (10.10.2) 몇 가지 참고 사항이 있습니다. 1) 다시 시작해야합니다. 실행이 launchctl limit나를 위해 작동하지 않았다, 2) 그 두 ulimit를 명령을 다시 시작하기 전에 실패 (내가 unnecesary 생각?), 난 그냥 그 부분을 무시했다.
Cory Mawhorter

1
필자의 테스트에 따르면 요세미티에서 maxproc의 최대 허용 값은 2500입니다. "launchctl limit maxproc 2500"은 작동하지만 더 큰 값은 자동으로 무시됩니다. 이 문서가 어딘가에 있다고 확신합니다.

@JLG 도움이되었습니다. 내 MacPro에서 시작점이 1064 인 것처럼 보이면 x2.5만으로 병렬 iOS 시뮬레이터를 실행하는 20 홀드 로봇 사용자를 지원하기 위해 최대 10-15k 프로세스를 얻을 수 있기를 희망하는 것과 비교할 만합니다. . 우리는 오래된 8 코어 맥 미니를 사냥하고 클러스터를 뚫어야 할 것 같습니다.
android.weasel

사실, 그것은 맥 프로가 아닙니다. 맥 미니에서 하드 드라이브 인 척하는 맥 프로였습니다. 어쩌면 더 높은 MacO 서버 버전이있을 수 있습니까?
android.weasel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.