Page 1 sur 1

Temps de chargement - Test de performance

Posté : 13 mai 2011, 23:36
par Netek
Bonjour à tous,
J'ai un assez gros problème de temps de chargement des pages sur le serveur d'un client, je vous expose mon problème :

Donc j'ai 2 serveurs :

Le mien :
Un mutualisé chez OVH, 90plan, qui est l'equivalent de l'offre "Pro" 100Go aujourd'hui
Systeme Linux (je n'ai pas trouvé plus d'info sur l'OS)
PHP 5.2.17
Donc hébergement plutot classique


Le serveur de mon client :
Un serveur dédié chez Ikoula
CPU GenuineIntel, Intel(R) Xeon(R)CPU X3330 @ 2.66GHz
4 go de ram, 2x1 to sata raid 1 hard
Systeme CentOS 5
PHP 5.2.10
Donc logiquement + puissant que mon serveur.


J'ai fait ce petit script en PHP pour tester :
for($i=0;$i<10000;$i++)
{
 echo "<div></div>";
}
J'ai mis les bonnes fonctions avant et apres pour recuperer le temps de chargement de la page.

Resultat :

Mon serveur : Temps de chargement entre 0.01 et 0.03s
Serveur de mon client : Temps de chargement entre 0.21 et 0.33s

On voit deja une différence ...

--------------------------------------------------

Ensuite, dans le div j'ai ajouté un id, donc :
echo "<div id='test'></div>";
Resultat :

Mon serveur : Temps de chargement entre 0.01 et 0.04s
Serveur de mon client : Temps de chargement entre 0.33 et 0.47s

--------------------------------------------------

Maintenant avec un id qui fait 40 caracteres :

Resultat :

Mon serveur : Temps de chargement entre 0.01 et 0.07s
Serveur de mon client : Temps de chargement autour de 1.5s

--------------------------------------------------

J'ai poussé le vice un peu plus loin avec un id de 5000 caracteres ( a peu pres )

Resultat :

Mon serveur : Temps de chargement entre 0.6 et 1s
Serveur de mon client : Temps de chargement de 73s !

--------------------------------------------------

Ca n'a rien a voir avec l'id lui même, a la base j'avais des onclick, onmouseover, onmouseout etc avec plusieurs fonctions js dans chaque et ca donnait le même résultat. Donc ca a l'air de venir de la taille des "infos" du div.

Voila donc si quelqu'un a une idée ou une piste pour régler ce problème ...
Merci d'avance :)

Re: Temps de chargement - Test de performance

Posté : 14 mai 2011, 00:18
par devlop78
Certainement dû à la configuration de PHP et du système. Il faudrait comparer à config égale. Par exemple, même si je trouverais ça étonnant, regarder du côté de ob. Peut-être une différence de configuration entre php et la sortie.

As-tu essayé avec des boucles sans sortie "echo" ? Juste avec des calculs, des instanciations, des ouvertures de fichiers ?

Re: Temps de chargement - Test de performance

Posté : 14 mai 2011, 00:43
par Netek
Salut, non en effet ca semble etre liés aux "echo"
Tu aurais une piste ?

Merci d'avance.

Re: Temps de chargement - Test de performance

Posté : 14 mai 2011, 04:03
par devlop78
Il faut voir sa config. Mais j'ai du mal à comprendre ce qui peut pousser jusqu'à 73 secondes ...

Regardes déjà si ob_start n'est pas implicitement appelé ou l'inverse (compare ta config avec la sienne). Regarde aussi si il n'y a pas de scripts en "append", qui s'execute après le tiens, et qui effectuerait un parsage de la sortie, par exemple. Regarde aussi le nombre d'octets configurés pour un ob_flush implicitement appelé. Enfin ... Je n'en sais rien en fait ;)

Re: Temps de chargement - Test de performance

Posté : 14 mai 2011, 09:26
par moogli
salut,

effectivement faudrait tester sur des conf identique de php, voir de version.

Je m'étonne des 73s quand, par défaut, le time out est de 30s ;)

n'y aurait il pas un parse du html automatique (tidy ou autre ?)

@+

Re: Temps de chargement - Test de performance

Posté : 14 mai 2011, 09:53
par Netek
Salut,
Merci pour vos réponses.

Je ne suis pas super calé donc j'ai un peu de mal a verifier ce que vous m'indiquez.

Pour le timeout il est sur 480.

J'ai comparé les 2 configs avec phpinfo() et j'ai vu par exemple que sur le serveur de mon client ( ou c'est lent ) il y a bzip2 d'activé et pas sur le mien.

Apres pour savoir si ob_start est implicitement appelé, je peux le voir ou ? pareil pour ob_flush, je la trouve ou cette info ?

Re: Temps de chargement - Test de performance

Posté : 14 mai 2011, 13:01
par moogli
cela peut venir de
implicite_flush
output_handler (mais la j'y crois pas trop)
output_buffering (comme l'indique devlop78)
tidy clean_output


ce sont les possibilités que je vois si le pb n'arrive qu'a l'affichage (d'après ta réponse a la 1ere question de devlop78)

@+

Re: Temps de chargement - Test de performance

Posté : 14 mai 2011, 14:51
par Netek
Ah le output_buffering est a 4096 sur le serveur de mon client et a "no value" sur le mien !
output_handler et implicite_flush sont sur off
je n'ai rien trouvé a propos de "tidy" dans la config php

J'ai testé de passer output_buffering a off dans un htaccess mais ca n'a pas l'air d'avoir fonctionné :

Code : Tout sélectionner

php_flag output_buffering off
Je tenterai ce soir de modifier directement dans le php.ini

En esperant que ce soit ca :)

Merci

Re: Temps de chargement - Test de performance

Posté : 15 mai 2011, 11:11
par Netek
Bon j'ai changé la directive dans php.ini mais ca n'a rien changé :(
J'ai donc essayer avec output_buffering = Off et avec output_buffering = 0 mais non
J'ai bien redemarré apache et verifié dans phpinfo() que la valeur avait bien été mise a jour.

Une autre idée ? :s

Merci pour votre aide.

Re: Temps de chargement - Test de performance

Posté : 25 mai 2011, 12:03
par Netek
Bon,
L’hébergeur n'a pas été capable de trouver la source du problème mais j'ai réussi a le "contourner" en utilisant la compression http://www.en1heure.com/compresser_ses_ ... eflate.php

Et la c'est nikel, le temps de transfert des données est quasi instantané.

Voila voila :)

Re: Temps de chargement - Test de performance

Posté : 25 mai 2011, 12:21
par popy
Ben, 10000 fois 5000 caractères, ça fait un peu plus de 47Mo à transférer. Si en plus de ça ca flush tous les 5000 caractères, oui, ca peut poser problème.

Le coup de la compression gzip évite les flushs a répétitions ET la taille à envoyer.