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

Projets Discussion :

Estimation des flux véhiculés et hébergement approprié


Sujet :

Projets

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Estimation des flux véhiculés et hébergement approprié
    Bonjour à tous,

    Alors voilà, en ce moment moi(programmeur) et une amie(dessinatrice), sommes en train de développer un monde persistant en flash type Dofus.
    Et je me demandais comment je pourrais estimer la charge d'information véhiculée et quel type d'abonnement serveur choisir.

    En 2 / 3 mots, à l'origine il ne s'agit pas d'un jeu, mais d'un monde persistant type tchat.
    Un personnage se déplace sur la carte, rencontre d'autres personnages, discute avec et interagit par différents moyens avec elle.
    Je veux pas trop révéler d'information donc bon ceci est la base.

    Donc hum pour parler dans un langage plus technique.
    Les caractéristiques du perso sont stockés dans une bdd mysql et les appels sont effectués via du php; les requètes étant assez bien optimisées. Chaque personnage se trouve lié à une id carte (dernière carte en cours)

    Les cartes sont décrites dans des fichiers xml qui énumèrent des images fixes png ou des images animées contenues dans des fichiers flash externes swf.
    L'appel à une carte n'est effectué qu'une fois et à chaque déplacement d'un perso d'une carte à l'autre.

    La fonction tchat est décrite de 2 manières différentes:
    -Lorsqu'un des personnages écrit un texte et le valide, une requète est envoyée et un évènement lié à une carte est créé.
    Cet évènement correspond à un message émis.
    Cet évènement va permettre de créer une bulle (style bd) au dessus ou en dessous du perso avec le texte approprié.
    L'évènement en base est détruit au bout de 2 secondes.
    -En même temps que la requète, un fichier de log en xml est renseigné (limité à 200 lignes). Ce fichier est parsé toutes les 2 secondes dans flash pour récupérer le contenu du texte et l'afficher.

    Toutes les 2 secondes nous récupérons la liste de tous les persos présents sur l'id_carte de notre perso, avec leur position. Un effet de simulation de déplacement est effectué pour créer un déplacement fluide du perso si ses coordonnées ont changé.
    Un algo de pathfinding est implémenté pour le déplacement des persos.

    J'ai développé également un forum flash (avec tous les accès base que cela implique), les smileys sont listés dans un fichier xml.

    Donc voilà pour le moment ce qui a été programmé.

    Avec toutes ces infos comment estimer le serveur qui me conviendrait parfaitement ?
    Sachant que dans le pire des cas, on est limité à 20000 persos par carte
    Qu'on a aucune prévision de trafic (ca devra plaire ou pas) - Comment estimer un tel chiffre d'ailleurs ?

    Enfin il y aura du streaming pour la musique et surement des soirées streaming video.
    Hum bon après je vais pas trop développer pour que personne nous pique l'idée mais pleins de jeux seront développés, jeux d'échec, jeux de go, dessinez c'est gagné...
    et biensur des persos customisables (le détail des costumes, objets, couleurs et autres étant décrits dans la bdd)

    Donc voilà en local chez moi ca fonctionne magnifiquement bien, sur un serveur free, c'est un peu plus lent, notamment le chargement des cartes (j'ai déjà résolu les pbs de cache) mais pas trop de soucis à 2 personnes.

    Maintenant 1000 ou 10000 personnes ca sera autre chose...
    Et je ne sais pas estimer quel offre d'hebergement sera la plus appropriée.
    Donc si qq'un pouvait me conseiller...

    Merci ^^

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Points : 635
    Points
    635
    Par défaut
    Vu que tu as différents types de flux, c'est difficile de prévoir ou de faire un calcul précis. Le meilleur moyen, je pense, c'est de faire un test grandeur nature avec une dizaine de clients. Tu peux faire exemple modifier ton appli flash pour simuler un utilisateur (faire des déplacements aléatoires, envoyer un message de temps en temps etc.) Si a 10-15 utilisateurs le serveur commence à fumer, tu peux sortir le chéquier pour un hébergement dédié

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Je ne pense pas que simuler dans le code flash des utilisateurs ou des évènements soit la bonne solution. Non seulement ca alourdi le code et peut entrainer des erreurs mais en plus ces simulations seraient individuelles à chaque personne connectée. En Flash, l'appli ne s'exécute pas sur un serveur mais sur le pc du client.
    Seule la partie php est commune puisqu'elle est stockée sur un serveur apache. Donc bon à la limite je pourrais créer un bot pour simuler des utilisateurs en php, (tiens c'est vrai ca et puis ca pourrait faire office de PNJ).

    Enfin je me demande s'il n'y a vraiment pas de méthode plus générale et théorique pour estimer ses besoins, c'est à dire autrement que par des tests de charge ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Points : 635
    Points
    635
    Par défaut
    Ce que je te propose de faire c'est d'utiliser les composants de ton client (sans les modifier) pour créer un client "testeur". Je ne connais pas flash mais il doit y avoir moyen de regrouper certaines parties du codes dans des composants réutilisables. Les composants en question seraient la partie communication avec le serveur.
    Ce client testeur utiliserait donc uniquement la partie commune et ferait en boucle des évennement aléatoires.

    Ensuite tu ouvres 10-15x ce client sur un poste de test et tu regardes comment réagit le serveur.

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Oui j'ai bien compris ton idée, mais tant qu'à simuler des évènements aléatoires autant les faire en php et pouvoir ainsi régler le nombre.

    Mais en fait que ce soit en flash ou en php, ca ne simulera pas un utilisateur réel ou plus précisément une machine indépendante.
    Je m'explique, en flash les objets appelés que ce soit des xml ou des images sont stockées en cache et du coup quand on appelle le même fichier xml ou image il ne va pas refaire une demande au serveur.
    C'est assez contraignant pour les fichiers xml de discussion qui sont mis à jour en permanence (la solution étant de les appeler avec un "monfichier.xml?blabla=nbaléatoire")
    Mais qui est très utile pour les cartes (une carte étant composée d'à peu près 1000 images)
    Du coup si je venais à simuler un utilisateur dans flash avec les mêmes appels je n'aurais pas un nombre d'accès identique au serveur, puisque la charge se retrouverait réduite du temps de cache.
    Quant à simuler les requètes en php, oui mais le php n'est utilisé que pour les accès base du coup pas de simulation sur les flux xml et images...

    Bref a part avoir 50 machines qui testent...
    Ou alors désactiver le cache, ce qui ne m'arrange pas... Dans tous les cas ca me donnerait un ordre d'idée.

    Merci en tout cas, je vais réfléchir à la meilleure solution.
    (Je finis d'abords de programmer la version socle et je verrais)

  6. #6
    Membre émérite
    Avatar de lakitrid
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    1 535
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 535
    Points : 2 388
    Points
    2 388
    Par défaut
    tu peux toujours faire un client leger en Java, C, ou autre qui l'ance les requete de demande de données sans pour autant les traiter. Tu pourra ainsi simuler un peu plus la charge avec une seule machine.

  7. #7
    Membre à l'essai

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 18
    Points : 22
    Points
    22
    Par défaut
    Juste question comme ça, légèrement HS. Pourquoi tu n'utilise pas les socket au lieu de tout parser aux 2 secondes ? Ça serait pas plus léger/dynamique ?

    Et même si c'est en socket tu peux programmer php pour recevoir des données.

  8. #8
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Et bien c'est très simple je n'ai pas envie de m'embéter avec des clients lourds java (Oui java c'est lourd comparé au php ou au flash ...).
    Java demande beaucoup de ressource systême même pour un simple tchat et puis il n'est pas du tout portable, contrairement au php.
    Je ne suis pas un spécialiste de flash (ni de java d'ailleurs) mais il me semble que pour utiliser les sockets il faut utiliser java ...

    Concernant l'appli il ne s'agit pas juste d'un seul tchat général à toutes les cartes, il y a bien un tchat différent pour chaque carte et lorsqu'un pesonnage va 'crier', son message sera retransmis aux cartes alentours. Donc je vois pas très bien comment faire ca avec des sockets.

    Pour le temps de refresh de 2 secondes, il n'était là qu'à titre d'exemple et pour limiter le nombre de requètes par secondes. Si le serveur tient la charge je peux facilement baisser ce temps.

    Sinon pour tester, j'ai une autre idée : Créer une clé de cache différente pour chaque session. Ainsi je pourrais ouvrir l'application dans 50 fenètres différentes sur le même ordi (par contre je n'ai pas 50 souris pour gérer les évènements sur chacune d'entre elles ^^")


    Edit : Après une petite recherche, on peut apparemment faire des sockets en php exemple sur le net
    Par contre mon serveur actuel hébergé sur free a des restrictions sur les créations de sockets...
    Quel est l'avantage de créer des sockets par rapport au parseur ?
    En terme de performance (temps d'accès, surcharge et sécurité) laquelle est la meilleure ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Points : 635
    Points
    635
    Par défaut
    Perso j'ai de sérieux doutes sur la capacité de ton système à tenir la charge.
    Prends par exemple le forum developpez.net : pour afficher une page, entre le clic et l'arrivée de la page il s'écoule bien une seconde aux heures chargées. Imagine maintenant qu'au lieu de lire le forum, les visiteurs passent leur temps à cliquer partout ... Le temps d'attente ne sera plus d'une seconde mais bien plus long.

    L'avantage des sockets est que le client n'a pas besoin d'interroger le serveur en permanence (pull), c'est le serveur qui envoie le message lui même (push). Si pendant 5mn personne ne parle sur une carte, calcule le nombre de requêtes que tu as économisées !

    Sinon, en disant que Java n'est pas portable, tu veux lancer un troll ?

  10. #10
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci de cette explication sur les sockets, je suppose d'ailleurs qu'il faudra que je l'utilise pour les déplacements des persos et toutes les interactions en fait... Sauf pour le forum flash
    Désolé de mon ignorance en la matière...Je débute dans le métier et c'est mon premier gros projet dans des technos web, je ne connaissais pas du tout les sockets sinon je serais parti dessus de suite (mince plein de trucs à redévelopper)
    En tout cas exposé comme cela ca à l'air bien pratique.

    Et non pas de troll sur Java please

  11. #11
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 778
    Points
    5 778
    Par défaut
    Citation Envoyé par King Pingouin
    Java demande beaucoup de ressource systême même pour un simple tchat et puis il n'est pas du tout portable
    Citation Envoyé par King Pingouin
    Et non pas de troll sur Java please
    Alors évite de dire de telles inepties.

Discussions similaires

  1. [Indy] Client-serveur pour recevoir des flux videos
    Par Nicodemus dans le forum Web & réseau
    Réponses: 7
    Dernier message: 10/10/2005, 14h18
  2. [RAD] estimation des charges
    Par slim dans le forum Gestion de projet
    Réponses: 5
    Dernier message: 24/08/2004, 16h42
  3. [DOM] Comment créer des flux XML en java ?
    Par nean_j dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 27/04/2004, 12h00

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