IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

faire un server (select, poll ou epoll)


Sujet :

Réseau C

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 788
    Par défaut faire un server (select, poll ou epoll)
    Bonjour,
    une question qui revient assez souvent sur internet:

    Que choisir parmi select poll ou epoll pour faire un server qui doit supporter un nombre de connexion simultanee assez important.

    J'ai vu qu'avec select la limite est environ de 1000 liee au fd_setsize.
    Poll permet de pallier ce probleme mais est-ce performant par exemple si on passe 10 000 fds a poll peut-il tenir la charge?

    Quel est la limite raisonnable de nombres de socket que peux gerer un server simultanement ? car la limite de fds ouverts est environ 200 000.

    Merci

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 442
    Par défaut
    Bonjour,

    À mon avis, à ce stade, ça dépend beaucoup du système que tu utilises.

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 788
    Par défaut re
    Du systeme ?
    Tu entends par la, la puissance de la machine ?

    Pour te repondre je ne sais pas encore exactement le prix que je vais mettre dans le server.

    Mais sur un meilleur rapport qualite/prix, quel prix faudrait - il investir sur un server pour combien de client maxi ?

    Merci

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 442
    Par défaut
    Je veux dire du système d'exploitation. Quand on a des programmes complètement uniformisés, portables, exploitant uniquement une A.P.I. normalisée (ex : POSIX), la différence sur les systèmes se fait sur ce genre de considération.

    Je n'ai pas l'habitude des hautes montées en charge, donc je ne peux pas te répondre directement sans faire moi-même une étude préalable (d'autres, peut-être), mais à vue de nez, un bon *BSD avec beaucoup de mémoire (le plus important) et un processeur rapide parce qu'à 10000 connexions, il faut commencer à mouliner pour tenir la cadence et toutes les digérer, devrait faire l'affaire.

    Ça dépend aussi de ce que tu comptes servir. Si ce sont de petites pages web facilement transmises, il y a des chances que tout tienne dans le cache et il n'y aura pas de souci. Si, en revanche, c'est un serveur d'applications et/ou de fichiers, avec autant de trafic montant que descendant, alors il faudra également se pencher sur la vitesse des bus, sur le type de disques que tu utilises et sur leur répartition.

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    1000 simultané, je partirais sur du spécifique OS.

    Pour Windows avec IoCompletionPort c'est ce qui tiendra le mieux la route. C'est un peu délicat à programmer mais c'est avec cela, que tu auras le moins de problème de performances.

    Pour Unix, je ne sais pas.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  6. #6
    Membre confirmé Avatar de spin0us
    Profil pro
    Inscrit en
    Février 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 87
    Par défaut
    Je suis en plein dans le même type de problématique que toi, à ceci prêt que j'ai déjà expérimenté les limitations du système.
    Dans mon cas c'est donc un serveur multi-client qui doit encaisser plus de 2000 connexions simultanées avec pour chaque client un dialogue continue (donc bye bye le cache).

    Première limitation : select (pas plus de 1024 en écoute)
    Seconde limitation : les I/O (mon programme quand il dialogue avec ses clients stock certaine partie de discussion dans des fichiers. Ça implique donc énormément d'accès disque.)

    La plateforme est un serveur mono proc (celeron 2.4Ghz) avec 2 Go de ram et 80Go de disque. Le CPU n'atteint pas ses limites. Le disque par contre ... ben il rame. Après plusieurs analyse de perfs pendant la charge, il apparaît que c'est en lecture qu'il à le plus de mal. Maintenant dans mon cas, j'ai aussi un base de données mysql fortement sollicitée, et pas mal de scripts qui tournent en parallèle de tout ça pour servir les informations utiles pour le dialogue avec les clients.

    Pour le moment, niveau solution :
    - epoll pour remplacer le select => limitation dépassée
    - inotify pour éviter les accès disque non nécessaires

    Je suis désormais confronter à une autre limitation : inotify et son max_user_instances.

    J'ai fait pas mal de recherche sur le net concernant les serveurs multi-clients fortement chargés et malheureusement il n'y a pas tellement de matière sur ce sujet.

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 442
    Par défaut
    Citation Envoyé par spin0us Voir le message
    Je suis en plein dans le même type de problématique que toi, à ceci prêt que j'ai déjà expérimenté les limitations du système.
    Dans mon cas c'est donc un serveur multi-client qui doit encaisser plus de 2000 connexions simultanées avec pour chaque client un dialogue continue (donc bye bye le cache).

    La plateforme est un serveur mono proc (celeron 2.4Ghz) avec 2 Go de ram et 80Go de disque. Le CPU n'atteint pas ses limites. Le disque par contre ... ben il rame. Après plusieurs analyse de perfs pendant la charge, il apparaît que c'est en lecture qu'il à le plus de mal. Maintenant dans mon cas, j'ai aussi un base de données mysql fortement sollicitée, et pas mal de scripts qui tournent en parallèle de tout ça pour servir les informations utiles pour le dialogue avec les clients.
    Je vais peut-être dire une ânerie, mais tu atteins peut-être le stade où il serait plus avantageux d'investir dans une machine supplémentaire que dans du temps de développement.

    Je n'aime pas le dire, d'ailleurs, car j'ai appris à programmer sur des machines très modestes et j'ai tendance à optimiser autant que je le peux. Mais le load balancing, ça peut être très intéressant à mettre en place, aussi.

  8. #8
    Membre confirmé Avatar de spin0us
    Profil pro
    Inscrit en
    Février 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 87
    Par défaut
    C'est déjà prévu, mais ajouter une bécanne par tranche de 1000 clients ça va vite devenir fastidieux sachant qu'elles doivent être synchro niveau fichier et base de données ...

    Par contre, j'ai déjà prévu de passer sur du plus musclé, avec un multi-proc et surtout du RAID et 12Go de RAM.

    Désolé pour le squat du topic

Discussions similaires

  1. [SQL Server] SELECT TOP n FROM
    Par juniorAl dans le forum Langage SQL
    Réponses: 7
    Dernier message: 24/11/2009, 10h06
  2. [c#][SQL Server 2005] Faire un simple select
    Par skystef dans le forum Accès aux données
    Réponses: 1
    Dernier message: 19/12/2006, 06h38
  3. [C#] Comment faire un simple SELECT à SQL Server ?
    Par Rodie dans le forum Accès aux données
    Réponses: 15
    Dernier message: 30/10/2006, 18h04
  4. Réponses: 10
    Dernier message: 10/05/2006, 10h44
  5. faire rectangle de selection puis cut/paste
    Par linkB2 dans le forum 2D
    Réponses: 4
    Dernier message: 28/04/2006, 12h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo