Répartir la charge

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

Nitou
WRInaute impliqué
WRInaute impliqué
 
Messages: 929
Inscription: 1 Déc 2002

Message le Jeu Avr 10, 2003 0:04

Jocelyn a écrit:Je conseille de regarder dans le guide Apache sur l'URL rewriting, qui comporte un paragraphe dédié à la technique de la répartition de charge

Jocelyn


J'aurais bien voulu le faire avec la méthode citée dans cette page mais le script PERL qui va avec ne semble pas fonctionner :cry:

Nitou
WRInaute impliqué
WRInaute impliqué
 
Messages: 929
Inscription: 1 Déc 2002

Message le Jeu Avr 10, 2003 17:00

Dites quelqu'un aurait la solution à ce probleme :

Je m'explique, pour avoir l'utime du serveur, le script s'execute ainsi :

Code: Tout sélectionner
    $buffer = `utime`
    ereg("averages: ([0-9][.][0-9][0-9]), ([0-9][.][0-9][0-9]), ([0-9][.][0-9][0-9]*)", $buffer, $load);
    return max((float)$load[2], (float)$load[3], (float)$load[4]);


Cependant j'ai un gros probleme, PHP interdit les backquotes "`utime`" par contre perl qui utilise la meme commande, lui l'autorise donc j'ai essayer un truc de ce genre :

Code: Tout sélectionner
    $buffer = readfile('/home/path/uptime.pl');
    ereg("averages: ([0-9][.][0-9][0-9]), ([0-9][.][0-9][0-9]), ([0-9][.][0-9][0-9]*)", $buffer, $load);
    return max((float)$load[2], (float)$load[3], (float)$load[4]);


Uptime.pl lui donne ça : 5:55PM up 9 days, 5:01, 0 users, load averages: 1.37, 1.21, 1.10

Si je remplace $buffer = readfile('/home/path/uptime.pl'); par $buffer = "5:55PM up 9 days, 5:01, 0 users, load averages: 1.37, 1.21, 1.10"; le script fonctionne correctement, donc j'en déduis que le buffer n'arrive pas à récupérer la variable de uptime.pl, je pense que c'est mon code qui n'est pas bon, Quelqu'un aurait une idée ?

uptime.pl lui ne sort rien d'autre qu'une ligne quand on l'éxécute à savoir : "5:55PM up 9 days, 5:01, 0 users, load averages: 1.37, 1.21, 1.10"

Merci de votre aide :(

Jocelyn
WRInaute impliqué
WRInaute impliqué
 
Messages: 564
Inscription: 6 Nov 2002

Message le Ven Avr 11, 2003 13:02

Je n'ai pas testé le script de répartition de charge en perl auquel je faisais référence, donc je ne peux rien en dire d'autre.

Pour le PHP, quelques idées :
- PHP n'interdit les backquotes, mais le "safemode" de PHP, s'il est activé, les interdit
- la fonction utime() (ou un équivalent) n'existe pas (ou j'ai mal cherché)
- la fonction readfile est interdite par le "safe mode"
- la fonction readfile renvoie un code d'erreur qui permet de savoir si elle s'est correctement exécutée
- si le fichier '/home/path/uptime.pl' n'est pas dans DOCUMENT_ROOT ni dans include_path, ça ne fonctionnera pas
- on peut utiliser fread pour obtenir le même résultat
- au besoin, modifier la valeur de error_reporting et de 'display_errors' grâce à ini_set

Voila, pas d'autres suggestions. :wink:

Jocelyn

Nitou
WRInaute impliqué
WRInaute impliqué
 
Messages: 929
Inscription: 1 Déc 2002

Message le Ven Avr 11, 2003 14:54

Jocelyn a écrit:Je n'ai pas testé le script de répartition de charge en perl auquel je faisais référence, donc je ne peux rien en dire d'autre.

Pour le PHP, quelques idées :
- PHP n'interdit les backquotes, mais le "safemode" de PHP, s'il est activé, les interdit
- la fonction utime() (ou un équivalent) n'existe pas (ou j'ai mal cherché)
- la fonction readfile est interdite par le "safe mode"
- la fonction readfile renvoie un code d'erreur qui permet de savoir si elle s'est correctement exécutée
- si le fichier '/home/path/uptime.pl' n'est pas dans DOCUMENT_ROOT ni dans include_path, ça ne fonctionnera pas
- on peut utiliser fread pour obtenir le même résultat
- au besoin, modifier la valeur de error_reporting et de 'display_errors' grâce à ini_set

Voila, pas d'autres suggestions. :wink:

Jocelyn


Merci Jocelyn :wink:

Le probleme c'est que pour qu'il récupère ce qu'il y a dans uptime.pl il faut qu'il l'execute pour qu'il soit lu par PERL car si je lui donne le DOCUMENT_ROOT il va lire ce qu'il y a dans le fichier uptime.pl mais il me donnera pas l'Uptime du serveur car il ne sera pas interprété, ce que je cherche c'est comment ouvrir avec une URL du genre http://www.site.com/uptime.pl

