2010-07-22 10 views
9

ottengo questo errore o la mia pagina jsp tutti i giorni:java.net.SocketException: tubo rotto

java.net.SocketException 

MESSAGGIO: tubo rotto

StackTrace:

java.net.SocketException: Broken pipe 
     at java.net.SocketOutputStream.socketWrite0(Native Method) 
     at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) 
     at java.net.SocketOutputStream.write(SocketOutputStream.java:136) 
     at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) 
     at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) 
     at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2637) 
     .... 

Dopo aver riavviato il gatto servizio funziona bene. (Io uso la sospensione per connettermi al database mysql)

+0

Quindi qual è la domanda? –

+3

@Carl Immagino "Perché si verifica questa eccezione?" – stacker

+0

Puoi modificare la tua domanda per includere la tua '? – BalusC

risposta

1

Sembra che tu abbia (parzialmente) perso la connessione al tuo database. MySQL tenta di inviare qualcosa ma la connessione è persa.

Un altro utente mysql/tomcat che ha segnalato un problema simile, è stato consigliato per utilizzare un pool di connessioni, ad esempio c3p0. L'utente ha risposto che desiderava utilizzare prima il pool di connessioni Mysql/tomcat come descritto in mysqls reference manual.

This is original post (german language).

+1

Sta usando Hibernate, che di solito è già configurato per utilizzare un pool di connessioni. Assomiglia ad una configurazione del pool di connessioni Hibernate impropria. – BalusC

17

ottengo questo errore o la mia pagina JSP tutti i giorni (...)

ho intenzione di speculare un po ', ma se questo accade ogni mattina (vale a dire dopo una notte di inattività), quindi potrebbe essere correlato al fatto che MySQL chiude automaticamente le connessioni inattive dopo 8 ore (il wait_timeout).

Se questo è il caso, sia:

  • Configurazione di Tomcat per testare le connessioni su prestito con un validationQuery nella configurazione origine dati:

    <parameter> 
        <name>validationQuery</name> 
        <value>select 1</value> 
    </parameter> 
    
  • aumento del wait_timeout via my.cnf/my.ini, o da MySQL connettersi con un client SQL da riga di comando e immettere SET GLOBAL wait_timeout=86400 o qualche altro numero appropriato di secondi.

Non sono a conoscenza di tutte le conseguenze della seconda opzione e in realtà non la consiglio, almeno non senza ottenere più feedback dagli esperti di MySQL.

Problemi correlati