Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解决MySQL jdbc套接字闭合SocketException?_Java_Mysql_Sql_Sockets_Jdbc - Fatal编程技术网

Java 如何解决MySQL jdbc套接字闭合SocketException?

Java 如何解决MySQL jdbc套接字闭合SocketException?,java,mysql,sql,sockets,jdbc,Java,Mysql,Sql,Sockets,Jdbc,每次我的日志文件中都会出现一个错误: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.net.SocketException MESSAGE: Socket closed STACKTRACE: java.net.SocketException: Socket closed

每次我的日志文件中都会出现一个错误:

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 
** BEGIN NESTED EXCEPTION ** 
java.net.SocketException
MESSAGE: Socket closed
STACKTRACE:
java.net.SocketException: Socket closed
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    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:1994)
    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2411)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2916)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3250)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3179)
    at com.mysql.jdbc.Statement.executeQuery(Statement.java:1207)
    at com.mchange.v2.c3p0.impl.NewProxyStatement.executeQuery(NewProxyStatement.java:35)
当应用程序在MySQL数据库中执行特定查询时,它总是发生在代码的同一点上

查询如下:

SELECT M.*, O.id 
FROM order_message M 
INNER JOIN orders O ON M.order_id = O.id 
WHERE O.seller_id = 14224 AND M.sender_user_id <> 14224 
ORDER BY M.creation_date DESC 
LIMIT 5
选择M.*,O.id
从订单信息M
M.order\u id=O.id上的内部连接顺序O
其中O.seller\u id=14224和M.sender\u user\u id 14224
订单由M.creation\u日期描述
限制5
我注意到(通过解释这个查询),它总是使用临时/filesort来执行。所有索引都已正确创建,我认为这是无法改进的,但我怀疑是查询性能或资源利用率导致了异常错误


我使用的是amazon RDS。问题是,我的连接池的配置方式是,任何耗时超过10秒的数据库连接都会被连接池丢弃(c3p0)。我使用的是unreturnedConnectionTimeout参数

c3p0文档页面不鼓励使用此参数。理想情况下,所有连接都应正确关闭(从而返回到池)


我已将参数增加到60秒,问题得到解决。

是否可以用c3p0从图片中重现此问题?请显示调用此查询的Java代码以及所有其他相关代码。