donc si j'ouvre l'url avec un readfile par exemple, il charge bien la page mais il ne garde pas l'uptime (5:55PM up 9 days, 5:01, 0 users, load averages: 1.37, 1.21, 1.10) pour le donner au buffer :((

Si quelqu'un sait, merci d'avance :)

Nitou
WRInaute impliqué
WRInaute impliqué
 
Messages: 929
Inscription: 1 Déc 2002

Message le Ven Avr 11, 2003 15:22

Finalement j'ai réussi grâce à toi :)

Merci beaucoup

J'ai fais ça en fait :

Code: Tout sélectionner
    $filename = "http://www.site.com/dossier/uptime.pl";
    $fd = fopen($filename, "r");
   $buffer = fread($fd, filesize ($filename));
    ereg("load averages: ([0-9][.][0-9][0-9]), ([0-9][.][0-9][0-9]), ([0-9][.][0-9][0-9]*)", $buffer, $load);
    return max((float)$load[2], (float)$load[3], (float)$load[4]);
    fclose($fd);


Si tu penses que ça peut etre optimisé, dis le stp :)

Encore merci

Jocelyn
WRInaute impliqué
WRInaute impliqué
 
Messages: 564
Inscription: 6 Nov 2002

Message le Ven Avr 11, 2003 16:07

Bon, tant mieux , ma liste de suggestions a servi à quelque chose. C'était quoi ? problème de "safe mode" ?

Oui, je propose une optimisation de l'expression régulière :
Code: Tout sélectionner
ereg("load averages: ([0-9]\.[0-9]{2})(, ([0-9]\.[0-9]{2})){2}", $buffer, $load);

devrait fonctionner aussi avec les exemples que tu as précédemment donnés.

{n} -> exactement n fois ce qu'il y a dans le groupe de parenthèses qui précède.

Remarque : tu devras faire des essais pour savoir quels sont les éléments du tableau $load qui t'intéressent.

Jocelyn

Nitou
WRInaute impliqué
WRInaute impliqué
 
Messages: 929
Inscription: 1 Déc 2002

Message le Ven Avr 11, 2003 16:10

Jocelyn a écrit:Bon, tant mieux , ma liste de suggestions a servi à quelque chose. C'était quoi ? problème de "safe mode" ?

Oui, je propose une optimisation de l'expression régulière :
Code: Tout sélectionner
ereg("load averages: ([0-9]\.[0-9]{2})(, ([0-9]\.[0-9]{2})){2}", $buffer, $load);

devrait fonctionner aussi avec les exemples que tu as précédemment donnés.

{n} -> exactement n fois ce qu'il y a dans le groupe de parenthèses qui précède.

Remarque : tu devras faire des essais pour savoir quels sont les éléments du tableau $load qui t'intéressent.

Jocelyn


Le probleme est effectivement lié au safemode, du moins je pense mais la fonction readfile fonctionne :?: :?:

Merci pour tes suggestions :)

olivierb
WRInaute discret
WRInaute discret
 
Messages: 110
Inscription: 11 Juil 2003

Message le Lun Déc 15, 2003 19:57

salut,

je fais remonter ce sujet car j'ai testé le système round-robin mais ça ne semble pas marcher.

Tout le monde arrive à chaque fois sur le meme serveur.

J'ai mis ceci dans mon fichier d'enregistrement

Code: Tout sélectionner
$ttl 86400
internetservices-fr.com.        IN      SOA     ns1.i-services.net. webmaster.i-services.net. (
                        2003011604
                        21600
                        3600
                        604800
                        86400 )
internetservices-fr.com.        IN      NS      ns1.i-services.net.
                IN      NS      ns.ovh.net.
                IN      MX      10 mail.internetservices-fr.com.
                IN      A       213.186.39.149
www0            IN      A       213.186.39.149
www1            IN      A       213.186.39.207
mail            IN      A       213.186.39.149
smtp            IN      A       213.186.39.149
sql             IN      A       213.186.39.207
dev             IN      A       213.186.39.207
www             IN      CNAME   www0.internetservices-fr.com.
                IN      CNAME   www1.internetservices-fr.com.


et si je fais une requete avec dig j'obtiens un message d'erreur

Code: Tout sélectionner
[root@ns1 root]# dig www.internetservices-fr.com @ns1.i-services.net

; <<>> DiG 9.2.3 <<>> www.internetservices-fr.com @ns1.i-services.net
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 42762
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.internetservices-fr.com.   IN      A

;; Query time: 1 msec
;; SERVER: 213.186.39.149#53(ns1.i-services.net)
;; WHEN: Mon Dec 15 19:51:45 2003
;; MSG SIZE  rcvd: 45


alors que si je retire les lignes avec le cname j'ai une section "answer" et le statut "noerror"

ou me suis-je trompé ??

merci

Olivier

Répartir la charge

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités