Chúng tôi đã sử dụng MongoDB trong vài tuần nay, xu hướng chung mà chúng tôi thấy là mongodb đang sử dụng quá nhiều bộ nhớ (nhiều hơn toàn bộ kích thước của tập dữ liệu + chỉ mục của nó).
Tôi đã đọc qua câu hỏi này và câu hỏi này , nhưng dường như không ai giải quyết được vấn đề mà tôi đang gặp phải, họ thực sự đang giải thích những gì đã được giải thích trong tài liệu.
Sau đây là kết quả của htop và hiển thị các lệnh dbs .
Tôi biết rằng mongodb sử dụng IO được ánh xạ bộ nhớ, vì vậy về cơ bản, HĐH xử lý các bộ nhớ đệm trong bộ nhớ và mongodb về lý thuyết nên loại bỏ bộ nhớ đệm của nó khi một tiến trình khác yêu cầu bộ nhớ trống , nhưng từ những gì chúng ta đã thấy, thì không.
OOM bắt đầu giết chết các quá trình quan trọng khác, ví dụ như postgres, redis, v.v. (Có thể thấy, để khắc phục vấn đề này, chúng tôi đã tăng RAM lên tới 183GB, hiện hoạt động nhưng khá tốn kém. gần gấp 4 lần kích thước của toàn bộ tập dữ liệu của nó)
Vì thế,
- Đây có phải là sử dụng nhiều bộ nhớ thực sự mong đợi và bình thường? (Theo tài liệu, WiredTiger sử dụng tối đa ~ 60% RAM cho bộ nhớ cache, nhưng xem xét kích thước tập dữ liệu, liệu nó có đủ dữ liệu để có thể lấy 86GB RAM không?)
- Ngay cả khi việc sử dụng bộ nhớ được mong đợi, tại sao mongo sẽ không bỏ bộ nhớ được phân bổ trong trường hợp một quá trình khác bắt đầu yêu cầu thêm bộ nhớ? Nhiều quá trình chạy khác đã liên tục bị giết bởi linux oom, bao gồm cả mongodb, trước khi chúng tôi tăng RAM và nó làm cho hệ thống hoàn toàn không ổn định.
Cảm ơn !