Max. Ausgehende Socket-Verbindungen in .NET / Windows Server

Ich habe eine etwas ungewöhnliche Situation, in der ich CLIENT-TCP-Verbindungen zu einem anderen Server für Tausende von mobilen Benutzern auf meinen Servern aufrechterhalten muss (im Grunde stellen die mobilen Geräte eine Verbindung zu meinem Middle Tier-Server her, wenn dies möglich ist, wodurch eine stabilere Verbindung aufrechterhalten wird an den 3rd Party Server für die mobilen Geräte).

Wie auch immer, ich habe meine Serveranwendung mit Async Sockets (in einen SslStream eingepackt) entwickelt und zurzeit 1000 Clientsitzungen auf dieser Anwendung ausgeführt. Ich bin ziemlich zufrieden mit den Ergebnissen, da ich auf einem Single-Core-Prozessor eine durchschnittliche CPU-Auslastung von 0-10% und im Laufe der Zeit etwa 60 MB RAM-Speicher sehe.

Meine Frage ist, wie skaliere ich dies, damit 100.000 oder 200.000 oder mehr Clientsitzungen auf meinem Server ausgeführt werden können? Auch dies ist ein wenig untraditionell, da sich mein Server nicht wirklich wie ein Server verhält, da ich mir Sorgen um ausgehende und nicht eingehende Verbindungen mache.

Ich weiß, dass es eine Registrierungseinstellung für MaxUserPort gibt, die geändert werden muss, um über die Standardeinstellung von 5000 hinauszugehen. Es scheint jedoch ein weiteres hartes Limit von 65535 zu geben, und ich bin mir nicht sicher, wo sich dieses Limit befindet. Ist dies ein Limit pro Netzwerkschnittstelle? Ist es ein globales Windows-Limit? Ist es ein Limit pro Prozess?

Kann ich bei einer Beschränkung pro Netzwerkschnittstelle mehrere Netzwerkschnittstellen hinzufügen und Client-Sitzungssockets an jede Schnittstelle binden (z. B .: 65 KB auf Schnittstelle 1, 65 KB auf Schnittstelle 2 usw.)?

Ich bin mir auch nicht sicher, was ich tun soll, wenn Socket-Optionen oder -Eigenschaften festgelegt werden, um Abhilfe zu schaffen. Im Moment verwende ich keine Socket-Optionen.

Über Gedanken zu diesem Thema würde ich mich sehr freuen, da es ziemlich schwierig war, klare Ratschläge zu diesem Thema zu erhalten. Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage