Question Cluster

Discussion dans 'Administration d'un site Web' créé par oliv63, 13 Août 2005.

  1. oliv63
    oliv63 WRInaute occasionnel
    Inscrit:
    6 Janvier 2005
    Messages:
    381
    J'aime reçus:
    0
    Bonjour,

    je développe actuellement sur une machine local un projet Web nécessitant beaucoup de ressources et une utilisation précise de la fonction getmicrotime() de php.
    J'ai de suite pensé à l'offre Cluster que OVH propose et qui résoudrait les problèmes de ressources. Mais quelques points restent en suspend quant à ce choix.

    En effet, j'ai testé mon application (validée en local) sur un compte de type 60gp pour voir son fonctionnement sur un cluster. Là un problème survient, l'application ne fonctionne pas car il s'avère que le nombre de millisecondes retourné par la fonction getMicroTime dépend de l'heure du serveur sur lequel le script est executé, et je pense que les serveurs du cluster 60gp ne sont pas synchronisés. Il s'agit là d'une supposition, mais c'est la seule raison qui expliquerait les problèmes.

    Ne m'y connaissant pas énormément en architecture serveur de ce type,
    Seriez-vous en mesure de confirmer mes dires (ou de les démentir :D ) ?

    Je crains que ce problème posé sur 60gp, soit aussi présent sur une Offre Cluster, or, c'est le pilier de mon projet.

    Pouvez-vous me conseiller quand à la stratégie matérielle à adapter pour que la fonction getmicrotime soit spécifique au cluster (heure synchronisé de tous les serveurs) et non pas a chaque serveur.

    Merci d'avance pour votre réponse.
     
  2. thibo
    thibo Nouveau WRInaute
    Inscrit:
    24 Juin 2005
    Messages:
    42
    J'aime reçus:
    0
    Si le problème vient du fait que ton horloge et la leur ne sont pas synchro, tu n'as qu'à synchroniser la tienne sur la leur. Il y a certainement moyen !

    :wink:
     
  3. oliv63
    oliv63 WRInaute occasionnel
    Inscrit:
    6 Janvier 2005
    Messages:
    381
    J'aime reçus:
    0
    En fait non, c'est pas ça le probleme :D

    Disons qu'en local, l'application ne tourne que sur une unique machine donc y'a pas de probleme, puisque getmicrotime est unique. En passant l'application totalement sur leur cluster (pas de liaison ac le local) getmicrotime dépend de l'heure du serveur sur lequel le script est éxécuté dans le cluster. Enfin je pense que ça vient de là ?

    Est ce que j'arrive à me faire comprendre ? :roll:
     
  4. thibo
    thibo Nouveau WRInaute
    Inscrit:
    24 Juin 2005
    Messages:
    42
    J'aime reçus:
    0
    Oui, c'est ce que j'avais cru comprendre. Et c'est fort possible que ta fonction récupère "l'heure de leur serveur" (pas mal celle-là :D ). Mais comme je n'ai pas plus d'infos sur l'utilisation de cette commande (à quoi elle sert dans ton projet), je peux pas t'en dire plus.

    Et j'ai du mal à comprendre ce qu'une désynchro pourrait provoquer comme problème : si ton temps de référence T0 et ton temps actuel Tx sont pris sur la même horloge, ton intervalle est toujours le même.
    Sauf si tu fais quelque chose qui doit être synchronisé avec l'horloge d'une zone (France, ou autre), auquel cas tu peux peut-être resynchroniser avec ton code (vérifie la différence, et ajoute ou retranche la).

    Je sais pas si je suis très clair, ni c'est très utile ...

    :wink:
     
  5. oliv63
    oliv63 WRInaute occasionnel
    Inscrit:
    6 Janvier 2005
    Messages:
    381
    J'aime reçus:
    0
    Pour commencer, Merci pour ta réponse si rapide :wink:

    On commence à se comprendre lol

    Comme tu as di

    ce cas est vrai en local puisque c'est toujours l'horloge de la même machine qui est sollicité.

    En revanche, dans un cluster, le script est éxécuté par des serveurs différents, donc qui ont probablement des horloges différentes (et c'est là ou est ma question).

    J'ai fait un dialogue en direct en flash php mysql, chaque message à un temps en milliseconde (fonction getmicrotime() ) comme attribut, qui servt à l'ordre et à la récupération des messages. Par exemple toutes les 10 secondes on récupère les messages qui ont été postés dans l'intervalle de temps entre le temps x et le temps x-10. Partant de là si on a des horloges désynchronisées, des messages se perdent en route, on ne les vois pas tous etc...

    Je sens que ça vient... lol

    :D

    merci
     
  6. oliv63
    oliv63 WRInaute occasionnel
    Inscrit:
    6 Janvier 2005
    Messages:
    381
    J'aime reçus:
    0
    J'ai reçu une réponse du service commercial d'OVH

    donc en gros les serveurs des cluster 60gp ne sont pas synchro :)
     
  7. Morph1er
    Morph1er WRInaute occasionnel
    Inscrit:
    7 Juillet 2004
    Messages:
    280
    J'aime reçus:
    0
    Je ne comprensd pas :( . Un cluster se fait avec des serveurs dédiés... Faire du clustering avec du mutualisé... C'est plutot hors nome dirons-nous ;).


    Si tu as des problèmes de synchronisation entre tes différents serveurs dédiés. Tu fait des Cron toutes les heures pour recaler tous tes serveurs à l'heure atomique par exemple.

    Mais bon jouer au Ms prêt, c'est un peu bizarre comme méthode de programmation surtout sur un environnement cluster "low-cost" et surtout sur un environement Web. Sache que le ping moyen en adsl est de 40 Ms ;) et 120Ms en 56k... Sans compter la latence sur le réseau interne de l'hébergeur qui est faible mais qui pourra jouer aussi...
     
  8. Digit
    Digit WRInaute occasionnel
    Inscrit:
    18 Avril 2003
    Messages:
    441
    J'aime reçus:
    1
    Autre piste, utilise now() de mysql plutôt que l'heure de la machine faisant tourner Apache. Parfois c'est mieux.
    Bien entendu, si c'est une machine différente qui fait tourner mysql.
    A défaut, il te faudrait créer ta fonction artificielle de synchronisation : tu identifies le serveur le plus ancien (temps T), et pour chaque serveur du cluster tu définis la valeur de la désynchro (T+k), ce qui te permet de recalculer une heure correcte pour tes messages, quelque soit le serveur l'ayant traité.
     
  9. oliv63
    oliv63 WRInaute occasionnel
    Inscrit:
    6 Janvier 2005
    Messages:
    381
    J'aime reçus:
    0
    et pourtant si, c'est bien ce que fais OVH par exemple, selon ton ip et la charge tu es redirigé sur tel ou tel serveur du cluster...

    Toutes la gestion du temps est locale, je m'explique :

    Un mr X poste un message sur le serveur, ce message sera enregistré dans la bdd avec pour attribut le nombre de millisecondes écoulés depuis le 01/01/1970 et ce en appelant la fonction getmicrotime du serveur. On apelle cet instant "t".

    Un mr Y consulte toutes les 10 secondes les messages grace à un script php sur le serveur. Ce script lance getmicrotime, la valeur récupérée est y, et récupère tout les messages dont l'attribut time (dont j'ai parlé précedemment) est compris entre l'instant y-10000 (10 secondes) et y.

    Ceci me permet de ne perdre aucun message avec un chat PHP MYSQL Flash et fonctionne vraiment bien sur un serveur unique (puisqu'il est toujours synchro ac lui même :wink: ).

    Avec plusieurs serveurs, ben il faut qu'ils soient synchro entre eux.

    Mais est ce que synchroniser chaque serveur du cluster toutes les dix minutes sur une horloge atomique par exemple (voir la synchronisation ntp), ne vas pas provoquer des pertes de messages de temps en temps telle est la question...

    A ton avis ? :roll:

    Merci pr ta réponse Morph
     
  10. oliv63
    oliv63 WRInaute occasionnel
    Inscrit:
    6 Janvier 2005
    Messages:
    381
    J'aime reçus:
    0
    Merci pour ta réponse Digit

    MySQL sera exécuté sur tous les serveurs du cluster car le goulot d'étranglement de l'application est SQL, car beaucoup de requête à traiter, c'est pourquoi MySQL ne sera pas sur une seule machine -> on en revient au même problème avec now :( .

    N'étant pas un expert je vais m'orienter vers NTP. Apparement le défaut de celui-ci et de changer violemment l'heure du serveur si la commande n'est pas faite souvent. Mais peut être qu'avec un resynchro toutes les cinq minutes pour chaque serveur permet de ne pas avoir de décalage, je ne sais pas, je suis un peu perdu :oops:
     
  11. thibo
    thibo Nouveau WRInaute
    Inscrit:
    24 Juin 2005
    Messages:
    42
    J'aime reçus:
    0
    On se comprend :D

    Même si les horloges internes de nos machines ont un cadencement quasiment identique, tu riques quand même d'avoir des pertes en allant titiller les millèmes de secondes. La solution peut-être : resynchroniser à chaque requête, mais ça ne va peut-être pas plaire ) la machine qui doit gérer des synchronisations aussi fréquentes.

    :wink:
     
  12. oliv63
    oliv63 WRInaute occasionnel
    Inscrit:
    6 Janvier 2005
    Messages:
    381
    J'aime reçus:
    0
    je vais faire des test sur ma bécane linux, voir combien une machine perd en 5, 10, 20 minutes...

    sinon il existe clocktime qui est apparement étonnement précis pour ce genre d'application, puis en mem temps si y'a un message perdu tout les 10000 c'est pas trés grave, ce n'est qu'un chat public...
     
Chargement...
Similar Threads - Cluster Forum Date
JavaScript et API Gmaps - Clusters de markers contenu dans une base de donnée Développement d'un site Web ou d'une appli mobile 15 Août 2015
Clustering Débuter en référencement 16 Avril 2014
Comment acceder au clustering ? Référencement Google 10 Juillet 2012
Double résultat (Clustering?) dans Google / Remède à tester? Référencement Google 23 Février 2012
Serveurs dédiées OVH : cluster ou redondance de services Administration d'un site Web 14 Novembre 2011
Google indexe cluster010.ovh.net/mon_site Crawl et indexation Google, sitemaps 24 Octobre 2010
Nouvelle forme de clustering Référencement Google 22 Octobre 2010
Fin du clustering ? Référencement Google 12 Octobre 2010
MAJ de l'algo Google : clusterisation des résultats sur les requêtes navigationelles Référencement Google 1 Septembre 2010
Conseil pour le choix de serveur ou cluster Administration d'un site Web 4 Avril 2010
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice