IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Mon site sous symfony est très long à charger


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 9
    Points : 13
    Points
    13
    Par défaut Mon site sous symfony est très long à charger
    Bonjour à tous

    Voilà mon site web sous symfony est très lent à charger (hébergement OVH mutualisé). J'ai essayé sur différents ordinateurs et différentes connections. Quand je continue la navigation, les temps de chargement deviennent plus court. Mais quand je me connecte à son adresse, le chargement est très long !

    J'ai effectué des copies d'écrans d'éléments qui pourraient être utiles, mais je n'arrive pas à les interpréter pour me sortir du problème :

    Nom : DevBar1.png
Affichages : 961
Taille : 36,7 Ko

    Nom : DevBar2.png
Affichages : 916
Taille : 7,5 Ko

    Nom : Execution Timeline.png
Affichages : 931
Taille : 24,1 Ko

    Nom : Cache.png
Affichages : 908
Taille : 26,8 Ko

    Nom : cache warning.png
Affichages : 1097
Taille : 14,9 Ko


    Si quelqu'un à une idée je le remercie d'avance

    Laurent

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    bonjour,

    la toolbar montre qu'il y a 19 requêtes SQL qui s'exécutent en 23.71ms (19 in 23.71ms ). Et ces 19 requêtes sont susceptibles d'évoluer à mesure que les données de la BD augmentent.
    19 requêtes pour une seule page c'est beaucoup.
    Tu as probablement des requêtes SQL supplémentaires générées, lesquelles requêtes sont liées au mode de chargement de tes associations en l’occurrence le mode fetch="LAZY".

    Sur la toolbar, clique sur 19 in 23.71ms , ensuite sur Group similar statements, tu verras les requêtes SQL s'afficher ainsi que le nombre de fois où elles sont appelées( COUNT ). Si le COUNT de chaque requête est supérieur à 1 alors tu as un problème de LAZY loading et dans ce cas tu peux changer le mode de chargement de tes associations en EAGER ce qui veut dire récupère moi l'entité que je veux afficher ainsi que l'entité jointe en faisant qu'une seule requête avec jointure(voir l'exemple)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //Article.php
    /**
    * @ORM\ManyToOne(targetEntity=Category::class, inversedBy="articles", fetch="EAGER")
    */
    private $category;
    Mais tu peux aussi faire des requêtes DQL ou QueryBuilder à place de faire find, findBy ... avec DQL ou QueryBuilder, le mode de chargement n'a plus aucune importance car ce n'est plus l'ORM qui génère les requêtes.

    Après si entre 2 appels, ta page ne change pas souvent il est possible de mettre en cache les données issues de la BD. Ainsi tu supprimes les appels inutiles à la BD. Mais le cache n'est bénéfique que si le code est déjà optimisé.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 9
    Points : 13
    Points
    13
    Par défaut
    Effectivement j'ai certaines requêtes qui sont effectuées plus de cinq fois. Je vais donc me pencher sur le tutoriel que tu m'as indiqué.

    Parfois le site se charge néanmoins à une vitesse raisonnable, je ne comprends pas l'irrégularité.

    Mais dans tous les cas un très grand merci pour ton message détaillé et pédagogique.

  4. #4
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 71
    Points : 84
    Points
    84
    Par défaut
    Bonjour,

    Serait-il possible d'avoir un retour après optimisation des requêtes SQL ?

    J'ai dû mal à comprendre quels mécanismes permettent de réduire le chargement d'une page de 33 secondes en optimisant une fonctionnalité qui prend 23 ms.

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Commence par désactiver xdebug qui doit faire bien du mal en terme de performance.

    Se concentrer sur les requête sql n'a pas de sens pour le moment puisque le temps qu'elle prennent est négligeable.

    Si tu peux essai d'utiliser une IP pour l'adresse de ta base de données pour éviter un lookup dns qui parfois peut être longue (genre 127.0.0.1 au lieu de localhost).

    Est ce que tu as configuré tous les caches nécessaire ? Particulièrement sur un hébéergement mutualisé c'est important de minimiser autant que possible les accès disques et cpu
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 9
    Points : 13
    Points
    13
    Par défaut
    Bonjour à tous, merci à Samche200 et grunk pour votre follow-up, désolé pour le délai je n'avais connaissance de vos messages.

    Je ne suis pas un codeur expérimenté alors mes commentaires sont à prendre avec des pincettes.

    Citation Envoyé par samche2000 Voir le message
    Serait-il possible d'avoir un retour après optimisation des requêtes SQL ?
    Il semblerait que l'optimisation des requêtes sql n'apporte pas de gain significatif en terme de temps de chargement (toutefois merci à armel18 de m'avoir sensibilisé à ce problème qui s'empirerait à mesure d'insertions dans la db).

    Citation Envoyé par grunk Voir le message
    Commence par désactiver xdebug qui doit faire bien du mal en terme de performance.
    Si j'en crois la Debug Toolbar du remote, xdebug est désactivé (toutes les copies d'écrans font référence au remote).

    Citation Envoyé par grunk Voir le message
    Si tu peux essai d'utiliser une IP pour l'adresse de ta base de données pour éviter un lookup dns qui parfois peut être longue (genre 127.0.0.1 au lieu de localhost).
    Sur le remote l'adresse de ma base de donnée suis le pattern suivant : p*a550.mysql.db:3306 (correspondrait-il à ta recommandation ?)

    Citation Envoyé par grunk Voir le message
    Est ce que tu as configuré tous les caches nécessaire ? Particulièrement sur un hébéergement mutualisé c'est important de minimiser autant que possible les accès disques et cpu
    Non je n'ai aucune compétence dans ce domaine, si tu as un tuto ou une doc à me conseiller, je suis très motivé pour essayer.

    Sur ce sujet il y a une question qui me taraude depuis plusieurs semaines. Sur le remote, dès que je lance cache:clear, j'obtiens ! [NOTE] For better performances, you should move the cache and log directories to a non-shared folder of the VM. Malgré des recherches je ne comprends pas ce que signifie "non-shared folder of the VM". Dossier non partagé du gestionnaire virtuel ??? Si quelqu'un peu m'expliquer en termes simples ce que cela signifie :-) ?

    Merci à tous

    Laurent

    ps : voici l'adresse du dépôt Github : https://github.com/LoloForThePOP/meta-project

  7. #7
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 71
    Points : 84
    Points
    84
    Par défaut
    Déplacer le cache symfony sur un ramdisk peut t'aider à gagner en lecture/écriture du cache. Il sera vidé à chaque redémarrage du serveur mais est-ce vraiment un problème ?

    Pour l'adresse de la base de données, Grunk te préconise d'utiliser l'adresse IP du serveur plutôt que son DNS. Un bon moyen pour trouver, tu ping p*a550.mysql.db, il te donnera l'adresse IP du genre w.x.y.z. Puis dans ton application, tu remplaces p*a550.mysql.db:3306 par w.x.y.z:3306. Bien sûr, cela n'est valable que si il n'y a pas de Round Robin DNS sur ce nom.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 9
    Points : 13
    Points
    13
    Par défaut
    Bonjour à tous

    Disparition de ralentissements depuis que j'ai changé le répertoire de cache de mon site (et disparition du message d'avertissement "you should move the cache and log directories to a non shared folder..."). Pour ceux qui souhaitent connaître la procédure simple à réaliser, voici deux liens complémentaires utiles :

    - https://community.ovh.com/t/resolu-s...rgement/2503/5
    - https://stackoverflow.com/questions/...714915#8714915

    À noter qu'avec des versions plus récentes de symfony, c'est kernel.php qu'il faut modifier (et non pas appkernel.php).

    Citation Envoyé par grunk Voir le message
    Si tu peux essai d'utiliser une IP pour l'adresse de ta base de données pour éviter un lookup dns qui parfois peut être longue (genre 127.0.0.1 au lieu de localhost).
    J'ai l'impression que je n'ai pas cette possibilité sur un ovh mutualisé : "veuillez utiliser le nom d'hôte pour vous connecter à votre instance, l'adresse ip pouvant évoluer avec le temps" (ndr : d'ailleurs je ne parviens pas à ping le nom d'hôte de ma db, on me renvois une erreur).

    Merci à tous ceux qui m'ont apporté des idées pour remédier au problème :-)

  9. #9
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 9
    Points : 13
    Points
    13
    Par défaut
    EDIT :

    Malheureusement, je suis forcé de constater que malgré la mesure prise dans le post précédent (peut-être utile malgré tout), le ralentissement majeur au chargement du site n'a pas disparu. Je clos ici mes investigations.

Discussions similaires

  1. [Wamp] acceeder a mon site sous ww/monsite par une ip
    Par ludo007 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 07/05/2009, 09h59
  2. Tester mon site sous linux et problemes de polices
    Par lysandre dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 20/02/2009, 15h07
  3. comment utiliser mon site sous Xampp
    Par jeha dans le forum Debian
    Réponses: 2
    Dernier message: 01/01/2007, 18h28
  4. Réponses: 3
    Dernier message: 14/11/2006, 16h13
  5. Mon site sous FireFox
    Par Auvergnator dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 27/09/2006, 12h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo