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

NodeJS Discussion :

Mon serveur dédié pas assez puissant ?


Sujet :

NodeJS

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Points : 50
    Points
    50
    Par défaut Mon serveur dédié pas assez puissant ?
    Salut,

    J'ai développé un petit jeu multijoueur en temps réel avec node.js côté serveur.
    Les joueurs se déplacent et envoient ainsi au serveur les touches du clavier qui sont pressées, mon script côté serveur se charge de gérer les déplacements et les collisions et renvoie 30fois/secondes la position de chaque joueur sur l'écran dans une websocket à tous les joueurs de la room.
    En local tout se passe bien , mais dés que j'ai mis tout ça sur mon serveur dédié j'ai un gros problème dés que deux joueurs sont dans la partie (1joueur tout va très bien).
    J'ai de gros gros ralentissements , et du coup le jeu est complétement saccadé et injouable. J'en déduis donc que le problème vient du fait d'envoyer 2 websocket 30x/sec.

    J'ai un serveur kimsufi 16Go. Je sais que c'est pas le top mais je m'attendais pas à rencontrer des problèmes avec seulement deux joueurs...

    Le problème vient vraiment de ça ?

  2. #2
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    30 fois par seconde, ça fait un intervalle de 1000/30 = 33ms environ

    Si ton truc utilise le TCP, tu es au dessous du round-trip moyen sur de l'ADSL pour tenir ce rythme... (en gros un minimum de 36 à 40 ms pour de l'ADSL grand public)
    En local pas de souci pour échanger des messages sur ce rythme (ping en micro-secondes), en ligne sur internet faut voir.

    Vu que les websockets utilisent le http, tu es en TCP, je pense que le rythme de rafraichissement est trop élevé.

    Pour la charge de ta machine, une commande top devrait te renseigner.

    pour un tel rythme de maj, on utilise UDP, protocole non-connecté qui ne nécessite pas de ACK sur les paquets

    En réduisant ton rafraichissement de messages autour de 10à 15 par seconde, ça doit rentrer dans ce qui est réalisable
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Points : 50
    Points
    50
    Par défaut
    Salut,

    J'ai toujours utilisé les websockets du coup UDP je connais pas bien. J'ai fait quelques recherches pour son utilisation avec node j'ai trouvé de quoi m'occuper mais il y a quelque chose que je comprends pas.
    Pour ce qui est du script côté serveur pas de problème , mais comment je lis depuis le côté client ? Puisque les navigateurs ne supportent pas les connections UDP ...

    Pour envoyer les données je peux utiliser les websockets quand même mais par contre pour recevoir les données côté client ça se passe comment ?

  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    Alors pour faire suite à ce message et ton MP.

    je ne suis absolument pas spécialiste de cette question. Je te répondais d'un point de vue général sur ta problématique.

    les websockets TCP permettent des gains en latence, puisque tu n'ouvres plus une nouvelle connexion à chaque requête, et que les messages peuvent être à l'initiative des 2 peers connectés.
    Ca reste du TCP et tous les paquets sont acquittés, il peut y avoir de la retransmission, de la gestion de congestion...

    Concernant UDP, pour l'instant rien de standard, mais un draft est en cours sur un protocole qui se nomme webRTC :

    http://www.webrtc.org/

    le principe sera d'avoir un canal de communication UDP basé sur RTP et un canal de contrôle de flux en //, un peu à la façon des protocoles SIP.
    Autre atout de taille visiblement, du vrai peer to peer, sans l'intermédiaire d'un serveur, et la capacité de faire du NAT traversal.

    Ce sera en principe du vrai temps réel, mais de toute façon il faudra gérer les latences et les aléas du réseau, sachant que l'internet est par essence best-effort.

    Voilà après dans le cadre d'un navigateur, aujourd'hui, je pense qu'il te faut une surcouche type applet java ou flash, et je ne sais pas dans quelle mesure tu peux accéder aux interfaces réseaux du système pour créer des sockets UDP. Je pense que tu ne peux pas comme ça.
    Après il reste la solution des plug-ins navigateurs qui te permettent plus de choses, mais c'est pareil, je ne pense pas que tu y accèdes comme ça.

    Mais il y a surement des solutions que je ne vois pas, sinon celle évidente de faire une appli indépendante des navigateurs.
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Points : 50
    Points
    50
    Par défaut
    Ok merci , je vais me renseigner sur tout ça , surtout sur l'utilisation d'une surcouche flash.

Discussions similaires

  1. Alerte de mon hebergeur aus sujet de mon serveur dédié
    Par sulfurex dans le forum Sécurité
    Réponses: 1
    Dernier message: 28/02/2012, 08h15
  2. Réponses: 4
    Dernier message: 02/02/2011, 18h38
  3. Que choisir pour mon serveur dédié ?
    Par wissyy dans le forum Hébergement
    Réponses: 2
    Dernier message: 16/09/2010, 23h07
  4. [EasyPHP] IIS/utiliser mon serveur et pas localhost
    Par fantagaro dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 04/07/2007, 17h49
  5. Mon serveur est-il assez puissant ?
    Par n@n¤u dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 5
    Dernier message: 08/02/2007, 21h44

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