Мы переходим от одного набора реплик к осколкам и испытываем некоторые проблемы. У нас есть 3 экземпляра mongos, 3 сервера конфигурации и 15 узлов данных (5 шардов с 3 репликами). Мы наблюдаем очень низкую производительность запросов и, глядя на экземпляры mongos, я вижу что-то вроде 25 тыс. Открытых соединений за экземпляр!
Например, я вижу строки журнала вроде
[listener] connection accepted from 10.10.36.122:35098 #521622 (23858 connections now open)
и
[conn498875] end connection 10.10.36.122:41520 (23695 connections now open)
Для справки, у нас есть другая почти идентичная среда, в которую мы еще не перешли к шардингу, которая показывает ~ 250 открытых соединений.
Код приложения использует драйвер nodejs и использует URL-адрес подключения, который выглядит примерно так:
mongodb://mongos0.some.internal.domain:27017,mongos1.some.internal.domain:27017,mongos2.some.internal.domain:27017
Я немного растерялся из-за того, как отследить эту проблему. Разве это не правильный способ подключения к монгос?
РЕДАКТИРОВАТЬ (7/7/18)
После некоторых экспериментов я обнаружил, что мы использовали connectTimeoutMS
из 180000 (3 минуты). Удаление этого значения решило проблему. Однако до сих пор неясно, почему эта конфигурация работает с автономным набором реплик, но вызывает проблемы при разделении. Кто-нибудь может объяснить, что здесь происходит?