У нас проблема с ПЕРВИЧНЫМ сервером mongodb (3.6.3). Через некоторое время он переходит в состояние, в котором он все еще является ПЕРВИЧНЫМ, но не принимает соединения. Проблема в том, что он сохраняет ОСНОВНУЮ роль, и из-за этого наше приложение вылетает. Перезапуск Mongodb на ПЕРВИЧНОМ сервере помогает, и все возвращается в норму.
Мы размещаем mongodb в Amazon на 3 инстансах Ubuntu m5.4xlarge с томами EBS 3000 IOPS.
Во время сбоя у нас на ~ 30% больше подключений к MongoDB, чем обычно, но они все еще намного ниже пределов и намного ниже значения fs.file-max, установленного на 6430188. Никакая другая метрика не выглядит подозрительной. Использование ОЗУ, ЦП, диска и сети находится на том же уровне, что и непосредственно перед сбоем и сразу после перезапуска ПЕРВИЧНОЙ ОС. Мы уже перенесли MongoDB с 3.4.14 на 3.6.3, и проблема все еще возникает каждые 1-2 дня. Мы также изменили приоритет для ПЕРВИЧНОГО сервера и перенесли эту роль на другой хост, чтобы он не был подключен к какой-либо конкретной машине.
По логам ничего интересного нет.
Вот результат выполнения некоторых команд, которые мы запускаем, когда сервер не реагировал на запросы:
$ mongo -u root -p pass --authenticationDatabase admin --eval 'rs.status()'
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
2018-03-29T02:21:48.272+0000 E QUERY [thread1] Error: network error while attempting to run command 'saslStart' on host '127.0.0.1:27017' :
DB.prototype._authOrThrow@src/mongo/shell/db.js:1608:20
@(auth):6:1
@(auth):1:2
$ mongo -u root -p pass --authenticationDatabase admin --eval 'db.runCommand( { "connPoolStats" : 1 } )'
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
2018-03-29T02:21:48.272+0000 E QUERY [thread1] Error: network error while attempting to run command 'saslStart' on host '127.0.0.1:27017' :
DB.prototype._authOrThrow@src/mongo/shell/db.js:1608:20
@(auth):6:1
@(auth):1:2
$ mongo -u root -p pass --authenticationDatabase admin --eval 'db.runCommand( { serverStatus: 1 } )'
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
2018-03-29T02:21:48.382+0000 W NETWORK [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused
2018-03-29T02:21:48.382+0000 E QUERY [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:251:13
@(connect):1:6
Есть идеи, что еще мы должны проверить, чтобы отладить его?
Оказалось, что в последней версии MongoDB исправлена ошибка MongoDB. Вы можете найти полную историю в этом проездной билет.
У меня были проблемы с зависанием инстансов c5. Он выполнял очень легкую веб-нагрузку (без mongoDB), и я использовал SSH для обслуживания, и он зависал через 1-2 дня, когда не принимал соединения на 443 или SSH-соединениях. Мне пришлось перезагрузить его с консоли AWS, и я увидел некоторые проблемы с диском в журналах, а также опубликовал на форуме AWS, но без ответа. Также см. Ниже
https://www.reddit.com/r/aws/comments/7whfhn/new_nitro_based_m5c5_instances_seem_unstable/
Рекомендую вам попробовать экземпляры m4.