Site web en php qui consomme trop de ressources

jeremyjoron2
Invité n'ayant pas de compte PHPfrance

03 sept. 2015, 17:45

Bonjour

J’ai un site qui est affreusement lent, qui consomme beaucoup de ressources et qui fait souvent planter le serveur.

Est-ce que par hasard, quelqu’un saurait comment faire pour savoir c’est quoi qui consomme trop exactement pour savoir quoi optimiser ?

Mon gros problème, c’est que je ne sais absolument pas comment faire pour savoir d’où vient le problème... qu’est-ce qui est mal programmé, qu’est-ce qui ne faudrait pas faire, etc... :/

Le site est programmé en PHP 5.4 et MySQL (php pure, pas de framework)

Merci!

PS: Je fais mes tests en local sur un Mac

ViPHP
ViPHP | 4039 Messages

04 sept. 2015, 16:28

Tout comme ca, de but en blanc, sans autre contexte, je penche pour des requêtes SQL sur des colonnes non indexées ;)
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 42 Messages

04 sept. 2015, 17:07

Salut,

pour résoudre ce type de problème,
1) je me fixerais sur une page qui se charge lentement.
2) je repère le fichier qui correspond à cette page sur le serveur
3) j'édite ce fichier en plaçant tout en haut exit();
4) je recharge la page (rien ne s'affiche : normal) et je vois si cela rame toujours (en théorie non, cela ne rame plus, si cela rame toujours, cela est du au serveur en lui-même et pas php ni mysql)
5) je réitère 4) en déscendant exit() progressivement dans le fichier et je repère le moment où cela rame et le code en question qui provoque le "ramage"

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 sept. 2015, 13:07

salut,

si tu reproduis le problème sur un serveur autre que le serveur de production, tu peux installer xdebug (xdebug.org) et utiliser le profilage des scripts. suivant la conf c'est gourmand en espace disque, mais c'est temporaire et tu va avoir de beau graphique avec les goulets d'étranglement de ton code.
c'est LA solution pour trouver ton problème, le reste peux fonctionner, mais est moins fiable et plus chronophage.

sinon coté code les choses à éviter peuvent être un appel à une ou plusieurs requêtes SQL dans une boucle (ou plusieurs boucles imbriquées) sans utiliser de requête préparée, voir (le pire) te connecter à la base avant chaque requête sql (c'est le plus long).

Pour ce qui est de "faire planter le serveur" il faudrait plus de détails sur ce qui arrive c'est httpd (ou autre) qui s'arrête ? est ce qu'il y a des infos dans le log ?
tu peux passer le niveau de log en debug ou trace pour avoir un maximum d'information.
Les scripts qui travail sur les images peuvent aussi être gourmand en ressources et parfois s’arrêter brutalement.

@+
Il en faut peu pour être heureux ......

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

07 sept. 2015, 20:38

Bonjour,

Voici 2 outils qui ont été recommandées récemment par différents membres de l'AFUP et qui pourraient t'aider :
https://blackfire.io
https://newrelic.com
Quand tout le reste a échoué, lisez le mode d'emploi...