2016-09-23 6 views
0

У меня есть некоторые вопросы mongodb, которые регулируют медленные запросы. Следующие показывает 2 записи из моего журнала mongodb. Я использую версию mounodb 2.4.12. В этом случае эти запросы занимают большое время отклика. (2354ms и 1173ms соответственно). Я знаю, что первый - это READ-запрос, а второй - это запрос UPDATE.Как читать журнал mongodb?

первого запроса

Пн Сен 01 11: 00: 01,171 [conn11431867] myapp.User запрос к: {ClientID: 40000} ntoreturn: 0 ntoskip: 0 nscanned: 278045 keyUpdates: 0 numYields: 2 замки (микро) г: 4187970 nreturned: 18 reslen: 14091 2354ms

второй запрос

пн 1 сентября 22: 10: 00,394 [conn11374746] обновление myapp.User запроса: {_id: ObjectId (' 5789999e4b06d0f3aeeb947 ')} update: {_id: ObjectId (' 5789999e4b06d0f3aeeb947 '), className: «com.myapp.domain.User», firstName: «Amila», lastName: «Iddamalgoda», userId: 10001000, loginId: «amilai», адрес электронной почты: «[email protected]», clientId: 40000} idhack: 1 nupdated: 1 keyUpdates: 0 locks (micros) w: 189 1592ms

Не могли бы вы предоставить ответы на следующие вопросы? Благодарю. Цените много.

1.) Я также использую осколки. И для этого индекса коллекции пользователей установлено значение 'userId'. Каковы могут быть причины этого медленного времени отклика от монго? (2354ms и 1173ms)

2.) В первом журнале запросов, что является запроса: {ClientID: 40000} средства? mongo находит пользователя с использованием ключа clientId? И nscannedObjects ==> Число отсканированного документа. Но что такое 'r' и 'nerturned' и 'reslen' означает?

3.) Я знаю, что манго использует блокировку многоградулярности. Но в этом случае это время ответа является результатом блокировки записи?

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

+0

Возможный обман http://stackoverflow.com/questions/28762135/meaning-of-variables-in-mongodb-logs – chridam

+0

Спасибо. Но мне нужно найти причину высокого времени отклика –

ответ

1

Ответьте на вопрос по одному:

  1. Ваш запрос сканируется 278045 документы, чтобы узнать 18 результатов. Это может быть основной причиной.
  2. запрос: {clientId: 40000} означает, что ваш объект запроса точно равен { clientId: 40000 }. Запрос этого журнала равен db.User.find({ clientId: 40000 }). И ваш индекс находится на userId, этот запрос нуждается в индексе на clientId для ускорения.
  3. В общем случае время блокировки меньше времени ответа.Но

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

  1. Не знаю.

Подсчитайте, подумайте о создании индекса на clientId.

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