Partage
  • Partager sur Facebook
  • Partager sur Twitter

max_user_connections

    21 janvier 2021 à 15:17:59

    Bonjour tous le monde,

    Je viens de découvrir les limite de connexion mysql et l'alerte : max_user_connections.

    LWS mon hébergeur m'apprend que j'ai le droit à 20 connections.

    J'ai beau essayé de comprendre ca n'est toujours pas clair.

    J'ai cru comprendre que c'est limite autorisé, dans mon cas 20 utilisateurs à utiliser Mysql. Mais on me dit également que c'est la limite du nombre de connexions maximum effectué par mes script PHP sur la base de donnée!

    Donc ca veut dire que je ne pourrais jamais avoir plus de 20 utilisateurs différents sur mon site ou que je dois optimiser mes scripts?

    Quel est concrètement cette "user"?

    Merci.

    • Partager sur Facebook
    • Partager sur Twitter
      21 janvier 2021 à 17:52:15

      Bonjour,

      La doc MySQL dit:

      The maximum number of simultaneous connections permitted to any given MySQL user account

      On parle donc ici de connexions simultanées avec le même compte utilisateur MySQL.

      Si ton code PHP se connecte à MySQL (via PDO par exemple) il utilise les identifiants d'un utilisateur MySQL (identifiant et mot de passe), et le plus souvent cet utilisateur est unique pour tout ton code.

      Lorsqu'un visiteur accède à ton site web, il exécute ton code PHP et ouvre une connection à MySQL, jusqu'à ce que celle-ci soit refermée lorsque le code PHP est terminé (une fois que tout le script a été parcouru et exécuté).

      Donc imaginons que ton code PHP mette 0.03 seconde à s'exécuter. Si en 0.03 seconde tu as plus de 20 personnes qui accèdent à ton site web, la 21ème aura une erreur max_user_connections.

      Sur un site à très faible trafic ce n'est pas important je pense, mais si tu as disons une centaine de visiteurs simultanés, tu auras le problème systématiquement aux heures de pointe ... et un serveur mutualisé de LWS ne sera plus suffisant, il faudra envisager de prendre un VPS ...

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        22 janvier 2021 à 19:15:38

        Merci Benzouye!

        Comme ça c'est claire. C'est mieux que ce que je pensais déjà.

        Du coup est t'il utile, ou pertinent, de créer une connexion différente avec un autre utilisateur Mysql dans certaines pages pour diviser la probabilité que 20 personnes utilise la même connexion SQL en même temps?

        Car j'ai plus de petit scripts court qui que de long. Un Mysql_user pour les cours mais nombreux et un pour les long moins fréquent

        Ca ne pose pas de problèmes technique ou de performance si deux connexion utilisateurs Mysql travaillent sur la même BDD?

        -
        Edité par matthmauc 22 janvier 2021 à 19:20:05

        • Partager sur Facebook
        • Partager sur Twitter
          22 janvier 2021 à 23:31:06

          Il faut commencer par regarder si ton hébergeur te laisse la possibilité de créer plusieurs utilisateurs MySQL ... ce qui n'est pas vraiment sûr...

          Ensuite, si tu ne peux pas faire changer la valeur de max_user_connections, tu peux en effet imaginer utiliser différent utilisateurs. Le plus simple c'est de créer plusieurs utilisateurs MySQL, et d'en choisir un aléatoirement au moment où ton script PHP ouvre la connexion...

          Cela dit si tu en es là, c'est que tu as du trafic, et ça peut aussi valoir le coup de passer à une offre supérieure ...

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            25 janvier 2021 à 18:34:42

            Oui j'ai le droit à plusieurs utilisateurs MySQL et non je ne peux pas modifier le max_user_connections.

            Je ne pense pas que être encore au moment ou j'ai "trop" de trafic mais je préfères avoir un peu de sécu en attendant le moment ou je devrais prendre une offre supérieur.

            Si tu me dis que ca ne pose pas de problème niveau performance ca me semble être une bonne solution.

            Merci

            • Partager sur Facebook
            • Partager sur Twitter
              23 février 2021 à 9:16:41

              Me revoilà!

              J'ai eu de nouveau le problème hier.

              J'ai inséré dans mon try/catch de connexion à la Bdd l'envoi d'un mail en cas d'erreurs pour être au courant de se qu'il se passe sur le serveur.

              Hier j'ai reçu ce message : 

              "SQLSTATE[HY000] [1040] Too many connections"

              Je suis allé regarder dans mon historique de connexion et il n'y avait que deux utilisateurs connectés à ce moment là.

              Donc je ne comprend pas pourquoi je reçois cette erreur car si j'ai bien compris même si mes scripts s'exécutent en 1min je ne devrait pas recevoir ce message si seulement deux utilisateurs sont connectés? 

              Pour info:

              Chargement de pages en local: max 0.020sec 

              Temps d'exécution des scripts en local: max 0.077sec

              Je me pose la question également si le problème ne viendrait pas de mysql lwspanel, car il me semble que c'est au moment où j'ai regardé directement dans la base de donnée via le panel que l'erreur s'est déclenché.

              Vous en pensez quoi?

              Je précise que j'ai toujours un seul et unique utilisateur MySQL pour tout mes scripts. 

              -
              Edité par matthmauc 23 février 2021 à 10:25:47

              • Partager sur Facebook
              • Partager sur Twitter
                23 février 2021 à 13:46:00

                https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_connections

                Là encore il faut voir ce que permet le serveur mutualisé ...

                • Partager sur Facebook
                • Partager sur Twitter
                Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

                max_user_connections

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                • Editeur
                • Markdown