Подтвердить что ты не робот

Сколько системных ресурсов будет проведено для хранения 1 000 000 websocket?

Websocket хорош, но сможет ли он обрабатывать 1 000 000 одновременных подключений?
Сколько системных ресурсов будет храниться для хранения 1 000 000 веб-карт?

4b9b3361

Ответ 1

Обновленный ответ

Короткий ответ: да, но это дорого.

Длинный ответ:

Этот вопрос не уникален для WebSockets, поскольку WebSockets представляют собой в основном долгоживущие TCP-сокеты с HTTP-подобным рукопожатием и минимальным обрамлением сообщений.

Реальный вопрос: может ли один сервер обрабатывать 1 000 000 одновременных соединений сокетов и какие ресурсы сервера будут потреблять? Ответ усложняется несколькими факторами, но для системы с надлежащим размером (много CPU, оперативной памяти и быстрой сети), а также с настроенной серверной системой и оптимизированным серверным программным обеспечением возможно использование 1 000 000 активных соединений сокетов.

Количество соединений не является основной проблемой (в основном это вопрос настройки ядра и достаточной памяти), это обработка и отправка/получение данных в/из каждого из этих соединений. Если входящие соединения распространяются в течение длительного периода времени, и они в основном неаккуратно или редко посылают небольшие фрагменты статических данных, то вы, вероятно, можете получить намного больше, чем даже 1 000 000 одновременных соединений. Однако даже в таких условиях (медленные соединения, которые в основном неактивны) вы все равно столкнетесь с проблемами сетей, серверных систем и серверных библиотек, которые не настроены и не предназначены для обработки большого количества подключений.

См. ответ Alessandro Alinone о приблизительном использовании ресурсов для 500 000 подключений.

Ниже приведены некоторые более старые, но все еще применимые ресурсы, чтобы прочитать, как настроить сервер и написать серверное программное обеспечение для поддержки большого количества подключений:

Ответ 2

В современных системах обработка 1 миллиона одновременных TCP-соединений не является проблемой.

Я могу подтвердить, что на основе наших собственных тестов (полное раскрытие: я являюсь техническим директором в Lightstreamer).

Нам пришлось несколько раз продемонстрировать некоторым нашим клиентам, что 1 миллион подключений может быть достигнуто на одной коробке (и не обязательно супер-монстром). Но позвольте мне вспомнить конфигурацию, в которой мы тестировали параллельные соединения 500K, поскольку это гораздо более недавний тест, выполненный на Amazon EC2.

Мы установили Lightstreamer Server (который, помимо прочего, сервер WebSocket), в экземпляре m2.4xlarge. Это означает, что 8 ядер и 68,4 ГБ памяти.

Мы запустили 11 клиентских машин для создания 500 000 параллельных подключений к серверу Lightstreamer. Тест был сконфигурирован таким образом, чтобы общая исходящая пропускная способность с сервера составляла 90 000 обновлений/с, что приводило к пикам пропускной способности исходящей полосы 450 Мбит/с.

Сервер никогда не использовал более 13 гигабайт ОЗУ, а CPU был стабильным около 60%.

Имея не менее 30 гигабайт RAM, вы можете обрабатывать 1 миллион параллельных сокетов. Необходимый процессор зависит от требуемой пропускной способности.