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値を増やしてみました... no bueno

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のインストール中にチェックしたときです....私が見つけたものを見て驚いた

中にトップ gem install nokogiri sudo gem install nokogiri

私のプロセスは分岐し続けているように見えますが、それは前の写真のこの1行に意味がありました(「nokogiri install errors picture」を参照)

sh: fork: Resource temporarily unavailable

だから私はちょっとアイデアから外れていますが、ファイルの数をもうデバッグする方法が本当にわかりませんか?

更新

まあ、私はノコギリをインストールすることができました。残念ながら、何がそれを修正したのか正確にはわかりません。しかし、ルビーを再インストールすることで対処しなければならなかったと思います。しかし、些細ではない任意の種類のデータベースを使用すると、開いているファイルが多すぎると不平を言っているのに、同じ問題が引き続き発生します


ふむ おそらくそんなに産卵するべきではないでしょうか?おそらく、そのgemの開発者にバグを提起する価値もあります。
slhck 14年

回答:


16

/etc/launchd.confYosemite(10.10)では、多くのGoogleクエリとSOの提案を修正することはうまくいかないようでした。何度も変更/リブート/テストの組み合わせを行った後に機能するようになったのは、/etc/sysctl.confファイルを変更(または、存在しない場合は作成)することでした。

これは私がそれを機能させるために入れなければならなかったものです

kern.maxfiles=65536
kern.maxfilesperproc=65536

kern.maxfilesそこにある必要があるかどうかはわかりませんが、そこにそれを入れたとき、kern.maxfilesperprocすべてが機能し始めたとき、私はまだ同じ問題を抱えていました。


これらの変数を有効にするには(予想どおり)再起動が必要であることがわかりました。を実行すると、値が変更されたことを確認できますsysctl -a | grep kern.maxfiles
ブレイクフレデリック

8

Mac OS X Yosemiteでシステム全体でオープンファイルの制限を調整するには、2つの構成ファイルを作成する必要があります。1つ目は/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に設定されます。2番目の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

システムレベルでこれらの制限を設定することに加えて、我々はあなたに次の行を追加することによってだけでなく、セッション・レベルで設定することはお勧めbashrcbashprofileまたは類似したファイル:

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 unlimited unlimited; launchctl limit maxfiles」では、2015-09-30のYosemite 10.10.5で最大値が10240であることが報告されています。無視されます。
デイブ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

シエラのまったく同じ値
デビンGロード

しかしlaunchctl limit maxfiles、私にこれを与えた:maxfiles 256 unlimited
デビンGロード
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.