Cara mendapatkan ukuran set kerja MongoDB saat ini

9

Dari dokter , katanya

"Untuk kinerja terbaik, sebagian besar perangkat aktif Anda harus sesuai dengan RAM."

Jadi misalnya, db.stats()beri saya

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

Nilai yang mana working set size?

Howard
sumber

Jawaban:

9

The Pertanyaan SO / jawaban terkait dengan quanta di komentar benar, "Working set" pada dasarnya adalah jumlah data dan indeks yang akan aktif / digunakan oleh sistem anda.

Anda tidak dapat mengetahui dari db.stats()apa jadinya nanti kecuali Anda berpikir bahwa Anda perlu memiliki seluruh rangkaian data dan seluruh indeks dalam RAM. Artinya, Anda bisa bekerja di luar set kerja maksimum untuk database itu, tetapi tidak set kerja aktif yang sebenarnya. Maksimum adalah jumlah dari:

  1. dataSize - Ukuran total data yang disimpan dalam database ini
  2. indexSize - Ukuran total semua indeks yang dibuat pada database ini

Dalam kasus Anda, maksimum itu akan menjadi sekitar 30,45 MiB mengingat output yang Anda tempel.

Untuk melacak penggunaan memori aktual, saya akan merekomendasikan kombinasi angka-angka dari db.stats()dan grafik memori (khususnya memori penduduk) yang tersedia di alat pemantauan gratis - MMS .

Pembaruan (04/08/2013):

Versi 2.4 menambahkan Pengukur Ukuran Set Kerja ke perintah serverStatus - ini hanya perkiraan, tetapi dapat digunakan sebagai panduan dan untuk memeriksa apakah angka dan estimasi lainnya di atas masuk akal untuk Anda misalnya MongoDB.

Pembaruan (September 2016):

Tiga tahun setelah jawaban asli saya dan banyak hal yang jauh lebih rumit - umumnya mendapatkan ukuran data Anda dan indeks Anda masih merupakan titik awal yang baik. Tapi, mencari tahu hal-hal di MongoDB sekarang akan tergantung pada mesin penyimpanan apa yang Anda gunakan. Selain itu, Versi 3.0 menghapus estimator Perangkat Kerja yang ditautkan di atas untuk MMAP sebagai bagian dari pekerjaan penguncian tingkat koleksi (lihat SERVER-13783 ). Sekarang ada (misalnya) statistik cache untuk WiredTigermesin sebagai pengganti dengan asumsi Anda telah melakukan lompatan ke mesin baru. Sebab MMAP, rekomendasi umum adalah melihat metrik kesalahan halaman sebagai proksi apakah data Anda sesuai dengan memori atau tidak.

Adam C
sumber
Sebenarnya saya MMSsudah menggunakan , tetapi saya tidak yakin angka apa yang harus dilihat.
Howard
Secara umum, angka penduduk pada grafik memori adalah yang paling relevan di sini. Ini akan tumbuh dari waktu ke waktu dan menempati semua RAM yang tersedia (dengan data yang lebih lama diikutkan sesuai kebutuhan untuk data baru yang akan diikutkan) jika kumpulan data Anda secara signifikan lebih besar dari RAM. Jika tidak dan set data cukup statis, ia akan menemukan level yang lebih rendah dan mengarahkan kursor ke sana. Nilai Max yang saya uraikan di atas akan menjadi RAM terbanyak yang diambil oleh basis data individual sebagai bagian dari angka tersebut.
Adam C
1
Perintah serverStatus tidak lagi menyertakan estimasi ukuran set kerja, pada MongoDB 3.0. docs.mongodb.com/manual/reference/command/serverStatus
Vince Bowdren
1
Banyak hal telah berubah dalam 3-4 tahun. Saya telah meninggalkan yang asli dan menambahkan udpate untuk membahas beberapa opsi dalam versi yang lebih baru.
Adam C