MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tại sao MongoDB không phản hồi trong quá trình kiểm tra tải?

Đã sửa nó:

sudo sysctl net.ipv4.tcp_tw_reuse=1

Sau đó, khởi động lại mongo.

Ngoài ra, bạn có thể thêm nó vào /etc/sysctl.conf (vì vậy nó sẽ được chạy khi khởi động lại):

net.ipv4.tcp_tw_reuse=1

Sau đó chạy cái này để tải lại (mà không cần phải khởi động lại)

sudo sysctl -p /etc/sysctl.conf

"Bản sửa lỗi" này sẽ vô hiệu hóa trạng thái chờ thời gian cho các ổ cắm TCP (trên toàn máy chủ). Vì vậy, nó thực sự không phải là một sửa chữa. Tuy nhiên, cho đến khi mongo giảm trạng thái chờ thời gian của chúng bằng cách sử dụng SO_LINGER, một số lượng lớn các ổ cắm máy chủ sẽ tập hợp lại ở trạng thái TIME_WAIT và không sử dụng được cho các kết nối mới. Bạn có thể xem số lượng kết nối trong TIME_WAIT với cái này:

netstat -an | grep TIME_WAIT | wc -l

Với điều đó, tôi có thể thấy nó không thành công ở khoảng 28 nghìn kết nối TIME_WAIT. Sử dụng cờ hạt nhân này:

sysctl net.ipv4.ip_local_port_range="18000 65535"

Máy chủ không thành công ở 45k kết nối. Vì vậy, để tái tạo lỗi dễ dàng hơn, bạn có thể giảm phạm vi xuống 200 hoặc nhỏ hơn.

Vì vậy, kết quả của việc này một câu hỏi lập trình sau cùng (như bạn có thể thấy từ liên kết cuối cùng):

Tùy chọn TCP SO_LINGER (không ) - khi cần thiết

http://alas.matf.bg.ac.rs /manuals/lspe/snode=105.html



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để trả về boolean trong danh mục mongodb

  2. Trình điều khiển C # mongodb 2.0 - Làm thế nào để nâng cấp trong một hoạt động hàng loạt?

  3. MongoDB:xuất 'id' thay vì '_id'

  4. tăng tốc độ tra cứu văn bản ký tự đại diện

  5. Chọn bản ghi phù hợp với giá trị concat của hai trường trong mongodb