MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Melacak Penggunaan Memori MongoDB

Memahami penggunaan memori MongoDB sangat penting untuk pengalaman hosting MongoDB yang baik. Untuk kinerja terbaik, sangat penting untuk menyimpan perangkat kerja Anda dalam memori. Saya telah melihat beberapa saran bahwa jika Anda menggunakan solid-state drive (SSD), itu membuat memori menjadi kurang penting. Waktu akses Dynamic Random Access Memory (DRAM) adalah urutan nanodetik, waktu akses SSD adalah urutan mikrodetik, dan waktu akses hard disk adalah urutan milidetik – jadi SSD masih memiliki cara untuk mengejar ketinggalan dengan memori.

MongoDB menggunakan file yang dipetakan memori (MMF) untuk memetakan database ke dalam memori. Data secara berkala dibuang ke disk (jelas mekanismenya jauh lebih rumit, tapi itu topik untuk posting lain).

Setelah server MongoDB Anda aktif dan berjalan, penting untuk memantau dan memahami penggunaan memori. Untuk memantau server MongoDB kami, Anda dapat menggunakan ScaleGrid MongoDB Monitoring Console untuk melihat metrik mendetail tentang kinerja Anda. Jalankan beberapa contoh beban kerja dan buat garis dasar sehingga Anda dapat memahami saat ada sesuatu yang tidak berjalan normal. Berikut adalah empat penghitung penting yang akan membantu Anda memantau penggunaan memori MongoDB Anda:

  1. Memori

    Ini sebenarnya tiga penghitung dalam satu grafik:

    1. Memori Residen

      Ini adalah jumlah sebenarnya dari memori fisik yang digunakan oleh proses MongoDB.

    2. Memori yang Dipetakan

      Ini adalah jumlah memori virtual yang digunakan oleh kemajuan MongoDB untuk memetakan database Anda ke dalam memori. Ini biasanya akan menjadi ukuran database Anda.

    3. Memori Virtual

      Ini termasuk memori virtual untuk seluruh proses MongoDB. Jika Anda mengaktifkan penjurnalan, ini biasanya berukuran dua kali lipat dari memori yang dipetakan.

  2. Memori Virtual yang Tidak Dipetakan

    Ini adalah jumlah memori virtual yang digunakan untuk data pembukuan dan bukan untuk memetakan file data. Misalnya, setiap koneksi menghabiskan sejumlah memori. Biasanya penghitung ini harus cukup rendah – biasanya kurang dari 1 GB.

  3. Kesalahan Halaman

    Ini adalah jumlah kesalahan halaman keras/detik. Jelas Anda ingin angka ini serendah mungkin.

    • Kesalahan Halaman Keras

      Ini dipicu saat halaman yang dimaksud tidak ada dalam memori fisik dan perlu diambil dari disk.

    • Kesalahan Halaman Lunak

      Ini terjadi saat halaman berada di tempat lain dalam memori atau dalam status transisi.

  4. B-tree (Indeks Nona)

    Kehilangan indeks dua kali lebih tidak efisien, karena menyebabkan dua disk membaca, satu membaca entri indeks dan satu lagi membaca dokumen. Penghitung B-tree melacak jumlah indeks yang meleset. Ini adalah tempat lain Anda ingin membuat garis dasar untuk menemukan pola yang tidak biasa. Gunakan perintah .explain() untuk memeriksa rencana kueri untuk kueri umum Anda.

Aspek penting lain dari manajemen memori di MongoDB adalah memahami 'Set kerja' Anda. Di postingan berikutnya, kita akan membahas cara menentukan working set untuk database Anda.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana Trello menyimpan data di MongoDB? (Koleksi per papan?)

  2. MongoDB :Urutan indeks dan urutan kueri harus cocok?

  3. Pengelompokan bersyarat dengan $ada di dalam $cond

  4. Kinerja MongoDB:Menjalankan Agregasi MongoDB Pada Sekunder

  5. MongoDB - Argumen ke $size harus berupa Array, tetapi bertipe:EOO / hilang