web-dev-qa-db-ja.com

アプリケーションのYosemitemaxfile制限の引き上げ

Yosemiteのmaxfile制限とmaxfileperproc制限を上げようとしてきましたが、運がありませんでした。 etcフォルダーにsysctl.confファイルを作成しました。これにより、grepを介して表示されたときに値が正常に増加しました。

ただし、launchctl limit maxfilesを見ると、値はまだ正しくありません。

一部のソリューションでは、ulimit -nを使用して制限を設定しているように見えますが、ターミナルでは実際には使用できません。 「引数が無効です」または「不正な操作」というエラーが表示されます。 bash_profileスクリプトを使用してulimitを正常に増やしましたが、アプリケーションはシェルではなくアプリケーションから実行されるため、関係ありません。また、rootユーザーを介してulimitを正常に増やしましたが、ログアウトすると、変更は保存されません。

理想的には、launchd.confファイルと同じように機能し、再起動時にlaunchctl limit maxfiles {#}を自動的に増やすものを探しています。

これを成功させる方法はありますか?たぶん、Lingonのようなサードパーティを使用しているのでしょうか、それとも起動デーモンを使用しているのでしょうか。

ありがとう!

5
toadstool333

芭蕉のRiak で遊んだおかげでこれがわかりました。ヨセミテへの道順は次のとおりです。


Mac OS X Yosemiteでシステム全体で開いているファイルの制限を調整するには、2つの構成ファイルを作成する必要があります。

1つ目は、/Library/LaunchDaemons/limit.maxfiles.plist内のプロパティリスト(別名plist)ファイルで、次のXML構成が含まれています。

<?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に設定されていることがわかります。


このプロセスは、他のバージョンのOS Xとは少し異なりますが、そのチームによって十分に文書化されています。繰り返しになりますが、このプロセスを文書化してくれたチーム 芭蕉 に感謝します。

8
mbb