Существуют ограничения, налагаемые доступной памятью, пропускной способностью, процессором и, конечно же, сетевым подключением. Но их часто можно масштабировать по вертикали. Существуют ли какие-либо другие ограничивающие факторы для linux? Могут ли они быть преодолены без изменений ядра? Я подозреваю, что, если не что иное, ограничивающим фактором станет гигабитный ethernet. Но для эффективных протоколов может потребоваться 50K параллельных подключений для болота. Разве что-то еще сломается, прежде чем я смогу получить такой высокий уровень?Сколько открытых подключений udp или tcp/ip может быть у Linux-машины?
Я думаю, что мне нужен программный udp и/или tcp/ip load balancer. К сожалению, ничего подобного в сообществе с открытым исходным кодом, похоже, не существует, за исключением протокола http. Но я не могу писать, используя epoll. Я ожидаю, что он проведет много настроек, чтобы добиться масштабирования, но это работа, которая может быть выполнена постепенно, и я буду лучшим программистом для этого.
Вы поднимаете хороший пункт о джиттере и задержке и влиянии на неупругом трафике – Eloff
бы человек, который пропустил мою почтовую посылку, чтобы объяснить? прохождение вниз по голосу без комментариев просто грубо. – jldupont
Для TCP другой проблемой является количество входящих данных. Входящие данные занимают буферы ядра, пока они не обрабатываются пользовательским процессом. Если ваше приложение не обрабатывает память «достаточно быстро», ядро может закончиться буферами и паникой. Это можно улучшить, установив небольшой размер буфера Rx на каждый сокет. –