Qu'est-ce que la limite supérieure sur le nombre de sockets ouverts que je peux avoir dans Windows Server 2003
Je suis en train de construire un serveur de chat avec .NET. J'ai essayé d'ouvrir près de 2000 connexions client et mon Linksys WRT54GL-routeur (avec de la tomate firmware) tombe mort à chaque fois. La même chose arrive quand j'ai plusieurs connexions ouvertes sur mon Azureus bit-torrent-client.
J'ai trois questions:
- Est-il une limite sur le nombre de sockets ouverts que je peux avoir dans Windows Server 2003?
- Est le routeur Linksys le problème? Si donc, il y a un meilleur matériel recommandé?
- Est-il un moyen pour éventuellement partager les sockets afin que je puisse gérer plus d'ouvrir des connexions client avec moins de ressources?
Vous devez vous connecter pour publier un commentaire.
COMME je l'ai mentionné avant, Raymond Chen a de bons conseils sur ce genre de question: Si vous vous posez sur l'OS limites, vous êtes probablement fait quelque chose de mal. Le protocole IP permet uniquement pour une durée maximale de 65535 ports et beaucoup de ces derniers sont réservés et ne sont pas disponibles pour une utilisation générale. Je dirais que vos protocoles de messagerie doivent être pensés dans plus de détails pour que l'OS limites ne sont pas un problème. Je suis sûr qu'il ya beaucoup de bonnes ressources de décrire de tels systèmes, et il y a certainement des gens ici qui aurait de bonnes idées à ce sujet.
EDIT: je vais mettre quelques réflexions à propos de la mise en œuvre d'une solution évolutive serveur de chat.
Tout d'abord, désigner un seul port sur le serveur pour que les clients communiquent à travers. Chaque fois qu'un client doit mettre à jour le chat de l'état (un nouveau message de l'utilisateur par exemple), procédez de la manière suivante:
Ensuite, le serveur effectue les opérations suivantes:
Quand un nouveau chat démarrage de la session, le client à compter de la session envoie une "nouvelle session" message au serveur avec les clients, les détails de l'utilisateur et de l'adresse IP pour les réponses. Le serveur crée une nouvelle session de chat et répond avec l'ID de session. Ensuite, le client envoie les paquets contenant les messages que les types d'utilisateur, le serveur traite et transmet le message à d'autres personnes dans la même session. Lorsqu'un client quitte le chat, il envoie une "fin de session" message au serveur. Le serveur supprime le client à partir de la session et détruit la session quand il n'y a pas plus de clients dans la session.
Espoir qui pousse à réfléchir.
j'ai trouvé ceci ( http://smallvoid.com/article/winnt-tcpip-max-limit.html ), quand je cherchais chose de similaire pour Windows XP, je pense que cela devrait s'appliquer pour Windows 2003
j'ai trouvé quelques réponses à ce que je me dois de partager:
Windows 2003 server a une limite sur le nombre de ports qui peuvent être utilisés. mais ce qui est configurable par l'intermédiaire d'un registre tweak pour modifier le paramètre MaxUSerPort de 5000 à dire, 64 k( max).
En découvrir davantage, je me rends compte que les 64 ko de port restriction est en fait par adresse IP, donc un seul serveur peut facilement atteindre beaucoup plus de ports, et donc les connexions TCP en soit l'installation de plusieurs cartes réseau, ou une liaison plus qu'une seule adresse IP d'une carte réseau. de cette façon, vous pouvez mettre à l'échelle votre système pour gérer n x 64 ko ports.
Avait pour jours un problème avec les sockets disponibles sur mon 7 de la Fenêtre de la machine. Après la lecture de quelques articles sur la prise de fuites dans Win 7, j'ai appliqué une Correctif de Windows - rien n'a changé.
Ci-dessous il y a un article décrivant windows des problèmes de connexion dans le détail:
http://technet.microsoft.com/en-us/magazine/2007.12.network.aspx
Pour moi, il a travaillé suivantes: