Это сложный вопрос.Прежде всего, это во многом зависит от набора функций, которые вы включили в MongooseIM, поэтому любые нагрузочные тесты, выполненные другими, могут не отражать вашу конкретную конфигурацию и среду.
Более того, чтобы фактически иметь возможность контролировать всеважные параметры в системе, достигающие десятков тысяч пользователей, вам, вероятно, потребуется отслеживание производительности на стороне клиента (подтверждение доставки, время приема-передачи) - однако это не стандартизировано XMPP XEP, поэтому реализации различаются.
При этом Postgres, вероятно, позволит вам масштабироваться только до сотен тысяч онлайн-пользователей.Это может потребовать разделения таблиц и пользователей в кластерах MongooseIM с использованием федерации XMPP для обеспечения связи между всеми пользователями.Узлы БД в этой архитектуре связаны с кластерами MIM, поэтому не обмениваются данными через границы кластера.Известно, что установки в этом направлении работают в производственных условиях.
Если вам приходится работать с миллионами пользователей, вам, скорее всего, придется переключиться с PostgreSQL на базу данных, которая сама по себе легче масштабируется. MongooseIM поддерживает Cassandra , что на данный момент является наилучшей ставкой.Лично мне было бы интересно узнать, как TiKV (дайте мне знать, пожалуйста, если вы попробуете это), в таких условиях.Предполагается, что это MySQL в сети, поэтому он также должен работать с MongooseIM, но в функциональном отношении он работает аналогично Cassandra: автоматическая репликация, масштабируемость кластера, отказоустойчивость и т. Д.
В конечном счете вы узнаете только попроверить себя.Instagram делится некоторыми интересными историями о Postgres в масштабе, которые показывают количество необходимого обслуживания.Увы, нагрузочные тесты, охватывающие миллионы пользователей, чрезмерно дороги из-за облачных затрат, поэтому такие результаты не распространены.