SQLSTATE[HY000] [1040] Too many connections - Comment corriger?

Bonjour à tous,

J’ai encore eu un problème de stabilité de mon Jeedom … avec un problème de type ‹ SQLSTATE[HY000] [1040] Too many connections ›

Voici les résulats des commandes SQL suivantes:

Bonjour

Quel OS quelle version ?

La suite:

Page santé:

Liste des plugins:

Moteur de tâches:

Charge CPU:

Usage mémoire:
On voit le redémarrage de Jeedom le 22 aout …

Et ce genre de chose arrive toujours quand je suis en déplacement … arffff …

Je me demande s’il est possible de faire un scénario de ce type pour checker MySQL et le redémarrer automatiquement en cas de soucis.

J’ai mis en place ceci, d’après vous ça peut fonctionner si MySQL plante:


J’ai mis le cron de ce ‹ script › toutes les 10 minutes.

Le fichier ‹ .sh › contient ceci:

#!/bin/bash

# Check if MySQL is running
if ! systemctl is-active --quiet mysql; then
    echo "MySQL is not running. Restarting MySQL..."
    #systemctl restart mysql

    # Check if MySQL restarted successfully
    if systemctl is-active --quiet mysql; then
        echo "MySQL restarted successfully."
    else
        echo "Failed to restart MySQL."
    fi
else
    echo "MySQL is running."
fi

Pour l’instant je n’essaye pas de redémarrer MySQL …
Je souhaite juste savoir si celà peut fonctionner depuis mon Jeedom planté (sans MySQL) et que ce script remet MySQL (et du coup Jeedom) en fonction…

Merci !

Bonjour
Jeedom fait déjà ça tout seul et en plus mysql le fait et la ton script ne marchera pas.

Mysql est pas arreté juste il prends plus de connexion car yen a déjà trop. Il faut trouver pourquoi il y a autant de connexion la première piste est a regarder côté plugin et la deuxième côté scénario. Et avant que tu demande non pas moyen de savoir d’où viennent les connexion

OK merci pour ta réponse @Loic .
J’avais déjà mis en place un scenario pour loguer et voir si les connexions SQL augmentent dans le temps en faisant un scenario exécuté toutes les 5 minutes comme cela:

$counter = 0;

$sql = "SHOW PROCESSLIST";

$scenario->setLog("SQL = $sql");

$results = DB::Prepare($sql, NULL, DB::FETCH_TYPE_ALL);

foreach ($results as $result) {
	$counter += 1;
} 

$tags['#Counter#'] = $counter;

Ça va être difficile pour moi de trouver la cause … car ça ne montre rien …
Mais si tu dis que Jeedom va redémarrer MySQL automatiquement, je dois peut-être simplement attendre avant de vouloir le redémarrer non ? Ça reviendra tout seul, vrai?

Merci !

1 « J'aime »

Tu as pas lu jeedom redémarrer mysql si celui ci s’arrête or dans ton cas il s’arrête pas juste il veut pas prendre plus de connexion. Après en fonction de ton système tu peux augmenter le nombre de connexion autorisé

Effectivement je n’ai pas bien lu …
J’ai vu ce sujet et je viens d’applique ceci:

Est-il nécessaire d’avoir des connexions persistantes? pourquoi ?

Pour aller plus vite sinon à chaque demande il faut refaire la connexion à la db niveau perf c’est une catastrophe

OK, et pour prendre en compte ce paramètre, faut-il redémarrer Jeedom ?
Si les performances ne sont plus bonnes / Jeedom lent, je peux toujours remettre comme avant … pour moi le plus important c’est la stabilité.

Bonjour,
Oui c’est recommandé de redémarrer jeedom pour être sur que toute les connexions ne restent pas en persistante

Merci beaucoup pour ton temp @Loic
Je fais des essais… j’espère que ça sera stable.
Merci de laisser ce sujet ouvert, je reviendrai y mettre mon feedback d’ici quelques jours/semaines.

Sébastien

Le mieux suivant le système c’est d’autoriser plus de connexion on le fait pas mal pour les clients pro c’est tout à fait normal

1 « J'aime »

Salut,

Pour l’instant, après avoir passé PDO::ATTR_PERSISTENT => false je ne vois aucun ralentissement de Jeedom.
Le fait d’avoir redémarré Jeedom depuis son interface suffit à prendre ce paramètre en compte ou faut-il complètement redémarrer la box (Atlas dans mon cas).
Si c’est bon comme ça, je vais laisser tourner et je verrais bien si c’est désormais stable … mon Jeedom n’a jamais tenu 3 mois sans crasher, d’abord à cause de problème de performance (fuite mémoire) dû à un plugin (ça c’est corrigé) et maintenant ce problème MySQL.
Je suppose qu’à chaque mise à jour de Jeedom, il va falloir que je remette ce paramètre à FALSE?

Merci pour le support!

Sébastien

Bonjour,
Oui il faudra le faire a chaque fois, mais si je vois que c’est stable et utile alors je pourrais le prendre en compte directement dans le code pour te permettre de le configurer.

2 « J'aime »

On laisse ce sujet ouvert … si ça ne plante plus d’ici 3 mois alors tout bon.
Je commenterai ici et tu pourras alors prendre ta décision de peut-être ajouter cette option.
Super sympa, merci !

Sébastien

Bonjour @Loic ,

Je reviens vers toi pour confirmer que mon Jeedom est stable depuis le changement de configuration des connexions persistantes à « false » et je ne perçois pas de ralentissement.

Voici une capture du monitoring :

On est à quasi 3 mois et mon Jeedom n’a pas tenu aussi longtemps depuis des années.
Je pense que cette option pourrait être utile depuis le panneau de configuration de Jeedom.

Merci !

Sébastien

Bonjour !

@Loic , excuse-moi de redemander mais as-tu pris acte de mon expérience par rapport au réglage des connexions persistantes à « false » ? (C’est stable et toujours rapide depuis 3 mois !)
Vas-tu rendre cette option de paramètre accessible depuis l’interface de configuration de Jeedom ?

Merci !

Sébastien

Bonjour
Oui j’ai bien pris acte et nos tests montre une diminution des performances (normale vu qu’il refait toute la connexion à chaque fois). Par contre pour savoir si ça sera ajouté ou non en paramètre je peux pas te dire ça ne se décide plus à mon niveau. Le mieux serait de faire un pr si tu veux que ce sujet avance.

Merci pour ta réponse @Loic
Je ne vais pas faire de PR car je ne pense pas qu’on soit beaucoup ayant ce besoin.
Je vais tout simplement modifier ce paramètre manuellement à chaque mise à jour.

Sébastien