Cách lấy kích thước bộ làm việc hiện tại của MongoDB


9

Từ tài liệu , nó nói

"Để có hiệu suất tốt nhất, phần lớn bộ hoạt động của bạn phải phù hợp với RAM."

Vì vậy, ví dụ, tôi db.stats()cho tôi

{
"db" : "mydb",
"collections" : 16,
"objects" : 21452,
"avgObjSize" : 768.0516501957859,
"dataSize" : 16476244,
"storageSize" : 25385984,
"numExtents" : 43,
"indexes" : 70,
"indexSize" : 15450112,
"fileSize" : 469762048,
"ok" : 1
}

Giá trị nào là working set size?


Câu trả lời:


9

Câu hỏi / câu trả lời SO được liên kết bởi lượng tử trong các nhận xét là chính xác, "Tập làm việc" về cơ bản là lượng dữ liệu VÀ các chỉ mục sẽ được hệ thống của bạn kích hoạt / sử dụng.

Bạn không thể biết db.stats()đó là gì trừ khi bạn nghĩ rằng bạn sẽ cần phải có toàn bộ tập hợp dữ liệu và toàn bộ chỉ mục trong RAM. Nghĩa là, bạn có thể tìm ra bộ làm việc tối đa cho cơ sở dữ liệu đó, nhưng không phải là bộ làm việc hoạt động thực tế. Tối đa là tổng của:

  1. dataSize - Tổng kích thước của dữ liệu được giữ trong cơ sở dữ liệu này
  2. indexSize - Tổng kích thước của tất cả các chỉ mục được tạo trên cơ sở dữ liệu này

Trong trường hợp của bạn, mức tối đa đó sẽ vào khoảng 30,45 MiB với đầu ra bạn đã dán.

Để theo dõi việc sử dụng bộ nhớ thực tế, tôi sẽ đề xuất kết hợp các số liệu từ db.stats()và biểu đồ bộ nhớ (đặc biệt là bộ nhớ lưu trú) có sẵn trong công cụ giám sát miễn phí - MMS .

Cập nhật (04/08/2013):

Phiên bản 2.4 đã thêm Công cụ ước tính kích thước bộ làm việc vào lệnh serverStatus - đây chỉ là ước tính, nhưng nó có thể được sử dụng làm hướng dẫn và kiểm tra xem các số liệu và ước tính khác ở trên có hợp lý với cá thể MongoDB của bạn không.

Cập nhật (tháng 9 năm 2016):

Ba năm kể từ câu trả lời ban đầu của tôi và mọi thứ phức tạp hơn nhiều - nói chung là việc thu được kích thước dữ liệu của bạn và các chỉ mục của bạn vẫn là điểm khởi đầu tốt. Nhưng, việc tìm ra mọi thứ trong MongoDB bây giờ sẽ phụ thuộc vào công cụ lưu trữ mà bạn đang sử dụng. Ngoài ra, Phiên bản 3.0 đã loại bỏ công cụ ước tính Bộ làm việc được liên kết ở trên cho MMAP như một phần của công việc khóa cấp độ bộ sưu tập (xem SERVER-13783 ). Hiện tại (ví dụ) thống kê bộ đệm cho WiredTigercông cụ thay thế giả định rằng bạn đã thực hiện bước nhảy sang công cụ mới. Đối với MMAP, khuyến nghị chung là xem số liệu lỗi trang như một proxy để xem liệu dữ liệu của bạn có phù hợp với bộ nhớ hay không.


Trên thực tế tôi đang sử dụng MMS, nhưng tôi không chắc chắn để xem con số nào.
Howard

Nói chung, con số cư trú trên biểu đồ bộ nhớ là phù hợp nhất ở đây. Nó sẽ phát triển theo thời gian và chiếm tất cả RAM có sẵn (với dữ liệu cũ được phân trang khi cần để dữ liệu mới được phân trang) nếu bộ dữ liệu của bạn lớn hơn đáng kể so với RAM. Nếu không và tập dữ liệu khá tĩnh, nó sẽ tìm mức thấp hơn và di chuột đến đó. Giá trị tối đa tôi phác thảo ở trên sẽ là RAM nhiều nhất mà một cơ sở dữ liệu riêng lẻ sẽ chiếm một phần trong hình đó.
Adam C

1
Lệnh serverStatus không còn bao gồm ước tính kích thước tập làm việc, kể từ MongoDB 3.0. docs.mongodb.com/manual/reference/command/serverStatus
Vince Bowdren

1
Mọi thứ đã thay đổi rất nhiều trong 3-4 năm. Tôi đã để lại bản gốc và thêm một udpate để bao gồm một số tùy chọn trong các phiên bản mới hơn.
Adam 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.