Yosemiteのmaxfile制限とmaxfileperproc制限を上げようとしてきましたが、運がありませんでした。 etcフォルダーにsysctl.confファイルを作成しました。これにより、grepを介して表示されたときに値が正常に増加しました。
ただし、launchctl limit maxfilesを見ると、値はまだ正しくありません。
一部のソリューションでは、ulimit -nを使用して制限を設定しているように見えますが、ターミナルでは実際には使用できません。 「引数が無効です」または「不正な操作」というエラーが表示されます。 bash_profileスクリプトを使用してulimitを正常に増やしましたが、アプリケーションはシェルではなくアプリケーションから実行されるため、関係ありません。また、rootユーザーを介してulimitを正常に増やしましたが、ログアウトすると、変更は保存されません。
理想的には、launchd.confファイルと同じように機能し、再起動時にlaunchctl limit maxfiles {#}を自動的に増やすものを探しています。
これを成功させる方法はありますか?たぶん、Lingonのようなサードパーティを使用しているのでしょうか、それとも起動デーモンを使用しているのでしょうか。
ありがとう!
芭蕉の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
を実行して手動で適用できます。
これらの制限をシステムレベルで設定することに加えて、bashrc
、bashprofile
、または類似のファイルに次の行を追加して、セッションレベルでも設定することをお勧めします。
ulimit -n 65536
ulimit -u 2048
Plistファイルと同様に、bashrc
または同様のファイルには-rw-r--r--
権限が必要です。この時点で、コンピュータを再起動して、ターミナルにulimit -n
と入力できます。システムが正しく構成されている場合は、maxfilesが65536に設定されていることがわかります。
このプロセスは、他のバージョンのOS Xとは少し異なりますが、そのチームによって十分に文書化されています。繰り返しになりますが、このプロセスを文書化してくれたチーム 芭蕉 に感謝します。