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

Web & réseau Delphi Discussion :

Simple question IdTCP


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juin 2012
    Messages : 142
    Par défaut Simple question IdTCP
    Bonsoir ,

    Avec IdTcpclient et idTcpserver dans la même application y a-t-il un risque de bug, style blocage de l'application ou lenteur , en sachant qu'un Thread est lancé pour la réception des messages clients ?

    Je voudrais mettre la partie serveur dans un "DataModule".

    Ça m'embête un peu de faire 2 applications

    Merci pour votre réponse

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juin 2012
    Messages : 142
    Par défaut Simulation
    Tout conte fait c'est pas plus mal qui reste en externe , j'ai fait une simulation avec 30 clients connectés ou j'ai intégré un timer a chaque clients qui envoi un message privée chaque secondes a un client aléatoire connecté sur le serveur, le résultat c'est que mon CPU est monté a 100% mon processeur et un AMD fx-9370 (4.4 ghz) 8 cœurs , 8 GO de RAM , j'ai laissé la simulation une bonne heure , aucun plantage côté client que côté serveur sa fait pas mal d’échange 30 clients qui envoi un message tout les secondes au serveur qui lui doigt renvoie se message au destinataire sa fait 30 x 30 = 900 messages secondes.

    Les messages envoyer été aléatoire sur une longueur de chaire a 255 caractères.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juin 2012
    Messages : 142
    Par défaut Serveur
    Je serai bien curieux de savoir sur quoi son installé les serveurs de différent IRC sur le net , je pence pas que c'est juste un PC (Standard) qui gère le serveur car cela demande énormément de ressource.

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Je note que tu as fait des tests très similaires aux miens

    il y a de forte chance que cela ne soit pas un Windows mais plutôt un Linux, lorsque j'ai travaillé avec du PHP, l'hébergeur fonctionnait en Ubuntu et un autre sur Fedora
    De plus, ce sont des fermes qui fusionne plusieurs lames, en fait cela peut être un tas de CPU genre 64 ou plus, qui partage des disques, ensuite le fournisseur te propose des machines virtuelles ayant un nombre défini de CPU
    C'est des architectures bien plus poussés qu'un PC de bureau

    En Windows 2000, cela plafonnait à 2000 TCP Control Block (TCB), c'était modifiable en base de registre.
    il fallait bien trouver des astuces pour que cela puisse dépasser avec des performances correctes cela en répartissant les connexions à plusieurs serveurs
    Aujourd'hui, un PC de bureau à les performances d'un monstre des années 2000

    C'est le principe du répartiteur de charge, tu te connectes sur un frontal (ou plusieurs, oui, tu peux avoir un répartiteur de charge sur les frontaux eux-même) qui ne servent que de point d'entrée,
    ces frontaux ont une ferme de serveur et en choisisse un et l'attribue au nouveau client connecté
    Un échange de 2007 sur un sujet similaire : Delphi 5 et threads en nombre

    De plus côté serveur, au lieu de créer un thread de lecture de connexion,
    le serveur va attribué plusieurs de connexions à un même thread dans une pool de thread

    Avec les anciens Delphi, dépasser 32 threads étaient contre-performants, avec FastMM ou les Delphi XE plus ce soucis
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juin 2012
    Messages : 142
    Par défaut Teste
    Fin il faut dire que le teste est extrême quand même , si sa c'est pas du flood , je faire bien un teste sous Linux avec le serveur, pour voir se que sa donne, je suis sur Embarcadero RAD Studio 2010 je dispose aussi d'un XE4 , mais galère avec les différente bibliothèques 32 & 64 ... pour installer les composants je passe 1 heures a configuré le XE4 , je me suis même dit que un jour , je réinstaller Windows 7 puis Xe4 + la configuration est je grave tout sur un blu ray.

    On gros pour monté un serveur de chat privée cher sois avec ~ 50 - 100 clients un faut un "Cyber Calculator" Ou invertir dans un carte mère double CPU "ASUS Z10PE-D16 WS" Monter sur 2 "I7"
    pour une charge de 80 clients , il faut une bécane bien huiler.

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Citation Envoyé par Gregory666 Voir le message
    il faut une bécane bien huiler.
    Il faut surtout une machine stable, tu n'as pas besoin d'un monstre, un Chat, cela ne consomme rien,
    cela ne fait que transmettre du texte d'un client à un autre, côté serveur, il n'y a pas de ressource énorme,
    une mini base embarquée pour gérer les comptes utilisateurs (tout peut se faire via un format de fichier maison)

    Ton test extrême doit simuler 10 fois plus de charge que la réalité !

    Tu évoques 50/100 utilisateurs, ce n'est rien comme charge, comme je mentionnais, tu peux monter à 2000 simultanés sur une vieille bécane de l'époque de Win2K
    Avec n'importe quel PC, tu peux faire tourner ton serveur de Chat qui n'a pas grand chose à faire qu'a router les trames vers ses clients.
    Il n'a quasiment calcul à effectuer, bien moins gourmand qu'un serveur Web devant générer de l'HTML/XML/JS/JSON ...

    Lorsque j'évoquais du répartiteur de charge, c'est plus pour des Servers Web dont le temps de calcul de la requête est plus long
    Pour un chat, sur un serveur linux, on irait sur ce genre de mécanisme lorsque l'on dépasse la dizaine de milliers d'utilisateurs en même temps, 50 c'est de la rigolade !
    Et pour les serveurs IRC, en général, il n'y a pas de répartiteur, c'est souvent une liste de nom de serveur, lorsque tu choisis un réseau de serveur, tu en testes un, si il répond pas, tu en testes un autre ...
    le répartiteur c'est l'utilisateur qui cherche un serveur disponible manuellement

    Si tu veux regarder autour de Linux, prend tout simplement l'un des nombreux serveurs Open Source !
    Si c'est juste pour avoir ton serveur, ne te fatigue pas !
    Si c'est pour le fun d'en coder un, ça c'est tout autre chose !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/10/2005, 12h46
  2. Simple Question ....
    Par soltani.slim dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 25/08/2005, 18h11
  3. [langage] simple question ...
    Par perlgirl dans le forum Langage
    Réponses: 13
    Dernier message: 16/07/2004, 13h22
  4. PageControl -> Une simple question
    Par Invité dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/05/2004, 09h19

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