Solusi 1:
Jika proses Anda dimulai melalui skrip, Anda dapat melakukan panggilan ke ulimit dalam skrip sebelum mengeksekusi daemon.
Jika Anda ingin meningkatkan ulimit untuk pengguna Anda, atau untuk semua pengguna, Anda dapat menetapkan batas yang diterapkan melalui pam_limits
saat login. Ini diatur dalam /etc/security/limits.conf
. Dalam kasus Anda, Anda dapat melakukan sesuatu seperti:
* hard nofile 2048
Perhatikan bahwa "keras" menunjukkan batas keras - yang tidak dapat dilampaui, dan tidak dapat diubah. Batas lunak dapat diubah oleh pengguna (mis. seseorang tanpa kemampuan root), tetapi tidak melampaui batas keras.
Baca limits.conf
untuk informasi selengkapnya tentang penggunaan pam_limits
.
Solusi 2:
Ada juga "total max" file terbuka yang diatur di kernel, Anda dapat memeriksa pengaturan saat ini dengan:
cat /proc/sys/fs/file-max
Dan tetapkan nilai baru dengan:
echo "104854" > /proc/sys/fs/file-max
Jika Anda ingin menyimpan konfigurasi di antara reboot, tambahkan
sys.fs.file-max=104854
untuk
/etc/sysctl.conf
Untuk memeriksa penggunaan file maksimum saat ini:
[[email protected] proc]# cat /proc/sys/fs/file-nr
3391 969 52427
| | |
| | |
| | maximum open file descriptors
| total free allocated file descriptors
total allocated file descriptors
(the number of file descriptors allocated since boot)
Solusi 3:
Seperti yang dikatakan orang lain, Anda dapat menerapkan batasan khusus per pengguna atau grup di /etc/security/limits.conf.
Catatan:ulimit -n menunjukkan batas lunak.
ulimit -H -n
akan menunjukkan kepada Anda batas keras.
Hal ini membuat keluaran ulimit -a dan ulimit -n cukup membingungkan jika misalnya, Anda menaikkan jumlah file dari 1024 menjadi 4096, seperti yang Anda harapkan untuk melihat keluaran hard limit, tetapi Anda masih melihat 1024 yang merupakan soft batas.
Juga, ingatlah bahwa batasan ini diberlakukan per login, jadi login ulang di shell baru dan periksa perubahan Anda, jangan berharap itu disebarkan ke login yang ada.
Solusi 4:
Ketahuilah bahwa jika Anda menjalankan proses dengan pengaturan start-stop-daemon ulimit di /etc/security/limits.conf tidak berfungsi. Misalnya, jika Anda ingin menaikkan batas file terbuka untuk Tomcat menjadi 20000, Anda perlu menambahkan ini ke baris /etc/default/tomcat
:
ulimit -Hn 32768
ulimit -Sn 32768
Saya mengalami masalah ini pada debian 6.0.4Untuk proses lain, jawaban yang diberikan akan membantu.