89 votes

Combien de connexions possibles?

Quelqu'un a-t-il une idée du nombre de connexions tcp-socket possibles sur un serveur racine standard moderne? (En général, il y a moins de trafic sur chaque connexion, mais toutes les connexions doivent être actives tout le temps.)

EDIT: Nous allons utiliser un serveur Linux.

92voto

shenedu Points 441

Je l'ai réalisé 1600k simultanées ralenti les connexions socket, et en même temps 57k req/s sur un bureau Linux (16G de RAM, I7 2600 CPU). C'est un seul thread serveur http écrit en C avec epoll. Source code est sur github, un blog ici.

Edit:

Je n'ai 600k connexions simultanées de HTTP (client et serveur) sur le même ordinateur, avec JAVA/Clojure . informations détaillées de post, HN discussion: http://news.ycombinator.com/item?id=5127251

Le coût d'une connexion(avec epoll):

  • application à besoin d'un peu de RAM par connexion
  • Tampon TCP 2 * 4k ~ 10k ou plus
  • epoll besoin de la mémoire pour un descripteur de fichier, de epoll(7)

Chaque inscrit descripteur de fichier coûte environ 90 octets sur un noyau 32 bits, et environ 160 octets sur un noyau 64 bits.

26voto

Eddie Points 27755

Cela dépend non seulement du système d'exploitation en question, mais également de la configuration, éventuellement de la configuration en temps réel.

Pour Linux:

 cat /proc/sys/fs/file-max
 

montrera le nombre maximum actuel de descripteurs de fichier total autorisé à être ouvert simultanément. Visitez http://www.cs.uwaterloo.ca/~brecht/servers/openfiles.html

9voto

gbjbaanb Points 31045

De 10 000? De 70 000? c'est que tous :)

FreeBSD est probablement le serveur que vous souhaitez, Voici un petit blog sur le fait d'accorder de gérer de 100 000 connexions, de son a eu quelques fonctionnalités intéressantes comme zéro-copie de prises pour un certain temps maintenant, et avec kqueue à agir comme un mécanisme de port d'achèvement.

Solaris peut gérer de 100 000 connexions de retour dans la siècle dernier!. Ils disent que linux serait mieux

La meilleure description que je suis venu à travers cette présentation/livre sur l'écriture d'un serveur web évolutive. Il n'a pas peur de dire les choses comme il est :)

Même pour les logiciels: les crétins sur la application de la couche forcé grande les innovations sur la couche OS. Parce que Lotus Notes conserve une connexion TCP chaque client de l'ouvrir, IBM a contribué majeur optimisations pour les "un processus, 100.000 connexions ouvertes" cas de Linux

Et le planificateur O(1) a été à l'origine créée pour marquer bien sur certains pertinence Java de référence. Le bas ligne est que cette dilatation tous les avantages de nous.

4voto

lsalamon Points 5192

-9voto

Darron Points 13196

Google autour pour le problème "C10K". Il s’agit essentiellement d’une discussion et d’une technologie permettant de gérer 10 000 connexions simultanées ou plus.

Je soupçonne que ce nombre a été choisi parce que c'est difficile, mais théoriquement possible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X