-
Serveur très lent
Bonjour à vous,
J'ai codé pour ma boîte une petite interface de gestion en PHP/MYSQL. Il y a donc une base de données pour gérer le stock (des instruments de musique NDLR). Jusqu'ici je me suis toujours débrouillé pour les optimisations ergonomiques, la maintenance du serveur etc... mais là il se passe un truc bizarre, et qui me dépasse : dès qu'il y a un accès à cette base, les pages mettent 26s pour se mettre à charger des données qui mettaient habituellement qqs secondes seulement. C'est très gênant surtout lorsqu'on a un client au téléphone, enfin vous vous en rendez-compte.
Nous sommes chez 1and1 avec l'offre Serveur Privé virtuel Virtuozzo + Plesk 9 (au passage le service clientèle y est déplorable, et nous envisageons de passer chez OVH...) Cela dit, le problème viendrait de moi, puisqu'un site test de vente en ligne (PHP/MYSQL via JOOMLA/VirtueMart) que j'ai précédemment développé fonctionne, lui. Alors que se passe t'il ? En affichant une page test HTML/CSS toute simple, la cela fonctionne correctement.
Voiçi la structure d'une de mes tables (72 en tout) :
/ plus besoin /
J'ai bien sûr déjà fouillé sur le web mais sans résultat : le log des requêtes lentes, bah il n'y en aurait pas, la charge CPU/Mémoire du serveur est au beau fixe, il y a de la place également. Surtout : je n'ai fait aucune manipulation ou modif, cela s'est mis à ralentir comme ça, sans raisons apparentes, dingue ! Pourtant il y qqch qui cloche. Mes requêtes sont peut-être mal optimisées, mais pourquoi auraient-elles fonctionné 2 ans ? 1and1 peuvent-ils changer leur politique qualitative, changer certains seuils qui seraient devenus critiques, me concernant ? L'interface PhpMyAdmin est réactive (Plesk également).... voiçi qqs captures de l'état de mon serveur MySql :
/ plus besoin /
Il y a aussi les jeux de caractères, mais je ne pense pas que cela soit la cause de mon problème :
/ plus besoin /
Merci de votre aide, et n'hésitez pas à me demander des infos complémentaires si besoin.
A bientôt,
Guillaume
-
Bonjour,
Pourquoi 72 tables ? 1 table par instrument ? pas terrible.
Ensuite, sans regarde plus loin, la structure de la table n'est pas bonne : tu devrais avoir une table "type", "fournisseur", "marque", et ne stocker dans celle-ci que l'id correspondante.
A quoi correspondent les colonnes "brest", "quimper", "lorient" et "odessa" ?
-
Avant d'incriminer l'hébergeur il faudrait revoir la conception de vos table et de vos index
La table présenter n'est pas normalisée
Et les status de votre MySql montre qu'il y a un probleme d'index
Il serait aussi interessant d'indiquer ce que vous appeler lent
Pouvez donner un exemple d'un explain d'une de vos requettes ?
-
Qqs réponses
Bonjour & merci pour vos réponses. Voiçi qqs éclaircissements :
Vous avez certainement raison concernant la normalisation, mes cours sont loin... on va qd-mm essayer d'avancer si vous le permettez.
@ Jeca >>
" Pourquoi 72 tables ? 1 table par instrument ? pas terrible. " Ce n'est pas une table par instrument mais par famille d'instruments. Quelle alternative alors ? Une table "instrument" avec "type" etc... cela reviendrait à regrouper toutes nos références dans presque une seule table, non ? Vous allez ptet me dire que c'est mieux remarque. Indication : nous référençons 1500 instruments, ça pourra monter à 2000 disons....
" Ensuite, sans regarde plus loin, la structure de la table n'est pas bonne " Là encore tu as certainement raison, mais j'ai peur de ne faire qu'entrevoir ce que tu proposes, dsl.
" A quoi correspondent les colonnes "brest", "quimper", "lorient" et "odessa" ? " A la quantité de l'instrument concerné dans le stock de la ville en question. Il faudrait une table "Quantité" avec "Brest" "Quimper" "Lorient" "Odessa" dedans, quel intérêt alors ?
@omiossec >>
" Avant d'incriminer l'hébergeur il faudrait revoir la conception de vos table et de vos index La table présenter n'est pas normalisée " Ok, une branlée du matin ça fait toujours du bien. Cela dit je pense qu'elle est justifiée donc ok.
" Et les status de votre MySql montre qu'il y a un probleme d'index" Lequel alors, merci. J'ai rajouter des Index sur toutes les tables sur les champs importants, je ne paux pas mettre d'Index sur tous les champs, ça ne me servirait pas non plus car ça alourdirait la base aussi.... je crois que tu veux dire qu'on peut mieux les exploiter mais là je ne vois pas dsl.
" Il serait aussi interessant d'indiquer ce que vous appeler lent " Les pages avec accès au serveur MySQL mettent systématiquement 26s de "freeze" puis après arrive le chargement normal de qqs secondes supplémentaires.
" Pouvez donner un exemple d'un explain d'une de vos requettes ? " Bien-sûr :
/ plus besoin /
Est-ce bon ou me suis-je encore planté ?
RAPPEL : même si je suis en faute, l'interface à été réactive pendant près de 2 ans. C'est le fait qu'il y ai cette lenteur soudaine et sans intervention de ma part qui me fait me tourner vers vous Merci pour votre soutien en tout cas, l'optimisation à faire est + importante que mon égo ;)
-
Hum hum
Bon, je clôture le topic. Finalement tout va bien : on est passé chez OVH. Je ne me répands pas + vous aurez compris.
Salutations,
Guillaume