Errore di connessione al database mysql


9

La mia applicazione deve effettuare connessioni abbastanza frequenti a un database mysql su un altro computer. Comunque ricevo frequenti errori sulla connessione; Di solito riesco alla fine a connettermi, ma dopo molti tentativi. Il messaggio di errore che ricevo è:

Mysql.mysql(): Couldn't connect to SQL-server: Lost connection to MySQL server at 'reading authorization packet', system error: 2

Ho letto le informazioni qui: http://dev.mysql.com/doc/refman/5.0/en/error-lost-connection.html e anche i commenti sul bug http://bugs.mysql.com/bug .php? id = 28359 .

Ci sono parecchie connessioni interrotte come puoi vedere:

mysql> MOSTRA LO STATO GLOBALE COME 'Aborted_connects';
+ ------------------ + ------- +
| Nome variabile | Valore |
+ ------------------ + ------- +
| Aborted_connects | 2540 |
+ ------------------ + ------- +

Ho aumentato il timeout da 5 a 15 secondi:

mysql> mostra variabili come 'connect_timeout';
+ ----------------- + ------- +
| Nome variabile | Valore |
+ ----------------- + ------- +
| connect_timeout | 15 |
+ ----------------- + ------- +

ma questo non ha aiutato. Qualche suggerimento su come eseguire il debug di questo? Rende l'interazione del database orribilmente lenta quando in media deve provare a connettersi 5 volte prima che funzioni.

Non ho ancora provato a mantenere aperta la connessione per tutta la durata dell'applicazione, sarebbe meglio? Come posso impedire la chiusura della connessione?

Se aiuta il computer con i problemi è Windows 7 a 32 bit, mentre il server mysql è su Debian Linux.


So che si tratta solo di una benda, ma l'URL di segnalazione bug indica: "Ho risolto il problema aumentando la variabile globale connect_timeout a 30 secondi". Vuoi provare un valore più alto?
JoseK,

1
Freddo conforto, ma questa è una domanda ben scritta. Eccellente seguito dell'articolo di Eric S. Raymond ... +1 a te, e buona fortuna.
gWaldo,

@JoseK ovviamente posso provarci ma dubito che farà molta differenza visto che non ho visto alcun miglioramento passando da 5 a 15.
Zitrax,

Questa è una delle variabili che non imposta alcun limite se il valore è impostato su 0?
pjmorse,

1
Sei sicuro che non ci sia una sorta di problema di connettività tra le macchine, forse un problema di rete?
Warner,

Risposte:


2

Esaminando tutti i dettagli di bug e segnalazioni sospetto che ci sia un problema di rete o lato client qui. Qualcosa sta corrompendo o aggiungendo troppa latenza ai dati mysql.

Su una rete libera, esegui una traccia di wirehark e verifica come è la conversazione. Assicurati che nessuna modellatura del traffico avvenga da nessuna parte. Sembra solo un problema a 64 bit, quindi controlla una build a 32 bit solo per assicurarti che sia lo stesso problema. Controlla su una scatola di Windows XP - M $ ha fatto alcune cose funky nello stack di rete su Vista che lo ha fatto succhiare un po 'di tempo! Non abbiamo fine ai problemi di rete con macchine Vista e Win7!

Se riesci a gestire una traccia di WireShark, ti ​​preghiamo di incollare e mettere il link come vorremmo tutti uno sguardo, penso.


Cosa intendi con "sembra un problema a 64 bit"? Questa è un'installazione a 32 bit. E mi dispiace di aver parlato di Vista, questo è Win7, descrizione corretta.
Zitrax,

Non ho molta familiarità con il debug di WireShark. Ma alcune cose mi sembrano strane, ci sono alcuni pacchetti RST con segno rosso e ritrasmissione TCP, e il tempo di alcuni di alcuni pacchetti è negativo, come -257,3 secondi.
Zitrax,

puoi usare un altro interruttore e ripetere il test, per favore. diverso se ne hai uno? se potessi
incollare bin

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.