Bagaimana cara mengatur ulimits untuk mongod?

8

Bagaimana cara menetapkan ulimit untuk mongodproses / pengguna di CentOS?

Saya sudah membaca dokumentasi resmi tetapi tidak memberikan instruksi khusus OS.

  • Saya perlu mengatur ulimit -u 64000dan membutuhkan ini untuk bertahan setelah reboot.

  • Saya menjalankan CentOS 5.5 meskipun akan segera ditingkatkan menjadi 6.5.

  • Saya lebih suka tidak memodifikasi skrip apa pun yang diinstal oleh manajer paket

Tim
sumber

Jawaban:

12

Ubah /etc/security/limits.confdengan apa yang Anda butuhkan. Contoh:

user soft nproc 64000

Baris ini akan mengatur jumlah prosesor ( -u) ke 64000 untuk "pengguna". Batas lunak / keras bisa sama (lunak memungkinkan paku sementara keras mencegah pemijahan).

Nathan C
sumber
Terima kasih, tetapi setelah melakukan ini dan memulai kembali mongod cat /proc/{pid}/limitstidak menunjukkan perubahan. Apakah ada hal tambahan yang perlu dilakukan untuk memastikan conf dibaca?
Tim
1
Ya, reboot server. Ini diatur oleh kernel.
Nathan C
7

Versi yang lebih baru dari skrip startup mongod CentOS (/etc/init.d/mongod) memiliki pengaturan default yang dibangun ke dalam opsi mulai:

start()
{
  # Recommended ulimit values for mongod or mongos
  # See http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
  #
  ulimit -f unlimited
  ulimit -t unlimited
  ulimit -v unlimited
  ulimit -n 64000
  ulimit -m unlimited
  ulimit -u 32000

  echo -n $"Starting mongod: "
  daemon --user "$MONGO_USER" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1"
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/mongod
}

Jika Anda ingin mengubah nilai dan tidak memodifikasi skrip, salin skrip ke /etc/init.d/mongod-custom, lalu edit skrip init khusus, atur nilai Anda dan ubah chkconfig untuk menggunakan mongod-custom alih-alih mongod.

thaspius
sumber
6

Untuk menambah jawaban thaspius, batas tampaknya ditetapkan saat ia menjelaskan dalam skrip init, tapi saya masih mendapatkan peringatan

[initandlisten] ** WARNING: soft rlimits too low. rlimits set to 1024 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.

Ini tampaknya menunjukkan bahwa batas file yang ditentukan dalam skrip init telah berlaku, tetapi bukan batas proses. Juga mengikuti jawaban dan menambahkan Nathan C

mongod soft nproc 64000

ke /etc/security/limits.d/90-nproc.confdan memulai kembali sistem memecahkan masalah.

Kalau ada yang bisa menjelaskan mengapa itu perlu meskipun memiliki nilai dalam skrip init mongodb aku semua telinga!

pengguna2050789
sumber
sama di sini, mengapa pengaturan "nproc" diabaikan adalah misteri bagi saya.
Ostati
1

Buat perubahan ini di /etc/security/limits.conffile. Tetapkan batas keras dan lunak, dan Anda harus baik.

John
sumber
Saya akan merekomendasikan menggunakan file di dalam /etc/security/limits.d/daripada mengacaukan limits.conffile secara langsung
Joshua Grigonis
1

Agar perubahan terus-menerus Anda harus mengedit skrip de init, misalnya, di Red Hat 7, skrip init memiliki baris berikut:

LimitNOFILE=64000

Anda harus menambahkan yang berikutnya:

LimitNPROC=32000

Kemudian restart layanan.

Saya harap ini membantu.

Ángel Orosa Rodríguez
sumber