Меня больше интересуют такие вопросы.
Как я понимаю на один IP-адрес приходится максимум 65535 портов.
Nginx работает на порту 80. Чем ограничивается максимум одновременных соединений к nginx?
Пусть это будут comet-cоединения.
Какое максимальное количество соединений к одному порту?
Я вижу два ограничения:
1) в ядре сокет интенсифицируется уникальностью четырех ключей: local ip, port + remote ip, port, local часть всегда у нас будет const, тем самым мы понимаем, что такое ограничение возможно, но только в среде с ограниченным количеством клиентов
2) на каждый сокет выделяется немного памяти. Вот скорее всего, в жизни, вы столкнетесь с проблемой что памяти не хватит.
Опять же, в статье предлагают менять net.ipv4.ip_local_port_range но я не могу понять зачем.
Это зависит только от количества дескрипторов и памяти или от чего-то еще?
Количество дескрипторов это просто размер таблицы. Максимальный. Да, больше файловых дескрипторов вы не сможете открыть сокетов.
Хотелось бы получить развернутый ответ или ссылку на поясняющий материал.
У нас потенциально возможно более 100000 comet-коннектов на один сервер nginx.
Что и как (в ядре (sysctl.conf), в nginx) необходимо настроить.
Какие параметры рекоммендуются для такого количества соединений?
Вот на этом ресурсе пишут про настройку Erlang сервера mochiweb для comet:
http://www.metabrew.com/article/a-million-user-comet-application-with-mochiweb-part-1
Я бы посидел и подумал про цифры net.ipv4.tcp_rmem и net.ipv4.tcp_wmem
Еще бы сразу выстовил net.core.somaxconn в побольше
И дернул бы за net.ipv4.tcp_low_letency
Насколько их параметры в sysctl.conf подходят для nginx.
И как вообще nginx смотрится по сравнению с Erlang web-серверами. (yaws, mochiweb)?
В nginx можно делать более низкоуровневые оптимизации. Делает ли их кто-то для comet соеденений -- не знаю, работать с ними не приходилось.
Вообще стоит понимать, что такие оптимизации уникальны, и надо анализировать ваш траффик.