Saya baru-baru ini memeriksa salah satu proses redis kami untuk mengetahui berapa banyak ulimit mana diterapkan menggunakan
cat /proc/<redis-pid>/limits
Dan terkejut mengetahui bahwa itu berada pada nilai standar rendah:
Limit Soft Limit Hard Limit
Max open files 4016 4016
Saya terkejut, karena kami memiliki konfigurasi berikut:
# /etc/sysctl.conf
fs.file-max = 100000
.
# /etc/security/limits.conf
* soft nofile 100000
* hard nofile 100000
.
# /etc/ssh/sshd_config
UsePAM yes
.
# /etc/pam.d/sshd
session required pam_limits.so
Adakah yang bisa memberi tahu saya mengapa peningkatan ulimit tidak diterapkan pada proses redis yang sedang berjalan?
Proses redis berjalan sebagai pengguna 'redis', server telah di-reboot sejak batasnya ditingkatkan. Kami berada di Debian Squeeze.
Parameter sysctl fs.file-max adalah batas sistem global yang luas, saya tidak berpikir itu adalah ide yang bagus dalam pengaturan nilai yang sama.
Jika Anda mengatur di ulimit 100000 dan juga di sysctl.conf 100000, satu pengguna dapat memblokir sistem
Bagaimanapun, berbicara tentang masalah Anda, Anda harus yakin, sistem Anda menggunakan pam_limits
sumber
Anda telah mengaktifkan pam_limits untuk sshd, tetapi apakah perintah ini dijalankan dari sesi SSH? Anda mungkin perlu menambahkan baris yang sama ke
/etc/pam.d/login
dan / atau/etc/pam.d/su
dan / atau/etc/pam.d/sudo
.sumber
if start-stop-daemon --start --quiet --umask 007 --pidfile $PIDFILE --chuid redis:redis --exec $DAEMON -- $DAEMON_ARGS
. Pam mana yang cocok untuk kasus ini?su [user] -c
perintah untuk memulai skrip sebagai pengguna lain, atau apakah program Anda berjalan sebagai root? Jika menggunakansu
, maka Anda akan memasukkannya/etc/pam.d/su
. Jika Anda menjalankan sebagairoot
, Anda mungkin lebih baik dengan saran c4f4t0r untuk menambahkanulimit
perintah dalam skrip init Anda.root
diizinkan untuk menetapkan batas apa pun yang diinginkannya, sehingga Anda tidak perlu khawatir tentang pam untuk kasus itu.--chuid redis:redis
padastart-stop-daemon
. Saya telah menambahkan ulimit ke skrip startup sekarang.