2012-11-23 12 views
5

robię jakiś profilowania na MongoDB użyciu mongostat i mongotopustne Mongostat i Mongotop wyjście

biegnę mongotop:

$> mongotop 30 

i mongostat prostu:

$> mongostat 

Wyjścia są:

Mongotop:

    ns  total  read  write  2012-11-23T01:32:37 
      sapi.Socket  1222ms  1222ms   0ms 
     sapi.ChargeSpot  999ms  999ms   0ms 

Mongostat:

insert query update delete getmore command flushes mapped vsize res faults   locked db idx miss %  qr|qw ar|aw netIn netOut conn  set repl  time 
    0 5351  0  0  0  1  0 608m 3.67g 64m  0   sapi:0.0%   0  0|0  1|0 569k  1m 63 capi-rs PRI 12:32:41 
    0 4189  0  0  0  1  0 608m 3.67g 64m  0 knightsbridge:0.0%   0  0|0  0|0 499k 308k 63 capi-rs PRI 12:32:42 

Pytania:

  • Na wyjściu mongotop, bo prowadził ją zgłosić na 30-sekundowych odstępach , czy np Łączna sapi.Socket z 1222ms czyta oznaczać, że:

    w drugim przedziale 30, 1222ms spędzony wykonywania zapytań odczytać z sapi.Socket zbiórki

    co oznaczałoby, że w ciągu 30 sekund, Mongo był tylko zajęty dla 2,221ms (1,222ms + 999ms) obsługa zapytań do odczytu, innymi słowy, Mongo było nieaktywne przez pozostałe 27 sekund?

  • Dla wyjścia mongostat to wygląda Mongo jest obsługa około 5K zapytań na sekundę, jest to nieco popychając Mongo Mongo lub jest w stanie znacznie więcej? kwerendy są podstawowe (sprawdzanie przez indeksowany klucz)
+1

patrząc na mongostat nie pchają tę instancję Mongo w ogóle. Na innym serwerze lub z innymi danymi limity mogą być bardzo różne. –

+0

Czy moja interpretacja jest poprawna? że mongo był zajęty pytaniem lub 3 sekundy i bezczynny przez pozostałe 27 sekund? – Dzhu

+0

@Dzhu, +1 do tego, co powiedział Asya Kamsky: baza danych Mongo używana w moim miejscu pracy zwykle pobiera około 12.000 zapytań na sekundę. Nie zacznę się martwić, jeśli nie zaczniesz regularnie przeglądać około 15 000 zapytań. –

Odpowiedz

2

Wszystkie dane operacji na sekundę będą relatywną miarą dla konfiguracji określonego serwera i architektury klastra. Jednak nie przesyłasz Mongo z pytaniami 5k.

Bezpłatnym narzędziem do użycia jest profiler DB. Profiler przechwyci wszystkie operacje w tym przypadku do kolekcji systemowej o nazwie system.profile. Następnie możesz uzyskać więcej wglądu w poszczególne zapytania i ich skuteczność.

// przykładowa diagnostyka dla operacji tylko kwerendy, bez wstawiania lub usuwania lub poleceń, względem // DB o nazwie dfl i kolekcji o nazwie test.

db.system.profile.find ({op: {$ eq: 'query'}, NS: 'dfl.test'})

// sprawdzić stan profiler db.getProfilingStatus()

// ustaw profilera do wszystkich operacji db.setProfilingLevel (2)

0

dla tuningu widzieliśmy explain, hint i profile opcje. Ale co jeśli chcemy spojrzeć na wysoki poziom w programie i dowiedzieć się, gdzie jest czas, jak byśmy to zrobili? Mamy numer Mongotop, nazwany po Unix komendzie top.Aby wyświetlić dziennik komendy powłoki, należy użyć komendy mongotop seconds - gdzie seconds jest liczbą sekund, po której zostanie wydrukowany następny wpis dziennika.

np .: mongotop 3