Le 3 févr. 2012 à 13:46, Bourhis Yves a écrit : > Bonjour, > > j'ai un soucis avec les temps de réponse de mon serveur MySQL sur des > requêtes provenant de l'interface d'administration de Django. > J'ai une table contenant 9 clés étrangères (certaines sur la même table), qui > ne contient même pas 50 lignes et les tables liées pas plus à une exception > prêt. > La requête pour afficher la liste peut prendre plusieurs minutes ! > Le serveur n'est absolument pas surchargé de requêtes (rarement plus de un à > deux utilisateurs connectés à la fois) et il dispose de 2 Go de Ram (moins de > 600 Mo d'utilisé)... > J'ai également vérifié l'existence des index correspondants à toutes les clés > étrangères. > Est-ce que que quelqu'un aurait des pistes à fouiller afin d'optimiser les > temps de réponse : est-ce un problème de django, d'apache et/ou de MySQL ?
Ca peut être un souci mysql très facilement, selon la configuration du dit serveur. Django fait normalement le nécessaire pour l'indexation, je pense plutôt à un souci de taille de cache côté mysql qui est peut être la configuration par défaut d'une ubuntu. Il doit y avoir des templates de configuration dans /usr/share/mysql/ Je propose la démarche suivante: - capturer la requête qui pose souci (django debug toolbar peut être pas mal, sinon mettre le logger en DEBUG). Ou encore activer le slow-log mysql avec une valeur basse de temps d'exécution des requêtes a capturer par ce mécanisme. - vérifier le "plan d'execution" (commande explain) de la requête (utilisation des bons indexes) - ensuite voir les paramètres du serveur mysql qui peuvent poser souci, si aucune optimisation ne peut être faite pour l'exécution de la requête (ajout d'index étant une des seules possibilités du fait de l'ORM de django). - donc voir pendant l'exécution de la requête ce qu'il se passe: commande "show processlist". Selon le statut de la requête, notamment un "copy to tmp table", il faudra agir sur la configuration du serveur mysql (sort buffer plus important si le souci vient du tri qui se fait sur disque au lieu de la mémoire, augmenter les key buffer, etc). Cordialement, Aymeric Barantal _______________________________________________ django mailing list [email protected] http://lists.afpy.org/mailman/listinfo/django
