File konfigurasi / perintah mana yang mengontrol batas file terbuka pada OS X? Apakah ada perintah berbeda untuk OS X 10.5 / 10.6 / 10.7? Pilihan saya menjelajahi bawah ulimit
, sysctl
danlaunchctl
"Terlalu banyak file terbuka" tampaknya merupakan kesalahan umum pada Leopard, mungkin versi OS X lainnya:
Ada banyak (terkait?) Cara untuk melihat batas file terbuka:
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 2048
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 512
virtual memory (kbytes, -v) unlimited
$ launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data unlimited unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 1024 2048
maxfiles 2048 4096
$ sysctl -a | grep files
kern.maxfiles = 32768
kern.maxfilesperproc = 16384
kern.maxfiles: 32768
kern.maxfilesperproc: 16384
kern.num_files: 2049
Telah diklaim dalam beberapa posting di atas bahwa ini dapat dimodifikasi dengan perintah berikut:
sudo launchctl limit maxfiles 16384 32768
sudo ulimit -n 32768
sudo sysctl -w kern.maxfilesperproc=16384
sudo sysctl -w kern.maxfiles=32768
Namun, dari perintah di atas, hanya sysctl
perintah yang tampaknya memiliki efek (yaitu ulimit -n
dan launchctl limit
tidak menunjukkan perubahan setelah perintah di atas dimasukkan, sementara sysctl -a
tidak menunjukkan perubahan yang diminta).
Lokasi yang sesuai untuk mengubah parameter ini untuk OS adalah:
/etc/sysctl.conf
/etc/launchd.conf
Saya juga menemukan satu jawaban yang berbunyi yang ulimit
hanya mengontrol shell saat ini.
Bagaimana saya bisa menyesuaikan ke atas file maksimum / batas file maksimum terbuka di macOS?
Berikut ini harus menyelesaikan masalah yang paling umum (dan didaftar sesuai urutan hierarki mereka):
Catatan:
sumber
Dengan kata sederhana:
The
ulimit
perintah memberikan "kontrol atas sumber daya yang tersedia untuk shell dan proses menciptakan" (lihat:help ulimit
danman bash
). Sumber daya yang diberikan ke shell dibatasi oleh batas sumber daya sistem.The
launchctl
kontrol maksimum konsumsi sumber daya sistem dengan proses saat ini (lihat:man setrlimit
danman launchctl
). Nilai maksimum dibatasi oleh batas kernel.The
sysctl
kontrol kernel batas (lihat:man sysctl
dan Batas Tuning Kernel BSD ).Untuk menambah batas, Anda dapat menggunakan masing-masing perintah, tergantung masalahnya.
Lihat juga: Apa hubungan antara `launchctl limit` dan` ulimit`?
Untuk masalah dengan terlalu banyak file yang terbuka, ini tergantung pada batas mana yang lunak atau keras telah dicapai (apakah itu skrip shell lokal, skrip global yang dijalankan oleh
root
, aplikasi, atau semua proses pada saat yang bersamaan). Layak untuk meningkatkan semua batasan (batas shell, launchd dan kernel).Untuk meningkatkan batas secara terus-menerus, lihat: Bagaimana cara terus-menerus mengontrol konsumsi sumber daya sistem maksimum pada Mac?
sumber