2010-12-08 36 views

Répondre

3

En supposant que vous sélectionnez une architecture sensible pour votre serveur, la limite sera liée à la mémoire et au processeur. IMHO vous n'atteindrez jamais la limite dure que Martin mentionne :)

Ainsi, plutôt que de vous inquiéter d'une limite théorique que vous ne serez jamais frappé, vous devriez, à mon humble avis, réfléchir à la façon dont vous allez concevoir votre application et comment vous le testera pour déterminer le nombre maximum actuel de connexions client que vous pouvez gérer pour votre application sur un matériel donné. L'important pour moi est d'exécuter vos tests de perf à partir du jour 0 (voir here pour une publication de blog où je l'explique). Les systèmes d'exploitation modernes et le matériel vous permettent de construire des systèmes très évolutifs, mais de simples erreurs quotidiennes de codage et de conception peuvent facilement gaspiller cette évolutivité et vous devez donc absolument exécuter des tests de performances tout le temps pour savoir quand vous construisez performance. Vous ne pouvez tout simplement pas revenir en arrière et réparer ce genre d'erreurs à la fin du projet. En outre, j'ai effectué quelques tests sur Windows 2003 Server avec une machine virtuelle à basse spécification et j'ai facilement réalisé plus de 70 000 connexions simultanées et actives avec un serveur simple basé sur un E/S chevauchant (port d'achèvement d'E/S). conception. Voir this answer pour plus de détails. Mon approche personnelle consiste à assembler rapidement un shell de serveur en utilisant la technologie de votre choix (je privilégie le C++ non managé avec des ports d'achèvement d'E/S et des threads minimaux), voir this blog posting pour plus de détails. Ensuite, créez un client ou une série de clients qui peuvent tester l'application et continuer à mettre à jour et à exécuter les clients de test au fur et à mesure que vous implémentez la logique de votre serveur. Vous vous attendez à voir une courbe décroissante de clients simultanés maximum à mesure que vous ajoutez plus de complexité à votre serveur; les grandes baisses de l'évolutivité devraient vous amener à examiner les dernières vérifications pour rechercher des décisions de conception malheureuses.

6

Selon this article, une limite dure est (était) 16 777 214. La limite pratique dépend également de votre application: par exemple, si vous créez un thread par connexion, la limite pratique vient de la limitation du nombre de threads plus que de la pile réseau. Il y a aussi une limite sur le nombre de poignées qu'un processus peut avoir, et ainsi de suite.