MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Śledzenie wykorzystania pamięci MongoDB

Zrozumienie użycia pamięci MongoDB ma kluczowe znaczenie dla dobrego hostingu MongoDB. Aby uzyskać najlepszą wydajność, konieczne jest przechowywanie zestawu roboczego w pamięci. Widziałem kilka sugestii, że korzystanie z dysków półprzewodnikowych (SSD) sprawia, że ​​pamięć jest mniej ważna. Czas dostępu do dynamicznej pamięci o dostępie swobodnym (DRAM) jest rzędu nanosekund, czas dostępu do dysku SSD jest rzędu mikrosekund, a czas dostępu do dysku twardego jest rzędu milisekund – więc dyski SSD wciąż mają sposoby na nadrobienie zaległości z pamięcią.

MongoDB używa plików mapowanych w pamięci (MMF) do mapowania bazy danych na pamięć. Dane są okresowo opróżniane na dysk (oczywiście mechanizm jest dużo bardziej skomplikowany, ale to temat na inny post).

Po uruchomieniu serwera MongoDB ważne jest, aby monitorować i rozumieć wykorzystanie pamięci. Aby monitorować nasze serwery MongoDB, możesz użyć konsoli monitorowania ScaleGrid MongoDB, aby wyświetlić szczegółowe dane dotyczące wydajności. Uruchom kilka przykładowych obciążeń i ustal linię bazową, aby zrozumieć, kiedy coś nie działa normalnie. Oto cztery ważne liczniki, które pomogą Ci monitorować wykorzystanie pamięci MongoDB:

  1. Pamięć

    W rzeczywistości są to trzy liczniki na jednym wykresie:

    1. Pamięć rezydentna

      Jest to rzeczywista ilość pamięci fizycznej używanej przez proces MongoDB.

    2. Pamięć mapowana

      Jest to ilość pamięci wirtualnej używanej przez postęp MongoDB do mapowania bazy danych na pamięć. Zazwyczaj będzie to rozmiar Twojej bazy danych.

    3. Pamięć wirtualna

      Obejmuje to pamięć wirtualną dla całego procesu MongoDB. Jeśli masz włączone księgowanie, będzie to zazwyczaj dwa razy większy rozmiar mapowanej pamięci.

  2. Niemapowana pamięć wirtualna

    Jest to ilość pamięci wirtualnej używanej do danych księgowych, a nie do mapowania plików danych. Na przykład każde połączenie zużywa określoną ilość pamięci. Zwykle ten licznik powinien być dość niski – zwykle mniej niż 1 GB.

  3. Błędy strony

    Jest to liczba twardych błędów strony na sekundę. Oczywiście chcesz, aby ta liczba była jak najniższa.

    • Twardy błąd strony

      Jest to uruchamiane, gdy dana strona nie znajduje się w pamięci fizycznej i musi zostać pobrana z dysku.

    • Miękki błąd strony

      Dzieje się tak, gdy strona znajduje się w innym miejscu pamięci lub znajduje się w stanie przejściowym.

  4. B-drzewo (Pominięcie indeksu)

    Błąd indeksu jest dwukrotnie mniej wydajny, ponieważ powoduje dwa odczyty dysku:jeden odczytuje wpis indeksu, a drugi dokument. Licznik B-drzewa śledzi liczbę chybionych indeksów. To kolejne miejsce, w którym będziesz chciał ustalić punkt odniesienia, aby wykryć wszelkie nietypowe wzory. Użyj polecenia .explain(), aby sprawdzić plany zapytań dla typowych zapytań.

Kolejnym ważnym aspektem zarządzania pamięcią w MongoDB jest zrozumienie swojego „zestawu roboczego”. W naszym następnym poście zbadamy, jak określić zestaw roboczy dla Twojej bazy danych.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Włączanie kompresji danych w MongoDB 3.0

  2. MongoDb:Korzyści z używania ObjectID w porównaniu z ciągiem zawierającym identyfikator?

  3. Jaki jest najlepszy sposób na paginację ajaxową za pomocą MongoDb i Nodejs?

  4. Liczba Mongodb różni się z wieloma polami grupowymi

  5. Przewodnik po wdrożeniu i utrzymaniu MongoDB za pomocą Puppet:część 1