요세미티에서 maxfile 한도 및 maxfileperproc 한도를 높이려고 노력했지만 운이 없습니다. etc 폴더에 sysctl.conf 파일을 만들었으며 grep을 통해 표시 될 때 값이 성공적으로 증가했습니다.
그러나 launchctl limit maxfiles를 보면 값이 여전히 올바르지 않습니다.
일부 솔루션은 한계를 설정하기 위해 ulimit -n을 사용하는 것으로 보이지만 실제로 터미널에있을 때 이것을 사용할 수 없습니다. “잘못된 인수”또는 “권한없는 작업”오류가 발생합니다. bash_profile 스크립트를 통해 ulimit를 성공적으로 늘 렸지만 응용 프로그램이 셸이 아닌 응용 프로그램에서 실행되기 때문에 관련이 없습니다. 또한 루트 사용자를 통해 ulimit를 성공적으로 늘 렸지만 로그 아웃하면 변경 사항이 저장되지 않습니다.
이상적으로는 launchd.conf 파일처럼 작동하는 것을 찾고 있으며 재부팅시 launchctl limit maxfiles {#}을 자동으로 증가시킵니다.
이것을 성공적으로 수행하는 방법이 있습니까? Lingon과 같은 타사를 사용하거나 시작 데몬을 사용합니까?
감사!
답변
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 팀 에 다시 한 번 감사드립니다 .