「ulimit -n」の制限を適切に増やす方法は?


8

X-Plane 10 DemoをuTorrent からダウンロードしようとしていますが、「開いているファイルが多すぎます」というエラーが常に表示されます。代替ダウンロードを行うことはできますが(これには永遠に1日かかります)、Lionの設定をどのように増やすことができますか?

私はそれについて矛盾する情報を見つけました。一部の人はそれを選択するツールであるulimit -nと言い、sysctl他の人launchctlはそれが正しいと報告しています。

報告された値ulimit -nは256で、同じですlaunchctl limit

cpu         unlimited      unlimited      
filesize    unlimited      unlimited      
data        unlimited      unlimited      
stack       8388608        67104768       
core        0              unlimited      
rss         unlimited      unlimited      
memlock     unlimited      unlimited      
maxproc     709            1064           
maxfiles    256            unlimited      

回答:


6

以下はほとんどのソリューションを解決するはずです(そしてそれらの階層の順にリストされています):

echo 'kern.maxfiles=20480' | sudo tee -a /etc/sysctl.conf
echo -e 'limit maxfiles 8192 20480\nlimit maxproc 1000 2000' | sudo tee -a /etc/launchd.conf
echo 'ulimit -n 4096' | sudo tee -a /etc/profile

ノート:

  1. これらの変更を有効にするには、再起動する必要があります。
  2. 私の知る限り、OS Xで制限を「無制限」に設定することはできません
  3. launchctl maxfilesはsysctl maxfilesによって制限されているため、それらを超えることはできません
  4. sysctlはlaunchctl maxfilesからkern.maxfilesperprocを継承しているようです
  5. ulimitはデフォルトでlaunchctlから「ファイルを開く」値を継承しているようです
  6. / etc / profileまたは〜/ .profile内でカスタムulimitを設定できます。これは必須ではありませんが、例を提供しました
  7. これらの値をデフォルトと比較して非常に高い値に設定する場合は注意してください-機能には安定性/セキュリティがあります。私は、他のウェブサイトに書かれた、合理的であると信じるこれらの数値例を取り上げました。
  8. launchctlの制限がsysctlの制限より低い場合、relevent sysctlの制限が要件を満たすために自動的に増加するという報告がありました。

1

ulimit -n 1024コマンドラインからuTorrentを実行して起動することにより、開くファイルの最大数を増やすことができます。私の場合、次のコマンドを使用してTransmissionを起動します。

/Applications/Transmission.app/Contents/MacOS/Transmission

ulimitを起動したシェルからtorrentアプリケーションを起動する必要があります。そうしないと、変更は効果がありません。変更を分離することはulimitの利点です。


最大ulimit -nで(10240)を設定できても同じエラーが発生します。(
Michael Stum

しかしulimit、次の再起動のためにマシンの値を変更するにはどうすればよいですか?
-Cheeso

1

基本的ulimitに、シェルとそのプロセスで使用可能なlaunchctlリソースを制御します。ここでは、システムとそのプロセスの最大リソースを制御します。

現在のシェルでは、次の方法で最大オープンファイルの制限を変更できますulimit -n 10240

注:-Sソフト-H制限またはハード制限に追加のパラメーターを使用できます。

シェル制限を変更できない場合、launchctl最初にコマンドを使用する必要があります。例えば

sudo launchctl limit maxfiles 10240 unlimited

カーネルの制限を変更するには、次を実行しますsudo sysctl -w kern.maxfiles=10240

参考文献:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.