Для работы сообщений в Elph на сервере должен быть развёрнут ecss-chat-server.

Чат-сервер предоставляет удобное и безопасное решение для обмена сообщениями в режиме реального времени. Он обладает широким функционалом, позволяющим пользователям войти в систему, создавать и управлять комнатами, отправлять сообщения и многое другое.

Функционал чат-сервера:

На рисунке ниже представлена упрощённая схема интеграции Elph и ECSS-10.

Упрощённая схема интеграции Elph и ECSS-10

Системные требования

Протестированные ОС и платформы:

Аппаратные требования:

При таких характеристиках обеспечивается нагрузочная способность около 1000 пользователей (c учётом того, что каждый пользователь даёт двойную нагрузку на сервер, так как пользуется чатом одновременно с мобильного и настольного приложений).

Системные требования для разного количества пользователей:

Количество пользователейЦПОЗУСеть
10003 ядра 2.5 ГГц4 ГБ10Мбит\с
20006 ядер 3 ГГц8 ГБ20Мбит\с
400012 ядер  3ГГц16 ГБ40Мбит\с


В нагрузочном тесте чат-сервер достиг скорости до 50 сообщений/с (транзакций/с):

450 пользователей отправили 450 сообщений/с, все сообщения были доставлены (вставали в очередь), поэтому стоит вопрос расчета максимальной пропускной способности чата на подобном (описанном выше) стенде.

Если считать по статистике ВК (48 млн активных авторов 15 млрд сообщений в сутки) — 15000000000 / 48000000 / 8 / 60 / 60 = 0.01085069444 сообщений/с  (8, а не 24 в данном случае, так как это корпоративный чат, и за основу взят 8-часовой рабочий день, поэтому берётся дневная скорость ВК для расчета 8-часовой скорости чат-сервера ECSS).

0.01085069444 * 2 = 0.00723379628  (заложен двухкратный рост)

50 / 0.00723379628 = 4608 активно пишуших в чат (со скоростью 0.01085069444 сообщений/с) человек, но так как тест не учитывал Websocket подключения, по которым передаются объемные данные, то выходные данные мы делим примерно на 2 и получаем около 2000 пользователей.

НО это без учета того, сколько пользователей может быть просто подключены к чату по WS, если все 2000 одновременно подключатся к одной комнате (например, общий чат) и небольшая их часть будет писать сообщения, то могут быть некоторые проблемы с производительностью.

Учитывая что Elph Desktop держит постоянное подключение к чат серверу, плюс у пользователя может быть мобильное устройство с Elph iOS/Adnroid (то есть один пользователь может генерировать двойную нагрузку), то опять условно делим на 2 с учётом WS и больших комнат.

На «плавающих» Elph iOS/Adnroid условно отдаём 15% времени онлайна (то есть когда 1 пользователь считается за 2) 1152 * 0.15 = 172

Итого: предположительно 980 человек смогут без проблем с производительностью пользоваться чатом весь рабочий день.

Масштабирование:

Введение отказоустойчивости (2 или 3 ноды чата и кластер базы данных) увеличит системные требования в 3 раза без сопоставимого прироста производительности, однако дополнение этого кластера новыми узлами будет ее увеличивать.