Saya perlu, agar mysql menggunakan halaman-halaman besar, untuk menetapkan sebuah ulimit - Saya telah melakukan ini di membatasi.conf. Namun, membatasi.conf (pam_limits.so), tidak bisa dibaca untuk init, hanya untuk shell "nyata". Saya memecahkan ini sebelumnya dengan menambahkan "ulimit -l" ke fungsi awal skrip init. Saya perlu semacam cara yang berulang untuk melakukan ini, sekarang kotak-kotak dikelola dengan koki, dan kami tidak ingin mengambil alih file yang sebenarnya dimiliki oleh RPM.
18
Jawaban:
4 langkah dapat segera mengubah batas sistem Anda, dan masih dapat berfungsi setelah reboot. Anda dapat mengubah angka "102400" menjadi jumlah file terbuka maks di sistem linux seperti yang Anda inginkan. dan
memuat pengaturan sysctl dari file yang ditentukan atau /etc/sysctl.conf jika tidak ada yang diberikan.
sumber
*
tidak berfungsi untukroot
pengguna, Anda harus menentukanroot
secara eksplisit .../etc/sysctl.conf harus dapat mengatur item ulimits. Saya belum bisa menguji ini dengan baik tetapi survei mengatakan Anda harus bisa berhenti setelah diatur di sysctl.conf.
Saya telah menemukan berbagai topik yang menunjukkan bahwa ini masih merupakan masalah dan tim saya dan saya telah membahas beberapa opsi untuk hal ini, kami telah menemukan dua solusi potensial.
Opsi 1: Sebagian besar sumber skrip init / etc / init.d/functions, Anda dapat mengubah pengaturan ulimit di sana
Opsi 2: init mengklaim bahwa / etc / initcript bersumber setiap kali sebelum init memunculkan apa pun yang dilihat: http://linux.die.net/man/5/initscript . Cukup menarik mereka mengatakan di mana orang dapat mengatur ulimit =)
sumber
Cuplikan resep lengkap berdasarkan url ini:
Cuplikan resep:
sumber
Solusi saya hanya melakukan ini dalam resep koki kami:
Ini menyebabkan
ulimit -l
pengaturan untuk semua skrip init, yang mungkin tidak diinginkan di beberapa lingkungan, tetapi baik untuk tambang.Di dunia yang sempurna, saya akan mendapatkan RPM yang diperbarui untuk menyertakan a
/etc/sysconfig/mysqld
, dan menempatkan perintah -l-ulimit yang sama di sana.sumber
Tidak yakin seberapa spesifik distro ini, tapi saya baru saja memasukkan peningkatan batas keamanan dengan menggunakan
/etc/security/limits.d/20-somefile.conf
di Ubuntu.Daripada harus memodifikasi file yang ada, saya memiliki template ERB di buku masak saya, mengatur atribut default dalam file atribut dan kemudian tidak perlu khawatir tentang menggunakan blok ruby dengan hal-hal "insert_line_if_no_match" - yang tampaknya sedikit lebih rumit dan resepnya sedikit lebih mudah dibaca seperti ini:
dan kemudian ini adalah file templat saya:
sumber
menurut halaman manual, ulimit sudah tidak digunakan lagi. Anda perlu menggunakan setrlimit. Masalahnya adalah itu adalah panggilan sistem bukan perintah bash.
Saya punya masalah dengan atasan dan inilah yang saya temukan. Jika proses tidak memiliki file konfigurasi yang memungkinkan Anda melakukan panggilan ke setrlimit () panggilan sistem. Atur dengan ulimit pada skrip bash /etc/init.d. Itulah skrip layanan yang memulai proses Anda.
Jika proses memiliki file konfigurasi, seperti supervisor d maka Anda dapat menggunakan file konfigurasi tersebut untuk mengatur jumlah file dan meminta proses membuat panggilan langsung ke setrlimits ().
Supervisor: http://supervisord.org/configuration.html#supervisord-section-settings
TomcaT: http://www.jayway.com/2012/02/11/how-to-really-fix-the-too-many-open-files-problem-for-tomcat-in-ubuntu/
sumber
Cara RedHat, seperti dijelaskan dalam artikel 253043 (diperlukan berlangganan) adalah dengan menambahkan pernyataan ulimit yang sesuai
/etc/sysconfig/<service name>
. Sebagai contoh:(Gunakan file yang ada untuk layanan Anda, bukan myServiceName.)
Untuk daemon yang dimulai tanpa menggunakan skrip RedHat "sysconfig", Anda perlu menambahkan baris ulimit yang sesuai ke skrip startup daemon.
sumber
Coba atur itu di file /etc/sysctl.conf
sumber
Saya benar-benar menulis buku masak koki pribadi yang digunakan untuk mengatur ulimit untuk kami dan itu bekerja dengan cukup baik. Untuk ubuntu, kami menemukan trik berikut diperlukan jika Anda menginginkan pengaturan global ulimit:
Tambahkan yang berikut ke sesi umum Anda:
dan dalam limit.conf Anda harus memiliki yang berikut:
Bagian root penting karena tampaknya tanpa beberapa skrip init tidak akan berfungsi dengan benar. Jadi kami memiliki buku masak koki yang menyiapkan yang berikut ini dan berfungsi dengan baik.
Opsi lain yang biasa kami gunakan untuk Tomcat adalah untuk menyebarkan Tomcat dan kemudian menimpa skrip init dengan kebiasaan yang akan kami atur ulimit untuk dan restart tomcat. Ini berfungsi dengan baik tetapi sedikit lebih meretas daripada yang pertama.
Saya harap bantuan ini, dan mungkin suatu hari nanti saya dapat membuka sumber buku masak yang kami miliki secara internal karena sangat sederhana tapi mungkin dapat membantu orang lain seperti Anda.
sumber