У нас есть следующие настройки MongoDB:
Инфраструктура
3 набора реплик, работающих в AWS.На этом этапе все узлы находятся в одной зоне доступности и являются экземплярами i3.large.2 узла размещают данные БД на дисках NVME, а 1 размещает их на томе EBS с Подготовленным IOPS.
Данные
Данные настроенынемного сомнительно, но должно работать нормально, насколько я понимаю в документации.
У нас есть база данных на одного клиента - около 55 тысяч из них.
Каждая база данных содержит несколько коллекций с данными, относящимися к учетной записи.В данных нет ничего особенного, но некоторые коллекции имеют индексы в дополнение к индексам, которые есть в _id по умолчанию.
The Writes
Большинство данныхзаписаны события, связанные с учетными записями клиентов.Они собираются в очередь (SQS) и в настоящее время записываются одним потоком.Модуль записи буферизует данные за 15 минут, затем определяет, в какую базу данных записать данные, и сбрасывает их.Этот процесс является службой Windows на C #.
Некоторые операции записи обходят очередь (считается высоким приоритетом).К ним относятся создание учетных записей и другие события с высоким приоритетом.
Проблема
В большинстве случаев эта настройка работает нормально.Проблема возникает, когда нам нужно выполнить операцию со всеми учетными записями клиентов - например, удалить события старше X или добавить определенные данные в каждую учетную запись.В обоих этих сценариях процесс работает со списком идентификаторов учетных записей и выполняет свою функцию.
Оба сценария имеют примерно одинаковое проявление проблемы.Процесс запускается быстро и быстро проходит через множество учетных записей.Поскольку он продолжает проходить мимо ~ 20 тыс. Аккаунтов, он начинает замедляться.Замедления становятся все длиннее и длиннее и начинают влиять на чтение БД.На момент последнего запуска она перестала отвечать на запросы после обработки ~ 41 тыс. Учетных записей (но на тот момент уже приводила к ошибкам чтения).
БД сама отвечает.Из терминала я могу получить rs.status () и получить rs.printSlaveReplicationInfo (), который теперь показывает растущий разрыв между ПЕРВИЧНЫМИ и ВТОРИЧНЫМИ.
Подключение к базе данных изУдаленный клиент застревает при получении наборов реплик.
В журналах нет ничего, что выделялось бы на ПЕРВИЧНОМ или ВТОРИЧНОМ.Ниже приведен фрагмент дампа из основного списка.
Есть мысли или идеи?
Спасибо!
2018-12-18T18: 46: 43.238 + 0000 Я СЕТЬ [conn39304] получила клиентские метаданные от 172.30.1.180:52756 conn39304: {водитель: {имя:"NetworkInterfaceASIO-RS", версия: "3.6.8"}, os: {тип: "Linux", имя: "PRETTY_NAME =" Debian GNU / Linux 9 (stretch) "", архитектура: "x86_64", версия: "Ядро 4.9.0-8-amd64 "}} 2018-12-18T18: 46: 44.059 + 0000 I КОМАНДА [ftdc] serverStatus был очень медленным: {после базового: 0, после подтверждений: 0, после backgroundFlushing: 0, после соединений: 0, после dur: 0, после extra_info: 0, после globalLock: 0, после блокировок: 0, после logicSessionRecordCache: 0, после сети: 0, после opLatencies: 0, после opcounters: 0, после opcountersRepl: 0, после repl: 0, после защиты: 0, после storageEngine: 0, после tcmalloc: 0, после транзакций: 0, после transportSecurity: 0, после wiredTiger: 1058, в конце: 1058} 2018-12-18T18: 46: 44.498 + 0000 IСЕТЬ [conn39305] получила клиентские метаданные от 172.30.1.193:58142 conn39305: {драйвер: {имя:"NetworkInterfaceASIO-RS", версия: "3.6.7"}, os: {тип: "Linux", имя: "PRETTY_NAME =" Debian GNU / Linux 9 (stretch) "", архитектура: "x86_64", версия: "Ядро 4.9.0-8-amd64 "}} 2018-12-18T18: 46: 44.500 + 0000 I ACCESS [conn39305] Успешно аутентифицирован как основная __система на локальном 2018-12-18T18: 46: 44.540 + 0000 I ACCESS [conn39304]Успешно аутентифицирован как основная __system на локальном2018-12-18T18: 46: 45.758 + 0000 I КОМАНДА [PeriodicTaskRunner] Задание: UnusedLockCleaner заняло: 243 мс 2018-12-18T18: 47: 22.360 + 0000 I СЕТЬ [приемник] Соединение принято с 172.30.1.180:52758 # 39306 (245соединения теперь открыты) 2018-12-18T18: 47: 22.399 + 0000 I NETWORK [conn39306] получил клиентские метаданные из 172.30.1.180:52758 conn39306: {драйвер: {имя: "NetworkInterfaceASIO-RS", версия: "3.6.8"}, os: {type: "Linux", имя: "PRETTY_NAME =" Debian GNU / Linux 9 (stretch) "", архитектура: "x86_64", версия: "Kernel 4.9.0-8-amd64"}} 2018-12-18T18: 47: 22.401 + 0000 I ACCESS [conn39306] Успешно аутентифицирован как основная __system в локальной сети 2018-12-18T18: 47: 22.465 + 0000 I NETWORK [слушатель] Соединение принято от 172.30.1.193:58144 # 39307 (246 соединений)теперь открыто) 2018-12-18T18: 47: 22.539 + 0000 I СЕТЬ [conn39307] получила метаданные клиента от 172.30.1.193:58144 conn39307: {драйвер: {имя: "NetworkInterfaceASIO-RS", версия: "3.6.7"}, os: {type: "Linux", имя: "PRETTY_NAME =" Debian GNU / Linux 9 (stretch) "", архитектура: "x86_64", версия: "Kernel 4.9.0-8-amd64"}} 2018-12-18T18: 47: 22.579 + 0000 I ACCESS [conn39307] Успешно аутентифицирован как основная __система налокальный 2018-12-18T18: 47: 35.372 + 0000 I ACCESS [conn137] Успешно аутентифицирован как основная __system на локальном 2018-12-18T18: 47: 35.374 + 0000 I ACCESS [conn137] Успешно аутентифицирован как главный __system на локальный 2018-12-18T18: 47: 35.377 + 0000 I ACCESS [conn137] Успешно аутентифицирован как основная __system на локальном 2018-12-18T18: 47: 35.554 + 0000 I ACCESS [conn137] Успешно аутентифицирован как главный __system на локальном 2018-12-18T18: 47: 37.797 + 0000 I ACCESS [conn137] Успешно аутентифицирован как основная __system на локальной 2018-12-18T18: 47: 46.685 + 0000 I NETWORK [слушатель] соединение принято с 172.30.1.187:33484 # 39308 (247 соединений открыто) 2018-12-18T18: 47: 46.699 + 0000 Я СЕТЬ [conn39308] получила клиентские метаданные от 172.30.1.187:33484 conn39308: {драйвер: {имя: "mongo-csharp-driver", вер.ion: "0.0.0.0"}, os: {тип: "Windows", имя: "Microsoft Windows NT 6.2.9200.0", архитектура: "x86_64", версия: "6.2.9200.0"}, платформа: ".NET Framework4.5 "} 2018-12-18T18: 47: 46.770 + 0000 I ACCESS [conn39308] Успешно аутентифицирован как основной tdservice для администратора 2018-12-18T18: 48: 02.362 + 0000 I СЕТЬ [приемник] соединение принято с 172.30.1.180:52760# 39309 (248 соединений открыто) 2018-12-18T18: 48: 02.419 + 0000 I NETWORK [conn39309] получил клиентские метаданные от 172.30.1.180:52760 conn39309: {драйвер: {имя: "NetworkInterfaceASIO-RS", версия: "3.6.8 "}, os: {type:" Linux ", имя:" PRETTY_NAME = "Debian GNU / Linux 9 (stretch)" ", архитектура:" x86_64 ", версия:" Kernel 4.9.0-8-amd64 "}} 2018-12-18T18: 48: 02.421 + 0000 I ACCESS [conn39309] Успешно аутентифицирован как основная __system в локальной сети 2018-12-18T18: 48: 02.470 + 0000 I NETWORK [приемник] соединение принято с 172.30.1.193:58146 #39310 (теперь открыто 249 соединений) 2018-12-18T18: 48: 02.489 + 0000 I NETWORK [conn39310] recполученные метаданные клиента от 172.30.1.193:58146 conn39310: {драйвер: {имя: "NetworkInterfaceASIO-RS", версия: "3.6.7"}, os: {тип: "Linux", имя: "PRETTY_NAME =" Debian GNU /Linux 9 (stretch) "", архитектура: "x86_64", версия: "Kernel 4.9.0-8-amd64"}} 2018-12-18T18: 48: 02.510 + 0000 I ACCESS [conn39310] Успешно аутентифицирован как основная __система наместный