Forum Programmation.SQL Traces et logs entre page php et MariaDB

Posté par  . Licence CC By‑SA.
Étiquettes :
1
10
mar.
2022

Bonjour,
J'ai installé un serveur Debian auto-hébergé, ou j'ai une base de données MariaDB, dans lesquelles je modifie les données à l'aide d'un fichier php.
Les select fonctionnent bien, les insert simple aussi, mais les gros update font planter le déroulement de ma page.
Je précise que ce fichier fonctionnait sur un serveur hébergé.
Je voudrait savoir comment faire pour suivre les logs et les traces pour savoir pourquoi cela ne fonctionne pas.
Merci d'avance pour votre aide.
Christophe

  • # des timeouts ?

    Posté par  . Évalué à 5.

    mais les gros update font planter le déroulement de ma page.

    ca ressemble grandement à de la config PHP qui limite la durée de certaines actions
    c'est des config de timeout à revoir,
    ca devrait permettre de laisser le traitement se faire, et rendre la page à la fin

    • [^] # Re: des timeouts ?

      Posté par  (site web personnel, Mastodon) . Évalué à 4.

      Je sne sais pas ce qu'est « gros update » exactement dans son cas, mais ça ressemble effectivement à un « timeout » sous réserve de vérifier que

      • la requête en question passe bien avec un client en ligne de commande (mysql -h … -u … -p puis lancer la requête) ; si ça ne va pas il faut revoir la gestion des erreurs dans le code PHP
      • la requête passée est bien celle qu'on a testé (je conseille, quand on débute, d'afficher la requête dans la page avant de l'exécuter) ; si ce n'est pas bon il faut revoir le traitement de la chaîne de caractères envoyée par PHP (il y a des caractères particuliers à traiter…)
      • combien de temps prend le traitement lorsqu'on a traité en ligne de commande (auquel il faut ajouter celui du script PHP pour voir si on a dépassé les limites) et aussi quel volume est chargé en mémoire (mais ça c'est plus pour les gros select où on va être confronté à d'autres limites en plus de faire de la charge)

      “It is seldom that liberty of any kind is lost all at once.” ― David Hume

      • [^] # Re: des timeouts ?

        Posté par  . Évalué à 1.

        Bonjour Gil,
        Merci de m'aider.
        En fait cette requête fonctionnait parfaitement sur le serveur de mon hébergeur, elle ne fonctionne plus depuis que j'ai migré sur mon serveur auto-hébergé.
        Je suis loin d'être un expert en linux ni en php, du coup comment savoir le temps que prend mes requêtes?
        Merci d'avance.

        • [^] # Re: des timeouts ?

          Posté par  (site web personnel, Mastodon) . Évalué à 2.

          Bonjour,

          Si ça fonctionnait déjà mais que ça ne fonctionne plus c'est certainement que ce n'était pas écrit de façon portable. :-S Bon ça peut pécher à deux endroits…

          Il faut que tu te connectes sur ton serveur auto-hébergé (faut que ce soit celui qui exécute le code PHP …comme ça s'il y a éventuellement des soucis de connexion on le verra) et que tu lances une console SQL
          https://sysreseau.net/mysql-se-connecter-en-ligne-de-commande/

          # host="le nom ou l'IP de serveur de bases que tu as configuré dans ton code"
          # user="le nom d'utilisateur autorisé que tu as renseigné pour ton code"
          # taper, quand demandé, le mot de passe utilisé dans configuré ton script
          mysql -h $host -u $user -p
          Enter Password

          Une fois connecté, sélectionne la base de données puis exécute la requête

          -- base="le nom de la base de données utilisée par le ton script PHP"
          -- query="la requête qui doit être exécutée et qui ne l'est pas ou plante"
          mysql> USE $base;
          mysql> $query;

          À la fin de chaque requête ($query) il te dit combien de temps il a mis à l'exécuter.

          Par ailleurs, sais-tu quelles sont les versions du service MySQL et de PHP, avant et après la migration ?

          “It is seldom that liberty of any kind is lost all at once.” ― David Hume

    • [^] # Re: des timeouts ?

      Posté par  . Évalué à 1.

      Bonjour NeoX,
      Merci de te pencher sur mon problème.
      Je ne suis pas un pro de linux, comment je fais pour trouver la bonne information?
      Merci

      • [^] # Re: des timeouts ?

        Posté par  . Évalué à 3.

        à l'ancienne deja

        • sur l'ancien hébergement, regarde combien de temps prend le traitement de ton update (avec un chrono) entre le moment ou tu clic sur "valider/envoyer" et le moment ou la page se rafraichit

        • tu fais la meme chose sur le nouvel hébergement,
          tu verras peut-etre ta page se bloquer, avant meme le délai mesurer avec le chrono précédemment

        apres c'est empirique, comme tu ne sais pas quels étaient les reglages de ton hébergeur precedent, tu vas modifier la config de php pour doubler le timeout par defaut
        si ca ne fonctionne toujours pas, tu augmentes encore (x2) et ainsi de suite

        évidemment si ton timeout echoue à 1 min et que tu as mesuré 10min avec le chrono sur l'ancien hébergement, tu peux deja monter à 10min sur le nouvel hebergement

        ensuite, autre piste qu'il faut voir,
        si ca se trouve ton ancien hébergeur etait sur un processeur costaud, avec beaucoup de RAM
        ton traitement se faisait vite
        et sur ta nouvelle plateforme, le traitement est plus lent

  • # Configuration MariaDB/MySQL

    Posté par  . Évalué à 2.

    Hello,
    pour tracer les requêtes tu peux intervenir à différents niveaux à toi de voir.

    Au niveau MySQL / MariaDB tu peux activer les paramètres suivants dans le fichier de configuration :

    slow_query_log_file    = /var/log/mysql/mariadb-slow.log
    long_query_time        = 1
    log_slow_verbosity     = query_plan,explain
    log-queries-not-using-indexes
    min_examined_row_limit = 1000
    

    (pense à relancer mariadb/mysql après avoir modifié ces clés de configuration). Sur ma debian le fichier est mariadb.conf.d/50-server.cnf …

    tu peux aussi chercher sur le web sur "slow_query_log_file" pour tomber sur la doc officielle.

    eric.linuxfr@sud-ouest.org

  • # Merci

    Posté par  . Évalué à 1.

    Merci à tous,
    ça re fonctionne, je sais pas trop ce qui s'est passé.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.