Накладные расходы на стороне сервера сокета

Какие издержки связаны с сохранением сокета открытым на сервере?

Допустим, у вас есть миллионы одновременных подключений, таких как Facebook, сокеты добавят слишком много накладных расходов по сравнению с HTTP-запросами? Я знаю, что сокеты значительно уменьшат нагрузку на сеть (из-за заголовков), но будут ли сокеты лучшим выбором? Если вы не обновляете клиент в режиме реального времени, но по-прежнему отправляете клиенту пакеты информации (каждые несколько секунд или всякий раз, когда клиент запрашивает), что является лучшим вариантом для обслуживания этих миллионов пользователей с точки зрения масштабируемости, производительности и сервера. боковые накладные расходы? (Придется ли вам масштабировать больше / быстрее, используя сокеты или http?)

1 ответ

Решение

Правильный вопрос: "Сколько сокетов я могу оставить открытым на одном сервере".

Это зависит от ОС.

Linux:
Значение установлено в net.ipv4.netfilter.ip_conntrack_max

https://serverfault.com/questions/10852/what-limits-the-maximum-number-of-connections-on-a-linux-server


Windows:

70000 подключений на достаточно низкой спецификации ВМ

Максимальное количество TCP / IP-соединений в Windows Server 2008


Тогда это, конечно, зависит от того, насколько хорошо написано ваше приложение, спецификации оборудования и т. Д. И т. Д.

Поэтому я бы сказал, что вы не должны разрабатывать свое приложение в соответствии с количеством открытых сокетов, потому что ваше приложение, вероятно, будет аварийно завершать работу и сгорать до того, как будет достигнут предел сокетов.

Другие вопросы по тегам