转载

The last packet sent successfully to the server was 0 milliseconds ago.

今天在使用JDBC操作mysql时遇到下面的异常信息:

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.  at com.tomymap.galaxy.virgo.util.DbService.getConnection(DbService.java:66)  at com.tomymap.galaxy.virgo.util.DbService.getConnection(DbService.java:46)  at com.tomymap.galaxy.virgo.dao.PNNDao.getConnection(PNNDao.java:51)  at com.tomymap.galaxy.virgo.dao.DaoBase.executeUpdate(DaoBase.java:69)  at com.tomymap.galaxy.virgo.dao.PNNDao.updatePNNRelation(PNNDao.java:161)  at com.tomymap.galaxy.virgo.pnn.PyramidNeuralNetwork.buildPNNRelations(PyramidNeuralNetwork.java:400)  at com.tomymap.galaxy.virgo.pnn.PyramidNeuralNetwork.incrementalGenPNN(PyramidNeuralNetwork.java:144)  at com.tomymap.galaxy.virgo.pnn.PyramidNeuralNetwork.main(PyramidNeuralNetwork.java:410)

着实让人崩溃的信息,花费了一天的时间来解决。不罗嗦,直接描述解决办法。

配置:

ubuntu10.10 5.1.49-1ubuntu8.1 mysql-connector-java-5.1.18.jar

交互:

300k records

300k * 10 = 3M次访问mysql

处理时间0.5h以内

解决方法:(1)使用JDBC URL中使用autoReconnect属性,url添加

&autoReconnect=true&failOverReadOnly=false&maxReconnects=10

(2) 修改MySQL的参数. /etc/my.cnf 添加

[mysqld] wait_timeout=31536000 interactive_timeout=31536000

(3)重启mysql

service mysql restart

原因分析:

(1)大量数据访问情况下,mysql connection连接有可能失效

(2)长时间不妨问,connection会失效

更多参考:

http://dev.mysql.com/doc/refman/5.1/zh/database-administration.html#dynamic-system-variables

http://www.blogjava.net/heweiya/archive/2006/01/18/28483.html

打赏

原文  http://www.adintellig.com/the-last-packet-sent-successfully-to-the-server-was-0-milliseconds-ago/
正文到此结束
Loading...