Sebelum Mavericks, saya dapat menggunakan /etc/launchd.conf
file untuk mengubah konsumsi sumber daya sistem maksimum, misalnya:
limit maxfiles 16384 unlimited
limit maxproc 16384 unlimited
Tidak lagi berfungsi di Mavericks.
Apa cara yang benar untuk melakukannya di OS X versi terbaru?
/etc/sysctl.conf
, tidak/etc/sysctrl.conf
.sudo serverinfo --setperfmode true
satu kali untuk memasukkan mesin Anda ke "Server Performance Mode". Kemudian, Anda memiliki "maksimum yang lebih tinggi", tergantung pada konfigurasi mesin Anda. Silakan lihat posting saya di diskusi.apple.com/thread/5166397 untuk detailnya. Untuk 10.10 (Yosemite), mode aktif secara default (setidaknya di mesin saya!). Lihat jawaban saya di bawah ini.Jawaban:
Batas Sesi Shell
Batas yang ditetapkan melalui
ulimit
hanya memengaruhi proses yang dibuat oleh sesi shell saat ini.root
(administrator) dengan menjalankan perintah konfigurasi sistem atau memodifikasi file konfigurasi sistem.Setelah Anda mengakhiri sesi shell (oleh Ctrl+ D,
exit
atau menutupTerminal.app
jendela, dll), pengaturan hilang. Jika Anda ingin pengaturan yang sama di sesi shell berikutnya, tambahkan pengaturan ke skrip startup shell.CATATAN: Jika Anda menggunakan
bash
, maka seharusnya~/.bash_proile
atau~/.bash_login
. Jika Anda menggunakan kerang lain, mungkin harus~/.profile
.Batas Sistem (Memerlukan Reboot untuk Berfungsi)
Untuk 10.9 (Mavericks), 10.10 (Yosemite), 10.11 (El Capitan), dan 10.12 (Sierra):Anda harus membuat file di
/Library/LaunchDaemons/limit.maxfiles.plist
(pemilikroot:wheel
:, mode:)0644
:Anda harus mengubah angka sesuai dengan kebutuhan Anda. Mereka adalah "batas lunak" (
Untuk 10.8 (Singa Gunung):262144
) dan adalah "batas keras" (524288
) masing-masing. Untuk informasi lebih lanjut, lihat halaman buku panduan dengan menjalankanman launchd.plist
.Anda dapat menambahkan baris berikut ke
/etc/sysctl.conf
(pemilikroot:wheel
:, mode:)0644
:Anda harus mengubah angka sesuai dengan kebutuhan Anda. Mereka adalah "batas sistem-lebar" (
Untuk Mac OS X yang lebih lama (saya kira itu berfungsi pada 10.7 (Lion) atau sebelumnya):kern.maxfiles
) dan "batas per-proses" (kern.maxfilesperproc
) masing-masing. Untuk pengaturan lebih lanjut, lihat halaman manual dengan menjalankanman sysctl
, atau membaca kode sumber di/usr/include/sys/sysctl.h
.Anda dapat menambahkan baris berikut ke
/etc/launchd.conf
(pemilikroot:wheel
:, mode:)0644
:Anda harus mengubah angka sesuai dengan kebutuhan Anda. Mereka adalah "batas lunak" (
Jika sistem tidak membiarkan Anda menetapkan batas di atas nilai tertentu ...262144
) dan adalah "batas keras" (524288
) masing-masing.Sistem tidak membiarkan Anda menetapkan nilai lebih tinggi dari "maksimum keras" (diusulkan oleh Apple). Untuk meningkatkan "hard maksimal" ini, Anda harus membeli "OS X Server" dari "App Store", maka Anda harus menjalankan perintah berikut sekali:
Ini mengaktifkan "mode kinerja server" pada mesin Anda. Anda kemudian dapat mengatur maksimum sesuai dengan konfigurasi mesin Anda (lihat ini) . Saya mencoba ini sebelumnya (di Gunung dan Mavericks) dan berhasil! Silakan lihat posting saya (di sini ) untuk informasi lebih lanjut.
Referensi
sumber
/etc/launchd.conf
pendekatan yang menunjukkan efek ketika saya menjalankanulimit -n
. Bisakah seseorang memperbarui instruksi jika ini penting?/etc/sysctl.conf
: superuser.com/questions/827984/…Tampaknya membuat file
/etc/launchd.conf
dan menempatkan perintah Anda di dalamnya harus melakukan trik.Jika tidak berhasil, Anda mungkin dapat mengedit atau membuat
/etc/rc.local
file dan menambahkan perintah di dalamnya karena ada sedikit kemungkinan bahwa Apple akan pernah menghapus dukungan untuk batas pada baris perintah.Sunting 1 :
Seharusnya saya mulai dengan itu,
launchd
halaman manual merujuk file-file berikut:Taruhan saya adalah bahwa Anda sekarang harus memasukkan perintah baik di dalam
~/Library/LaunchAgents
atau di/Library/LaunchDaemons
.Anda harus mencoba keduanya.
Sunting 2 :
Perlu diketahui juga bahwa launchd membutuhkan file xml dan bukan hanya skrip. seorang gui telah ditunjuk untuk membantu dalam tugas semacam itu yang tidak bebas adalah Lingon . Mungkin ada produk gratis lain.
sumber
/etc/launchd.conf
dan/etc/rc.local
diabaikan pada 10.10 dan yang lebih baru, karena pada 10.10 launchd dirancang ulang dan SystemStarter dihapus.Saya baru saja menambahkan dua baris ini dalam
.bash_profile
karya saya seperti pesona
sumber
ulimit -n -H
. Pada macOS High Sierra hal ituunlimited
sangat mengubah batas "lunak" pengguna dalam.bash_profile
melakukan trik.Batas sistem
Mengubah batas dalam
/etc/launchd.conf
atau/etc/rc.local
tidak lagi didukung untuk macOS terbaru. Lihat: Sistem dan Teknologi Lama .Sebagai gantinya, Anda harus membuat agen peluncuran baru .
Berikut adalah contoh
PlistBuddy
perintah menggunakan perintah (lihatman PlistBuddy
:):Dan serupa untuk
maxproc
batas:Untuk memuat file di atas, jalankan:
sudo launchctl load /Library/LaunchAgents/com.launchd.*.plist
.Catatan:
cat
atauPlistBuddy -x -c Print /Library/LaunchAgents/com.launchd.maxfiles.plist
.tail -f /var/log/system.log
.launchd
batas, jalankan:launchctl limit
..plist
File dapat ditempatkan dalam per-user atau folder agen seluruh sistem (LaunchAgents
). Lihat:man launchd
danman launchd.plist
, atau ini atau itu jawaban untuk lebih jelasnya.Batas kernel
Harap dicatat bahwa batasan sistem Launchd di atas masih dibatasi oleh kernel, jadi Anda tidak dapat menetapkannya lebih tinggi dari batas aktual yang ditetapkan dalam variabel status kernel (lihat:
man sysctl
untuk bantuan).Untuk melihat batas kernel saat ini, jalankan:
sysctl -a | grep ^kern.max
.Untuk meningkatkan
maxfiles
batas, jalankan:sudo sysctl -w kern.maxfiles=20480
.Untuk membuatnya tetap ada, gunakan metode serupa untuk membuat
.plist
file startup , misBatas shell
Untuk batas shell, tambahkan
ulimit
perintah yang relevan ke dalam~/.bashrc
atau~/.bash_profile
file startup untuk pengguna individu, atau/etc/bashrc
untuk semua pengguna. Lihat: Bagaimana cara menambahkan pengaturan ulimit shell yang ada di Mac?Baris yang disarankan untuk ditambahkan:
sumber
maxproc
karena secara default batas kernel keras pada parameter tersebut adalah 1064, yang berarti mengaturnya ke 2000 atau "tidak terbatas" sebenarnya hanya menetapkannya ke 1064. Sayangnya, kernel tidak memaksakan itumaxprocperuid < maxproc
, dan pengaturan yang Anda sarankan akan meninggalkan sistem denganmaxprocperuid=2000
danmaxproc=1064
mana yang berbahaya. Baca lebih lanjut di sini .