Назад | Перейти на главную страницу

Демон Mongo перезапускается после проблемы с набором реплик

У нас были недавние выборы в нашем наборе реплик (2 узла чтения; 1 узел записи), которые изменили основной узел. Интересно, почему это произошло, я начал просматривать журналы, чтобы узнать, что произошло.

Похоже, что mongoNode2 не может связаться с mongoNode3. Когда оба узла не могли обмениваться данными, похоже, что это привело к перезапуску служб на mongoNode2 и mongoNode3, что в конечном итоге привело к новому первичному серверу после того, как службы были запущены снова.

Thu Jun 23 08:27:28 [ReplSetHealthPollTask] DBClientCursor::init call() failed
Thu Jun 23 08:27:28 [ReplSetHealthPollTask] replSet info mongoNode3:27017 is down (or \
    slow to respond): DBClientBase::findOne: transport error: mongoNode3:27017 query: { \
    replSetHeartbeat: "myReplSet", v: 3, pv: 1, checkEmpty: false, from: \
    "mongoNode2:27017" }
Thu Jun 23 08:27:29 got kill or ctrl c or hup signal 15 (Terminated), will \
    terminate after current cmd ends
Thu Jun 23 08:27:29 [interruptThread] now exiting
Thu Jun 23 08:27:29 dbexit:

Есть ли причина, по которой служба mongo перезапустится из-за сбоя вызова DBClientCursor :: init ()? Это известная ошибка?

Следует отметить, что mongoNode2 и mongoNode3 - это виртуальные машины на одном хосте VMware. MongoNode1 не находится на том же хосте, и у него не было проблем с сервисом. Однако у меня не было других отчетов о проблемах с другими виртуальными машинами на хосте VMware.

Да. В client / dbclient.cpp есть uassert() вызов, который, вероятно, привел к перезапуску процесса. Основной причиной этого была транспортная ошибка, которая произошла, когда код replSet проверял тактовые импульсы (утверждение вызывается в findN()).

Код здесь, кажется, сильно отличается между кодом, который я проверил в марте, и тем, что сейчас находится на Github [1], поэтому включите информацию о своей версии при отправке отчета об ошибке в JIRA [2].

В системе отслеживания ошибок MongoDB есть несколько похожих отчетов, но похоже, что кто-то еще не предоставил достаточно информации.

[1] https://github.com/mongodb/mongo/blob/master/client/dbclient.cpp

[2] https://jira.mongodb.org/secure/Dashboard.jspa