Temps de chargement - Test de performance

Temps de chargement - Test de performance - PHP - Programmation

Marsh Posté le 13-05-2011 à 15:16:42    

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 :
 
( Désolé si je ne suis pas dans la bonne section )
 
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 :
 

Code :
  1. for($i=0;$i<10000;$i++)
  2. {
  3. echo "<div></div>";
  4. }


 
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 :

Code :
  1. 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 :)

Reply

Marsh Posté le 13-05-2011 à 15:16:42   

Reply

Marsh Posté le 13-05-2011 à 15:54:58    

Commence par la : http://pagespeed.googlelabs.com/
 
Sinon regarde si ya pas des histoire de compression dans apache ou dans module en trop ...


Message édité par GordonF_69 le 13-05-2011 à 15:56:23
Reply

Marsh Posté le 13-05-2011 à 16:04:52    

tu lances tes scripts comment ? en les ouvrant dans ton  navigateur ?


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

Reply

Marsh Posté le 13-05-2011 à 16:04:53    

Salut et merci pour ta réponse.
 
Score de 99/100 ^^ Logique il n'y a rien dans ma page a part ce script ( et le code HTML habituel )
Ca doit etre due a un module dans Apache oui ... mais je m'y connais pas trop en configuration Apache, tu aurais une idée d'un module en particulier qui pourrait ralentir le script php ?
J'ai recherché vite fait dans les infos php des 2 serveurs en tapant "compress" et il y a une différence : bzip2 installé et activé sur le serveur de mon client alors qu'il n'est pas present sur le mien.
Ca pourrait etre ca ? Je vais voir pour le desactiver.
 
Merci d'avance

Reply

Marsh Posté le 13-05-2011 à 16:05:14    

flo850, oui je les ouvres dans le navigateur

Reply

Marsh Posté le 13-05-2011 à 16:21:49    

est ce que n'as pas , tout simplement , un débit ou une latence de merde avec ikoula
 
que donne un ping ?


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

Reply

Marsh Posté le 13-05-2011 à 16:25:01    

Non aucun probleme avec le ping.
Mais la c'est clairement pas un probleme de latence. plus il y a d'info sur le div plus c'est long, 73s ca ferait une sacrée latence ^^

Reply

Marsh Posté le 13-05-2011 à 16:32:12    

et le débit ?


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

Reply

Marsh Posté le 13-05-2011 à 16:41:55    

Hm le debit, je peux le voir comment ?

Reply

Marsh Posté le 13-05-2011 à 17:14:18    

Tes temps, ce sont des mesures entre une heure de début et de fin dans les scripts php ou entre le moment où le navigateur appel le script php et qu'il a fini de charger la page?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 13-05-2011 à 17:14:18   

Reply

Marsh Posté le 13-05-2011 à 17:38:37    

Voila le script avec le calcul du temps :
 

Code :
  1. function getmicrotime()
  2. {
  3. list($usec,$sec) = explode(" ",microtime());
  4. return ((float)$usec + (float)$sec);
  5. }
  6. $debut = getmicrotime();
  7. for($i=0;$<10000;$i++)
  8. {
  9. echo "<div id='test'></div>";
  10. }
  11. $fin = getmicrotime();
  12. echo round($fin - $debut, 3);


 
Merci.

Reply

Marsh Posté le 13-05-2011 à 23:35:18    

C'est le CPU qui fait tt ramer, normalement un petit script comme ca ne devrait pas prendre de temps ...
 
Connecte toi au pc et regarde les processus en cours ... (top sous linux)

Reply

Marsh Posté le 13-05-2011 à 23:47:18    

Hm non apparemment c'est pas ca.
J'ai executé le script avec les id de 5000 caracteres, ca a duré 80s de chargement et pendant ce temps le seul processus qui est monté c'est mysqld, qui est monté a 15% max.
( bizarre que mysqld monte alors qu'il n'y a pas du tout de sql dans mon script ? )
les autres processus ne depassent pas les 0.5%

Reply

Marsh Posté le 16-05-2011 à 10:19:01    

Le temps que tu mesures est uniquement celui côté php : ce n'est pas le temps que ça va prendre pour afficher la page côté client dans le navigateur. Or, pour un site, bien souvent le temps de chargement côté client est plus long que celui de génération de la page par php.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 16-05-2011 à 12:29:17    

Oui justement c'est bien ca le soucis, le ralentissement vient du transfert des données, pas du traitement lui meme ni de l'affichage.

Reply

Marsh Posté le 16-05-2011 à 12:50:36    

Erobaka a écrit :

Oui justement c'est bien ca le soucis, le ralentissement vient du transfert des données, pas du traitement lui meme ni de l'affichage.


C'est pas de que j'ai compris : tu avais l'air de dire que ton script php mettait beaucoup plus de temps à s'exécuter sur le serveur du client (80s avec cpu à un % normal mais mysqld qui montait, donc c'est côté serveur ça, pas côté navigateur).


Message édité par rufo le 16-05-2011 à 12:51:47

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 16-05-2011 à 13:00:27    

Erobaka a écrit :

Hm le debit, je peux le voir comment ?


 
Mettre un gros de fichier de par exemple 650 mo, et mesurer combien de temps il met pour se télécharger.

Reply

Marsh Posté le 16-05-2011 à 13:46:22    

Je viens de tester en telechargeant un fichier depuis le ftp et le debit est tres bon, ca tourne autour de 1.1Mo/s
 
rufo j'ai fait le test suivant : dans la boucle au lieu de faire un echo j'ai mis dans un buffer et j'ai fais un echo du buffer une fois la boucle finie. resultat : temps apres la boucle proche de 0, temps apres echo du buffer tres long.
C'est donc bien le transfert des données qui est long, pas le traitement

Reply

Marsh Posté le 16-05-2011 à 13:49:26    

Et quand je parle de "client" je parle pas du navigateur, mais du serveur de mon client ( la société pour laquelle je bosse )

Reply

Marsh Posté le 18-05-2011 à 03:30:38    

Salut, la différence est quand même asses hallucinante pour un traitement aussi basique.
 
Essaye de voir au niveau de phpinfo(), peux être que certains modules ou autres sont à l'origine de ce phénomène.

Reply

Marsh Posté le 18-05-2011 à 09:12:18    

Salut,
J'ai déja regardé et le seul qui paraissait pouvoir ralentir était "output_buffering" qui etait réglé sur 4ko ( off sur mon serveur )
Apres je suis pas super calé donc je sais pas si il y a autre chose qui pourrait ralentir.
J'ai envoyé un message a l'hebergeur, ils sont en train de voir depuis quelques jours mais n'ont pas encore trouvé la source du probleme ...

Reply

Marsh Posté le 25-05-2011 à 11:54:27    

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 [...] eflate.php
 
Et la c'est nikel, le temps de transfert des données est quasi instantané.
 
Voila voila :)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed