Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je suis en plein développement d’un système de boutique en ligne avec le Zend Frameworks (j’utilise la 1.0.1 pour le moment) et le modèle MVC. Comme j’en suis arrivé assez loin dans le dev de mon bazar je commence à me poser des questions sur les perfs…
En fait j’ai fais des test aujourd’hui sur un de mes hébergement et les performance était désastreuse, d’autre test sur OVH on était plus concluant (sur du mutualisé PLAN)
Mais je viens de faire quelques tests sur mon serveur de dev (un linux virtualisé sur un athlon X2 4000+) à l’aide du profiler de Zend Studio + Zend Platform sur le server.
Les résultats me semblent assez étrange comparé à ce que je peux voir sur un site plus classique (site simple dev sans frameworks). Je ne suis pas du tout spécialiste de la question, mais en moyenne une page de la boutique met dans les 700ms à ce généré alors qu’en face un site dev à l’arrache avec autant d’accès à la base et de code est largement plus rapide (dans les 250ms).
Alors bien sur le volume de code exécuté avec le frameworks n’a rien à voir, mais ce que je trouve étrange c’est qu’un niveau de la trace d’appel du profil, 65% du temps d’exécution ce retrouve au niveau de l’appel des fonctions render(). Hors le volume de code présent dans mes fichier de vue (les .phtml) est très faible, de l’html et au milieu quelques boucles et test.
Alors j’aimerai bien votre avis car j’ai vraiment l’impression que c’est le traitement des vue qui patine dans la semoule et je ne pense pas que ce soit normal…
Je peux laisser une capture d’un des « trace » si besoin.
Merci d’avance pour vos réponses.
EDIT : je précise que j'utilise le Action_Helper_ViewRenderer et que je force parfois le nom du modele à rendre en fin d'action.
Dernière modification par bbk (01-10-2007 22:44:56)
Hors ligne
Nous sommes en train de constater qq chose de similaire dans les temps de rendu. Je n'ai pas encore faire de profiling mais les tests de perf effectué remonte en moyenne 550ms pour le rendu (on était a 100ms ss framework). Nous utilisons aussi le viewRenderer.
Plus d'infos dès que j'aurai eu un peu de temps pour le profiling.
Hors ligne
Je viens de refaire des profils que je poste pour donner une idée du problème.
Et le détail de ce qui me semble bizarre:
Regardé la différence entre les valeurs surligné en vert et celle qui suivent en rouge, je ne comprend pas pourquoi par exemple dans le premier cas je part sur un temps d'exécution de 80.99ms et que le temps pris pour traiter mon fichier de vue header.phml n'est que de 0.45ms ??
Alors peut être que je ne sais pas lire le profil ce qui est fort possible car je ne suis pas du tout formé sur la question, mais quand même la je me demande ou passe les 80.4ms...
Merci de me donner votre avis sur la question, moi je repars faire des tests pour essayer de comprendre.
Hors ligne
Bon petite infos supplémentaire, après contact avec mon hebergeur, il semblerai que le problème soit du à un grand nombre d'include au niveau du frameworks et qui conduit à beaucoup de test du type "file_exist", hors si les fichiers sont sur un NAS par exemple, et bien ça semble créer une latence importante... Effectivement ils ont deplacé les fichiers du NAS vers le disque local du serveur et la le site repond du tac o tac.
Bon ça n'explique quand même pas pourquoi sur mon serveur local le temps d'execution est si important... à mois que le fait que le serveur soit virtualisé influ sur les performance en accès disque.
Hors ligne
Network attached storage -> http://fr.wikipedia.org/wiki/Network_attached_storage
en gros c'est un serveur de fichier, qui est "monté" sur le serveur, c'est utilisé un peut comme un lecteur reseau sous window.
Et donc comme les fichiers ne sont pas sur la machine, les échanges réseau entre le NAS et le serveur prennent du temps, surtout si pour chaque appel le serveur commence par vérifier l'existence du fichier, ce qui dont donc génerer plus ou moins le double de requete vers le systeme de fichier distant.
Hors ligne
Bonjour,
Avez vous des infos, astuces ou pièges à éviter pour améliorer les perfs avec ZF ?
Connaissez vous un outils pour faire du profiling php ?
Pour faire le profiling avec Zend studio, il faut aussi le zend platform ?
Par avance merci
Olivier
Hors ligne
Pour ce qui est de faire du profiling avec Zend Studio je pense qu'il fait zend platform, perso avant de l'avoir installé sur mon serveur de dev, ça ne marché pas.
Pour ce qui est des perfs, moi je n'ai pas d'autre infos que ce que mon hebergeur m'a communiqué, à savoir que PHP5 semble systematiquement faire des file_exist au moment des includes et que les Frameworks en general sont trufé d'include. Ce qui peut provoquer de gros ralentissement suivent la gestion des fichiers sur le serveur.
Hors ligne
A priori PHP 5.2.x a résolu le problème. (perso je n'ai pas vérifié, mais ça devait être dedans...)
A+, Philippe
Hors ligne
Le pb n'était pas sur les includes mais sur les include_once ou require_once aussi. Il faisait effectivement un stat sur le fichier systématiquement. Comme le souligne Philippe, ce pb est corrigé en grande partie avec la 5.2x.
Je n'ai pas encore eu le temps d'approfondir, mais apparemment, le framework consomme moins que je le redoutait. La grosse partie du temps de rendu est imputable au rendu de la vue (80%). Mais je compléterai dès que j'aurai eu un peu plus de temps pour travailler sur ce pb.
Hors ligne
Quelques liens intéressants :
* http://www.cyberlot.net/direction-zend-framework
* http://paul-m-jones.com/blog/?p=258
* http://www.paul-m-jones.com/blog/?p=238
Hors ligne
Pour faire du profiling avec php, il y a xdebug qui est passé en version 2.0 stable. Il s'installe avec le paquet php-dev car il a une dépendance.
@++
Hors ligne