5 votes

MySql *complètement aléatoire* Impossible de se connecter à l'un des hôtes MySQL spécifiés

Celui-ci me tue. Nous avons une application ASP.NET/Mono sur une base de données MySQL. Depuis des mois, nous sommes assaillis par une occurrence totalement aléatoire mais constante de "Impossible de se connecter à l'un des hôtes MySQL spécifiés". Je ne suis en aucun cas un pro de MySQL, et j'espère qu'il s'agit de quelque chose de stupide.

Spécificités :
MySQL 5.5.17
MySQL Connector/Net 6.4.4
Mono 2.10.8
MonoDevelop 2.8.6.5

Chaîne de connexion : SERVER=localhost,3306;DATABASE=xxx;UID=xxx;PWD=xxx;CONNECTION TIMEOUT=90;Encrypt=false ;

Max_connections est fixé à 150. Il n'y a jamais plus de 5 connexions, et elles sont toutes actives (probablement grâce au pooling).

  • L'application est en C# ASP.NET 3.5. Elle fonctionne depuis des années sous Windows/IIS. Il y a neuf mois, notre marché nous a incités à abandonner Windows, et nous avons donc (facilement, je dois dire) migré l'ensemble vers Mono/Apache.

  • Le problème ne se produit que du côté de Mono, mais c'est un point critique puisque nous avons supprimé notre support Windows.

  • Se produit en moyenne une dizaine de fois par heure, mais l'espacement varie énormément.

  • Le problème a été constaté dans les configurations suivantes :

Ubuntu 11/Apache2/mod_mono
OSX Lion/Apacke2/mod_mono
Serveur de débogage Ubuntu 11/xsp2/MonoDevelop
Serveur de débogage OSX Lion/xsp2/MonoDevelop

  • J'ai joué avec keepalive, wait_timeout, connectionreset, etc. en vain. Les délais ne semblent pas avoir d'effet. L'erreur est instantanée sur conn.open - pas après un délai de connexion.

  • Voici un indice : l'application ne fonctionnera absolument pas avec Pooling=false. Presque toutes les tentatives de connexion échouent. Bien sûr, je veux que le pooling soit activé, mais je ne vois pas pourquoi il ne fonctionnerait pas sans.

  • L'application dispose d'un "battement de cœur" intégré (session de l'utilisateur dans la base de données) - toutes les 2 minutes.

  • Le plus exaspérant de tous ? Ce phénomène ne peut absolument pas être reproduit à la demande dans un environnement en cours d'exécution - il est aléatoire. J'ai examiné la taille des requêtes, les temps d'exécution, etc.

  • Je ne peux y parvenir que dans un seul cas de figure : Au démarrage initial d'un serveur Ubuntu ou OSX, la toute première fois que Mono établit sa première connexion à MySQL - cela se produira à ce moment-là. Après cela, c'est à n'importe qui de deviner.

0voto

Laloutre Points 118

Ok, c'est vieux, mais j'ai perdu tellement de temps sur ce sujet que je dois le partager. sauver des vies article que j'ai enfin trouvé : Faire en sorte que Mono et Mysql s'entendent bien

Et je résume pour le cas où le lien aboutit à 404 : TOUTES les variables de la chaîne de connexion DOIVENT être définies. Donc, oui, cela inclut port que je n'ai jamais eu à définir dans une chaîne de connexion.

Pour moi, cela a résolu le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X