Làm thế nào để thiết lập ulimits cho mongod?


8

Làm cách nào để đặt ulimits cho mongodquy trình / người dùng trên CentOS?

Tôi đã đọc tài liệu chính thức nhưng nó không cung cấp hướng dẫn cụ thể cho hệ điều hành.

  • Tôi cần phải thiết lập ulimit -u 64000và cần điều này để tiếp tục sau khi khởi động lại.

  • Tôi đang chạy CentOS 5.5 mặc dù sẽ sớm nâng cấp lên 6.5.

  • Tôi không muốn sửa đổi bất kỳ tập lệnh nào được cài đặt bởi trình quản lý gói

Câu trả lời:


12

Sửa đổi /etc/security/limits.confvới những gì bạn cần. Thí dụ:

user soft nproc 64000

Dòng này sẽ đặt số lượng bộ xử lý ( -u) thành 64000 cho "người dùng". Giới hạn mềm / cứng có thể giống nhau (mềm cho phép tăng đột biến trong khi cứng ngăn ngừa sinh sản).


Cảm ơn, nhưng sau khi làm điều này và khởi động lại mongod cat /proc/{pid}/limitscho thấy không có thay đổi. Có một cái gì đó bổ sung cần phải được thực hiện để đảm bảo conf được đọc?
Tim

1
Có, khởi động lại máy chủ. Nó được thiết lập bởi kernel.
Nathan C

7

Phiên bản mới hơn của tập lệnh khởi động CentOS mongod (/etc/init.d/mongod) có các cài đặt mặc định được tích hợp trong tùy chọn bắt đầu:

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
}

Nếu bạn muốn thay đổi giá trị và không sửa đổi tập lệnh, hãy sao chép tập lệnh sang /etc/init.d/mongod-custom, sau đó chỉnh sửa tập lệnh init tùy chỉnh, đặt giá trị của bạn và thay đổi chkconfig để sử dụng mongod-custom thay vì mongod.


6

Để thêm vào câu trả lời của thaspius, các giới hạn dường như được đặt ra như anh mô tả trong tập lệnh init, nhưng tôi vẫn nhận được cảnh báo

[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.

Điều này dường như gợi ý rằng các giới hạn tệp được xác định trong tập lệnh init đã có hiệu lực, nhưng không giới hạn các quy trình. Cũng theo câu trả lời của Nathan C và thêm

mongod soft nproc 64000

để /etc/security/limits.d/90-nproc.confvà khởi động lại hệ thống đã giải quyết vấn đề.

Nếu bất cứ ai cũng có thể làm sáng tỏ lý do tại sao điều đó là cần thiết mặc dù có các giá trị trong tập lệnh initodb là tất cả tai tôi!


tương tự ở đây, tại sao cài đặt "nproc" bị bỏ qua là một điều sai lầm đối với tôi.
Ostati

1

Thực hiện thay đổi này trong /etc/security/limits.conftập tin. Đặt giới hạn cứng và mềm, và bạn nên làm tốt.


Tôi khuyên bạn nên sử dụng các tệp bên trong /etc/security/limits.d/thay vì nhắn limits.conftin trực tiếp vào tệp
Joshua Grigonis

1

Để thay đổi được duy trì liên tục, bạn phải chỉnh sửa tập lệnh de init, ví dụ, trong Red Hat 7, tập lệnh init có dòng sau:

LimitNOFILE=64000

Bạn phải thêm cái tiếp theo:

LimitNPROC=32000

Và sau đó khởi động lại dịch vụ.

Tôi hi vọng cái này giúp được.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.