OS X Yosemite-파일이 너무 많습니다


18

최근에 매버릭스에서 요세미티로 업그레이드했습니다.

나는 열 수있는 파일 수 / w 내 문제 거짓말 확실 해요 - 하지만 나는 확실히 그것을 해결하는 방법을 모르겠어요 . 또한 /etc/sysctl.conf파일과 /etc/launchd.conf파일 작성에 대한 모든 기사 / 팁을 읽었습니다.

명확성을 위해 이것은 현재 두 가지 모두 nb처럼 보입니다 (더 이상 올바른 명령인지는 확실하지 않습니다. 모든 것과 모든 조합에 대해 시도했습니다. 즉, 더 높은 값, 더 낮은 값) , 명령 제거, 명령 추가)

/etc/launchd.conf

limit maxfiles 16384 32768
limit maxproc 1000 2000

/etc/sysctl.conf

# Turn up maxproc
kern.maxproc=2048
# Turn up the maxproc per user
kern.maxprocperuid=512

또한 현재 세션에 대해 전 세계 및 로컬에서 ulimit 값을 늘리려 고했습니다.

ulimit -a

-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-v: address space (kbytes)          unlimited
-l: locked-in-memory size (kbytes)  unlimited
-u: processes                       709
-n: file descriptors                4096

Ok-두통이 처음 시작된 곳입니다 ... DB (homebrew를 통해 설치된 percona-server 5.6.21-69.0)가 질식하고 죽기 시작했으며 mysql-error.log에서 오류로 채워졌습니다 too many files open.

2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tokenorder_products.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tokenorders.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tsdevices.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tsracks.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/v_classunity_classlist.frm' (errno: 24 - Too many open files)
2014-10-21 15:20:48 5190 [ERROR] Error in accept: Too many open files

여기에서 처음에 ulimit, maxfiles, maxproc 등을 "업업"하여 문제를 해결하기 시작했습니다.

결국 좌절, 나는 계속해서 나중에 그 문제로 돌아올 것입니다. 그래서 나는 계속해서 노력하고 sudo gem install nokogiri 있었고 실패 하고이 같은 오류를 뱉어 냈습니다 (builder.rb에 대한 많은 반복이 gem 기본 확장을 구축하지 못했습니다-반복되는 스택 추적이 계속됩니다. Logs Gist

nokogiri 설치 오류 노코 기리 설치 오류

이 문제를 해결하기 위해 다양한 방법 (예 : 추가 플래그 등)을 시도 / 검색했습니다. 놀라운 점-이 문제가 열려있는 파일 / 프로세스 수와 관련이 있다고 생각했을 때 top보석을 설치하는 동안 확인했을 때입니다 .... 내가 찾은 것을 보게되어 매우 놀랐습니다

최고 gem install nokogiri sudo gem install 노코 기리

프로세스가 계속 작동하는 것처럼 보이며 이전 그림에서이 한 줄에 해당됩니다 ( "nokogiri 설치 오류 그림"참조).

sh: fork: Resource temporarily unavailable

그래서 나는 약간 아이디어가 있지만 더 이상 파일 수를 디버깅하는 방법을 잘 모르겠습니다.

최신 정보

글쎄, 나는 노코 기리를 설치했다. 불행히도, 내가 너무 많은 것들을 시도해 보았는지 정확히 알 수 없습니다. 하지만 루비를 다시 설치해야한다고 생각합니다. 그러나, 사소한 크기의 데이터베이스를 사용할 때 너무 많은 파일이 열려 있다고 불평하는 DB와 동일한 문제가 계속 발생합니다 .


흠. 아마 그렇게 많이 스폰되어서는 안됩니까? 아마도 그 보석의 개발자들과 함께 버그를 제기 할 가치가 있습니다.
slhck

답변:


16

수정 /etc/launchd.conf구글 쿼리 및 SO 제안을 많이 당은 요세미티에서 나를 위해 일 (10.10)에 보이지 않았다. 수많은 변경 / 재부팅 / 테스트 조합 후 작동하게 된 것은 /etc/sysctl.conf파일 을 수정하거나 존재하지 않는 경우 생성하는 것 입니다.

이것이 내가 작동하게하기 위해 넣어야했던 것입니다.

kern.maxfiles=65536
kern.maxfilesperproc=65536

나는 kern.maxfiles거기에 있어야 하는지 확실하지 않지만, 거기에 그 자체가있을 때 kern.maxfilesperproc모든 것이 작동하기 시작한 것을 추가했을 때 여전히 같은 문제가있었습니다 .


이러한 변수를 적용하려면 예상대로 재시작이 필요하다는 것을 알았습니다. 를 수행하여 값이 변경되었음을 확인할 수 있습니다 sysctl -a | grep kern.maxfiles.
Blake Frederick

8

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으로 설정되어 있어야합니다.

출처 : http://docs.basho.com/riak/latest/ops/tuning/open-files-limit/


1
"launchctl limit maxfiles 무제한 무제한; launchctl limit maxfiles"에 따르면 2015-09-30의 Yosemite 10.10.5에서 최대 값이 10240이며이 값을 실험하면 명시적인 숫자를 더 크게 사용하면 무시되었습니다.
Dave X

5

Yosemite의 기본값은 12K 및 10K 인 것 같습니다.

$ sysctl -a | grep kern.maxfiles
kern.maxfiles: 12288
kern.maxfilesperproc: 10240

설정 만하면 내 문제가 해결 kern.maxfiles/etc/sysctl.conf것 같습니다. /etc/sysctl.conf파일:

kern.maxfiles=24576

시에라와 동일한 값
Devin G Rhode

그러나 launchctl limit maxfiles나에게 이것을 주었다 :maxfiles 256 unlimited
Devin G Rhode
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.