2013-09-06 1 views
1

Это мой статус сервера MongoDB моей среды разработки.Возможно ли увидеть запросы, вызвавшие пропуски индекса в Mongodb

db.serverStatus() 
{ 
     "version" : "1.6.5", 
     "uptime" : 792725, 
     "uptimeEstimate" : 790787, 
     "localTime" : "Fri Sep 06 2013 11:05:32 GMT-0400 (EDT)", 
     "globalLock" : { 
       "totalTime" : 792724778241, 
       "lockTime" : 8441722074, 
       "ratio" : 0.010648994841225452, 
       "currentQueue" : { 
         "total" : 0, 
         "readers" : 0, 
         "writers" : 0 
       } 
     }, 
     "mem" : { 
       "bits" : 64, 
       "resident" : 3729, 
       "virtual" : 13764, 
       "supported" : true, 
       "mapped" : 12443 
     }, 
     "connections" : { 
       "current" : 94, 
       "available" : 7906 
     }, 
     "extra_info" : { 
       "note" : "fields vary by platform", 
       "heap_usage_bytes" : 726448, 
       "page_faults" : 403439 
     }, 
     "indexCounters" : { 
       "btree" : { 
         "accesses" : 1804253, 
         "hits" : 1803993, 
         "misses" : 260, 
         "resets" : 0, 
         "missRatio" : 0.0001441039588128716 
       } 
     }, 
     "backgroundFlushing" : { 
       "flushes" : 13211, 
       "total_ms" : 176124, 
       "average_ms" : 13.331617591401105, 
       "last_ms" : 9, 
       "last_finished" : "Fri Sep 06 2013 11:04:48 GMT-0400 (EDT)" 
     }, 
     "cursors" : { 
       "totalOpen" : 0, 
       "clientCursors_size" : 0, 
       "timedOut" : 8 
     }, 
     "repl" : { 
       "ismaster" : true 
     }, 
     "opcounters" : { 
       "insert" : 512974, 
       "query" : 18735335, 
       "update" : 6690119, 
       "delete" : 217251, 
       "getmore" : 19071, 
       "command" : 8616326 
     }, 
     "asserts" : { 
       "regular" : 0, 
       "warning" : 0, 
       "msg" : 0, 
       "user" : 69117, 
       "rollovers" : 0 
     }, 
     "ok" : 1 
} 

Мой вопрос в том, можно ли увидеть значения, в которых произошла ошибка индекса (запросы).

Я установил уровень профилирования db.setProfilingLevel(2) собрал записи из коллекции system.profile с использованием опции mongoexport.

ответ

3

Вы должны знать, что indexCounters.btree.misses не указывает, что значение не было найдено в индексе; это означает, что индексная страница не была в памяти, когда сервер попытался получить к ней доступ, и поэтому ее нужно было загрузить.

Запрос, который не находит определенное значение в индексе, будет просто запросом, который делает не найти результат для выполнения запроса.

Один из способов регистрации «проблемных» запросов - с опцией slowms. Любой запрос, который занимает больше заданного количества миллисекунд, затем записывается в файл журнала.

В качестве необязательного второго аргумента для db.setProfilingLevel() вы указываете slowms, см. here.

Смежные вопросы