CONNECTION RESET?

Hi,

I'm having the next socket exceptions on my app. The fact is that they occur randomly, not every time. My app is working 24 hours/day. It connects to MySql in another PC and the most of the days there is no problem, but some other days these errors occur. I've tried to use autoreconnection and autoPoolreconnection but it does not work.

Why is this going down? How can I make my app to reconnect again?

Any suggestions?

Thanks in advance.

7:05:19 'consultaSQL()' Error al buscar campo. Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException

MESSAGE: Connection reset

STACKTRACE:

java.net.SocketException: Connection reset

at java.net.SocketInputStream.read(SocketInputStream.java:168)

Last packet sent to the server was 27009 ms ago.

at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)

at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2561)

at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2860)

at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)

at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1900)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)

at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2349)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2972)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2860)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)

at com.mysql.jdbc.Statement.executeQuery(Statement.java:822)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)

at WEB.BaseDatos.consulta(BaseDatos.java:48)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2972)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)

at com.mysql.jdbc.Statement.executeQuery(Statement.java:822)

at WEB.BaseDatos.consulta(BaseDatos.java:48)

at WEB.ConsultaPeticion.consultaPet(ConsultaPeticion.java:63)

at WEB.ConsultaPeticion.run(ConsultaPeticion.java:41)

** END NESTED EXCEPTION **

Last packet sent to the server was 27009 ms ago.

at WEB.ConsultaPeticion.consultaPet(ConsultaPeticion.java:63)

at WEB.ConsultaPeticion.run(ConsultaPeticion.java:41)

7:05:28 'consultaSQL()' Error al buscar campo. No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error:

** BEGIN NESTED EXCEPTION **

com.mysql.jdbc.CommunicationsException

MESSAGE: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException

MESSAGE: Connection reset

STACKTRACE:

java.net.SocketException: Connection reset

at java.net.SocketInputStream.read(SocketInputStream.java:168)

at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)

at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)

at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)

at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1900)

at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2349)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2860)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2972)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)

at com.mysql.jdbc.Statement.executeQuery(Statement.java:822)

at WEB.BaseDatos.consulta(BaseDatos.java:48)

at WEB.ConsultaPeticion.consultaPet(ConsultaPeticion.java:63)

at WEB.ConsultaPeticion.run(ConsultaPeticion.java:41)

** END NESTED EXCEPTION **

Last packet sent to the server was 27009 ms ago.

STACKTRACE:

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException

MESSAGE: Connection reset

STACKTRACE:

java.net.SocketException: Connection reset

at java.net.SocketInputStream.read(SocketInputStream.java:168)

at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)

at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)

at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)

at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1900)

at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2349)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2860)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2972)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)

at com.mysql.jdbc.Statement.executeQuery(Statement.java:822)

at WEB.BaseDatos.consulta(BaseDatos.java:48)

at WEB.ConsultaPeticion.consultaPet(ConsultaPeticion.java:63)

at WEB.ConsultaPeticion.run(ConsultaPeticion.java:41)

** END NESTED EXCEPTION **

Last packet sent to the server was 27009 ms ago.

at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2561)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2860)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2972)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)

at com.mysql.jdbc.Statement.executeQuery(Statement.java:822)

at WEB.BaseDatos.consulta(BaseDatos.java:48)

at WEB.ConsultaPeticion.consultaPet(ConsultaPeticion.java:63)

at WEB.ConsultaPeticion.run(ConsultaPeticion.java:41)

** END NESTED EXCEPTION **

java.sql.SQLException: No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error:

** BEGIN NESTED EXCEPTION **

com.mysql.jdbc.CommunicationsException

MESSAGE: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException

MESSAGE: Connection reset

STACKTRACE:

java.net.SocketException: Connection reset

at java.net.SocketInputStream.read(SocketInputStream.java:168)

at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)

at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)

at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)

at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1900)

at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2349)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2860)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2972)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)

at com.mysql.jdbc.Statement.executeQuery(Statement.java:822)

at WEB.BaseDatos.consulta(BaseDatos.java:48)

at WEB.ConsultaPeticion.consultaPet(ConsultaPeticion.java:63)

at WEB.ConsultaPeticion.run(ConsultaPeticion.java:41)

** END NESTED EXCEPTION **

Last packet sent to the server was 27009 ms ago.

STACKTRACE:

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException

MESSAGE: Connection reset

STACKTRACE:

java.net.SocketException: Connection reset

at java.net.SocketInputStream.read(SocketInputStream.java:168)

at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)

at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)

at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)

at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1900)

at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2349)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2860)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2972)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)

at com.mysql.jdbc.Statement.executeQuery(Statement.java:822)

at WEB.BaseDatos.consulta(BaseDatos.java:48)

at WEB.ConsultaPeticion.consultaPet(ConsultaPeticion.java:63)

at WEB.ConsultaPeticion.run(ConsultaPeticion.java:41)

** END NESTED EXCEPTION **

Last packet sent to the server was 27009 ms ago.

at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2561)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2860)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2972)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)

at com.mysql.jdbc.Statement.executeQuery(Statement.java:822)

at WEB.BaseDatos.consulta(BaseDatos.java:48)

at WEB.ConsultaPeticion.consultaPet(ConsultaPeticion.java:63)

at WEB.ConsultaPeticion.run(ConsultaPeticion.java:41)

** END NESTED EXCEPTION **

[10085 byte] By [yoMismaa] at [2007-10-2 11:18:53]
# 1

It looks VERY similar to the problem I had! The connection from your program to MySQL times out (maybe after 30min, 1h or so), if there is NO activity.

If there is no activity for a certain period of time, MySQL terminates the connection, which returns the error message you showed. It means, sometimes there are a lot of people accessing your DB, so everything works fine until there is nobody connecting for 1h or so.

Solution:

1) Set the connection timeout higher (somewhere in MySQL)

-OR-

2) Reconnect again, when you get the error message! -> I use that, couldn't find the parameter for MySQL for reconnect?

Hope this helps!

mhhdudua at 2007-7-13 4:17:39 > top of Java-index,Database Connectivity,Java Database Connectivity (JDBC)...
# 2

That's the official info from mySQL regarding the problem:

"autoReconnect" property:

-

Should the driver try to re-establish stale or dead connections? If enabled the driver will throw an exception for a queries

issued on a stale or dead connection, which belong to the current transaction, but will attempt reconnect before the next

query issued on the connection in a new transaction. The use of this feature is not recommended, because it has side effects

related to session state and data consistency when applications don'thandle SQLExceptions properly, and is only designed to

be used when you are unable to configure your application to handle SQLExceptions resulting from dead andstale connections

properly. Alternatively, investigate setting the MySQL wait_timeout system variable to some high value rather than the

default of 8 hours.

so, changing "wait_timeout" in my.cnf is the solution.

mhhdudua at 2007-7-13 4:17:39 > top of Java-index,Database Connectivity,Java Database Connectivity (JDBC)...