2012-10-10 14 views
6

Stiamo migrando alcuni siti Web su un'infrastruttura cloud che esegue macchine virtuali Windows 2008. Questi siti Web funzionano tutti su ColdFusion con database MySQL. Attualmente stanno correndo nel nostro CoLo senza problemi. Inoltre, sono in esecuzione sulla nostra rete di sviluppo nei nostri uffici senza problemi.ColdFusion 10 Collegamento di comunicazioni non riuscito a MySQL

Stiamo configurando il nostro cloud per abbinare il più fedelmente possibile la configurazione attualmente utilizzata che è, in sostanza, CF10 + IIS su un server e MySQL su una macchina separata. Siamo finiti al 99% e la maggior parte delle cose funziona alla grande. Tuttavia ....

Abbiamo incontrato una coppia, come in 2, luoghi in cui si fa clic su un pulsante di collegamento/e vengono accolti con:

Errore durante l'esecuzione di query di database.

Errore del collegamento di comunicazione L'ultimo pacchetto ricevuto correttamente dal server era 0 millisecondi. L'ultimo pacchetto inviato con successo al server era 0 millisecondi fa.

Scansione lo stack-trace Trovo anche: Caused by: java.net.SocketException: Connection reset

L'errore collegamento di comunicazione è sempre: 0 ms.

La cosa più sconcertante è che le query che sembrano causare questo sono semplici query utilizzate in TUTTI i siti senza problemi. Perché stanno fallendo a due posti particolari ci ha messo a dura prova.

Il nostro unico indizio è, guardando la descrizione CF Errore di ciò che gli script sono chiamati, siamo in grado di vedere lo script in cui la query non riesce è sempre chiamato due volte? Ad esempio, una delle occorrenze è nel nostro file di applicazione:

>The error occurred in D:/Our_Web_Sites/oursite/Application.cfm: line 73 
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 17 
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 1 
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 73 
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 17 
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 1 

Possiamo trovare nulla nel nostro codice CF che essere la causa dello script di essere chiamato due volte così la nostra ipotesi è la prima chiamata non riesce sulla query quindi CF prova di nuovo ... solo per fallire ed errore.

Cerca su Google questo problema Ho trovato molti post su come cambiare i timeout di MySQL. Nessuno di questi ha funzionato e non me li aspettavo, visto che quello con cui abbiamo a che fare non sembra essere un problema di timeout. Queste pagine falliscono ogni volta.

Il più vicino a una soluzione è venuto da questo post del blog: http://www.talkingtree.com/blog/index.cfm/2011/1/12/Validation-Query-for-MySQL-communications-link-failure!

Se si deseleziona l'impostazione "Mantieni connessioni tra richieste client" in CFAdmin, l'errore scompare. Il blog suggerisce di lasciarlo selezionato, che è la nostra preferenza, e di utilizzare la convalida della connessione di "SELECT 1;". Prova questo ... stesso errore.

Abbiamo anche provato l'opzione JCBC AutoConnect = true. Nessun effetto.

Scaricato l'ultimo connettore JDBC e utilizzato al posto del connettore standard CF10-MySQL. Nessun effetto.

Anche in questo caso, il 99% del sito funziona con l'eccezione di questi due link, entrambi i quali funzionano bene in tutti gli altri ambienti. Altre idee?

risposta

0

Mi sento come se avessi avuto un problema simile ogni volta che aggiorno CF o MySQL. Di solito è utile una modifica nel driver JDBC o nella stringa di connessione, che vedo già provata.

Avete controllato il log degli errori MySQL per eventuali suggerimenti? La nostra è in/var/lib/mysql (qualunque sia la tua variabile 'datadir' impostata su) e termina con un'estensione .err.

Inoltre, è possibile provare alcune delle altre opzioni di stringa di connessione JDBC per la propria versione? Vedo alcune registrazioni estese che puoi abilitare. http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-configuration-properties.html

0

Trovato il problema. Gestiamo la nostra rete sull'infrastruttura cloud di Savvis. Le istanze del server Windows che stavamo utilizzando da Savvis avevano installato Trend Micro Deep Security Agent. Questo è un sistema di protezione dalle intrusioni ed era il problema. La disabilitazione del servizio ha chiarito tutti gli errori di comunicazione. Non ho idea del motivo per cui ha respinto alcune domande che aveva appena accettato in precedenza. Sono solo felice di (finalmente) di mettermi alle spalle!