Untuk meningkatkan batas FD untuk proses daemon yang berjalan di bawah pengguna tanpa kepala di mesin Linux Ubuntu kami melakukan perubahan berikut di /etc/security/limits.conf
soft nofile 10000
hard nofile 10000
Kami juga menambahkan sesi yang diperlukan pam_limits.so di /etc/pam.d/login. Perubahan mendapat tercermin untuk semua pengguna yang logout dan login lagi. Apa pun proses baru yang dimulai di bawah para pengguna mendapatkan batas FD baru.
Tetapi untuk daemon yang berjalan di bawah pengguna tanpa kepala, perubahan tidak tercermin. apa cara perubahan yang dapat tercermin untuk daemon yang berjalan di bawah pengguna tanpa kepala?
linux
ubuntu-10.04
pam
ulimit
max-file-descriptors
Ameliorator
sumber
sumber
Jawaban:
Masalahnya ada di skrip peluncuran daemon. Itu menggunakan setuidgid untuk menjalankan daemon di bawah pengguna tanpa kepala. Terlihat seperti setuidgid tidak akan menginstal batas sumber daya yang ditetapkan dalam membatasi.conf saat mengubah pengguna / grup untuk proses tersebut. Daemon harus berhati-hati dalam menetapkan batas sumber daya untuk dirinya sendiri melalui skrip peluncurannya. Dengan menetapkan batas FD maksimum untuk sesi saat ini di skrip peluncuran, batas baru dapat direfleksikan untuk daemon. Ini dilakukan dengan memasukkan garis ulimit -n seperti di bawah ini dalam skrip lauching dari daemon.
sumber
Anda dapat membaca / mengatur batas sumber daya dari proses yang berjalan dengan prlimit (1), bagian dari util-linux:
sumber
Mem-boot ulang pasti akan membereskannya. Tapi saya berasumsi Anda ingin menghindarinya. (siapa yang tidak?)
Jadi, Anda perlu HUP proses init. Ini hampir selalu berjalan pada PID 1, tetapi Anda mungkin ingin memeriksa ulang pada sistem Anda. Ini bukan hal yang paling aman untuk dilakukan, tetapi bisa menghindari reboot itu. Jadi, silakan coba ini di kotak tes terlebih dahulu:
kill -HUP 1
sumber
Anda dapat mengatur batas-batas proses yang berjalan menggunakan procfs.
Temukan ID proses yang ingin Anda ubah (dalam hal ini 1234), kemudian jalankan:
Metode ini tidak lagi didukung oleh kernel terbaru. Alternatifnya adalah menggunakan
prlimit
seperti yang disebutkan @nous.sumber
echo: write error: Invalid argument
-n
wajib. Itu akan menekan baris baru.