Il existe des limites imposées par la mémoire disponible, la bande passante, le processeur et, bien sûr, la connectivité réseau. Mais ceux-ci peuvent souvent être mis à l'échelle verticalement. Y a-t-il d'autres facteurs limitatifs sur Linux? Peuvent-ils être surmontés sans modifications du noyau? Je soupçonne que, si rien d'autre, le facteur limitant deviendrait le gigabit ethernet. Mais pour des protocoles efficaces, il pourrait falloir 50K de connexions simultanées pour le swamp. Est-ce que quelque chose d'autre se briserait avant que je puisse avoir ce niveau?Combien de connexions udp ou tcp/ip ouvertes peuvent avoir une machine Linux?
Je pense que je veux un logiciel udp et/ou équilibreur de charge tcp/ip. Malheureusement, rien de tel dans la communauté open-source ne semble exister, à l'exception du protocole http. Mais ce n'est pas au-delà de mes capacités d'en écrire une en utilisant epoll. Je m'attends à ce qu'il y ait beaucoup de peaufinage pour le faire évoluer, mais c'est un travail qui peut être fait progressivement, et je serais un meilleur programmeur pour cela.
Vous soulevez un bon point sur la gigue et la latence et l'effet sur le trafic inélastique – Eloff
serait le personne qui a voté vers le bas mon poste pour expliquer? drive-by down-vote sans commentaire est tout simplement grossier. – jldupont
Pour TCP, l'autre préoccupation concerne la quantité de données entrantes. Les données entrantes occupent les tampons du noyau jusqu'à ce qu'elles soient traitées par un processus utilisateur. Si votre application ne traite pas la mémoire "assez vite", alors le noyau peut manquer de mémoire tampon et de panique. Cela peut être amélioré en définissant une petite taille de tampon Rx sur chaque socket. –