Накладные расходы на стороне сервера сокета
Какие издержки связаны с сохранением сокета открытым на сервере?
Допустим, у вас есть миллионы одновременных подключений, таких как Facebook, сокеты добавят слишком много накладных расходов по сравнению с HTTP-запросами? Я знаю, что сокеты значительно уменьшат нагрузку на сеть (из-за заголовков), но будут ли сокеты лучшим выбором? Если вы не обновляете клиент в режиме реального времени, но по-прежнему отправляете клиенту пакеты информации (каждые несколько секунд или всякий раз, когда клиент запрашивает), что является лучшим вариантом для обслуживания этих миллионов пользователей с точки зрения масштабируемости, производительности и сервера. боковые накладные расходы? (Придется ли вам масштабировать больше / быстрее, используя сокеты или http?)
1 ответ
Правильный вопрос: "Сколько сокетов я могу оставить открытым на одном сервере".
Это зависит от ОС.
Linux:
Значение установлено в net.ipv4.netfilter.ip_conntrack_max
Windows:
70000 подключений на достаточно низкой спецификации ВМ
Максимальное количество TCP / IP-соединений в Windows Server 2008
Тогда это, конечно, зависит от того, насколько хорошо написано ваше приложение, спецификации оборудования и т. Д. И т. Д.
Поэтому я бы сказал, что вы не должны разрабатывать свое приложение в соответствии с количеством открытых сокетов, потому что ваше приложение, вероятно, будет аварийно завершать работу и сгорать до того, как будет достигнут предел сокетов.