Лимит клиентских подключений для библиотеки WebSocketsPP v3
Что определяет предел количества клиентов WebSocket, которые могут иметь активное соединение в библиотеке WebSocket++ 0.3.x? Это одно соединение на поток или один поток может обрабатывать несколько клиентских подключений WebSocket? Если это последнее, примерно сколько соединений может удерживать один поток?
По сути, я ищу приблизительное число клиентских подключений, которые может обрабатывать библиотека WebSocket ++ в приложении с примерно 25-ю потоками. Домашняя страница библиотеки: http://www.zaphoyd.com/websocketpp
1 ответ
Если вы используете транспортную политику на основе Boost.Asio с последней версией Boost на платформе, которая поддерживает неблокирующий / асинхронный ввод / вывод (epoll в Linux, kqueue в OS X/BSD, iocp в Windows), то WebSocket++ не делает ввести какие-либо существенные ограничения на одновременные соединения.
В таких ситуациях ограничения в значительной степени зависят от ОС, оборудования и факторов приложения. ОС будет ограничивать общее количество файловых дескрипторов, используемых на процесс (с правами root этот предел может быть изменен). Высокий уровень параллелизма потребует, чтобы ваше приложение было правильно структурировано для его обработки (в основном с использованием коротких, ограниченных по времени, неблокирующих обработчиков). Другие факторы будут ограничивать вас так же, как и общие серверы. Gigabit Ethernet может обрабатывать только такой большой объем трафика, использование TLS или сжатие снизит производительность и т. Д.
Я еще не проводил обширных сравнительных тестов производительности с 0.3.x, но 0.2.x в соответствующим образом настроенных приложениях могли легко обслуживать десятки тысяч одновременно работающих клиентов на ядре i7.
Целью архитектуры WebSocket++ является масштабирование до произвольного числа соединений при наличии достаточных ресурсов. Если вы работаете над приложением, которое масштабирует WebSocket++ за пределы 10 тыс. Соединений, мне было бы интересно получить более подробную информацию и устранить любые узкие места, которые вы обнаружите.