Der verfügbare Speicher, die Bandbreite, die CPU und natürlich die Netzwerkkonnektivität sind begrenzt. Aber diese können oft vertikal skaliert werden. Gibt es andere einschränkende Faktoren auf Linux? Können sie ohne Kernel-Modifikationen überwunden werden? Ich vermute, dass der limitierende Faktor zumindest das Gigabit-Ethernet sein würde. Aber für effiziente Protokolle könnte es 50K gleichzeitige Verbindungen brauchen, um das zu überschwemmen. Würde etwas anderes brechen, bevor ich so hoch werden konnte?Wie viele offene UDP- oder TCP/IP-Verbindungen kann ein Linux-Rechner haben?
Ich denke, dass ich eine Software UDP und/oder Tcp/IP Load Balancer wollen. Leider scheint nichts dergleichen in der Open-Source-Gemeinschaft zu existieren, außer dem http-Protokoll. Aber es ist nicht über meine Fähigkeiten, mit epoll zu schreiben. Ich erwarte, dass es viele Optimierungen durchläuft, um es skalieren zu können, aber das ist Arbeit, die inkrementell erledigt werden kann, und ich wäre ein besserer Programmierer dafür.
Sie heben einen guten Punkt, um Jitter und Latenz und die Auswirkungen auf dem unelastischen Verkehr – Eloff
würde die Person, die meine Nachsorge abgelehnt hat, um das zu erklären? Drive-by Down-Voting ohne Kommentar ist einfach nur unhöflich. – jldupont
Für TCP ist die andere Sorge die Menge der eingehenden Daten. Eingehende Daten belegen Kernel-Puffer, bis sie von einem Benutzerprozess verarbeitet werden. Wenn Ihre Anwendung den Speicher nicht "schnell genug" verarbeitet, kann der Kernel keine Puffer und keine Panne mehr haben. Dies kann verbessert werden, indem auf jedem Sockel eine kleine Rx-Puffergröße eingestellt wird. –