2010-10-07 8 views
0

Quelles sont les considérations de performance à prendre en compte lors de la conception d'une application serveur à l'écoute sur un port? Je sais qu'il est possible pour plusieurs milliers de clients de se connecter à un serveur sur un seul port, mais les performances sont-elles affectées par le fait que l'application serveur accepte toutes les demandes entrantes sur un seul port? Est-ce que je comprends bien que ce modèle (serveur écoutant sur un port qui gère les connexions entrantes, puis répond sur la connexion sortante créée lors de l'établissement de la connexion client) est le fonctionnement des bases de données/serveurs Web?Considérations sur les performances d'un grand nombre de connexions sur le même port

Cordialement, Brian

Répondre

0

Il n'a pas d'importance si le serveur écoute sur un port ou plusieurs ports. Le serveur doit toujours établir une connexion de socket complète pour chaque client qu'il accepte. Le système d'exploitation doit toujours router les paquets entrants vers les points de terminaison de socket corrects, et les sockets sont identifiés de manière unique par la combinaison des paires IP/Port des deux points de terminaison.

Les problèmes de performances seront liés à la manière dont le code du serveur gère ces connexions de socket. Si elle n'écoute que sur un port et accepte les clients sur ce port en utilisant une simple boucle accept() dans un seul thread, la vitesse à laquelle elle peut accepter les clients est limitée par cette boucle. En règle générale, les serveurs génèrent des threads de travail pour chaque client accepté, ce qui en soi a une surcharge de performances si le pool de threads n'est pas utilisé. Si le serveur doit gérer plusieurs clients simultanément, il doit utiliser des ports d'E/S ou de complétion d'E/S superposés pour gérer les connexions plus efficacement.

Questions connexes