赞
踩
跑定时任务执行sql脚本的时候,sql的复杂度特别大,又不想优化,客户端跑需要10几秒,在druid连接池中跑任务就报上面的错误了。完整错误如下:
The last packet successfully received from the server was 10,009 milliseconds ago. The last packet sent successfully to the server was 10,009 milliseconds ago.
引入chatgpt对此错误的分析如下:
这个错误信息通常表示MySQL连接已经超时了,即长时间没有收到新的查询请求。这可能是因为数据库连接处于空闲状态而被MySQL服务器关闭。你可以尝试使用以下方法来解决这个问题:
检查数据库服务器和应用服务器之间的网络连接是否正常,特别是在高延迟或不稳定的网络环境下。
增加数据库连接的超时时间,这可以通过在JDBC URL中添加"autoReconnect=true&autoReconnectForPools=true&connectTimeout=30000&socketTimeout=60000"参数实现(具体数值可以根据实际情况调整)。
使用数据库连接池来管理连接,可以更好地控制连接的超时时间和重连逻辑。
检查数据库是否已满,如果数据库已经使用了大量的系统资源,那么此时数据库的性能可能很低,以至于无法响应新的查询请求。
总之,当出现该错误时,除了以上几个方面的问题需要你尝试解决,还可能会涉及到MySQL服务器本身的设置,例如超时时间、缓存设置等,你可以根据实际情况调整这些设置来解决该问题。
jdbc连接串:
jdbc:mysql://192.168.10.12:3306/est_deploy?keepAlive=true&autoReconnect=true&autoReconnectForPools=true&connectTimeout=30000&socketTimeout=60000
druid的配置(询问gpt给出的合理配置范围如下,查看了下确实挺合理的):
{
"initial-size": 10,
"min-idle": 5,
"maxActive": 30,
"timeBetweenEvictionRunsMillis": 50000,
"validationQuery": "SELECT 1",
"testWhileIdle": true,
"test-on-borrow": false,
"test-while-idle": false,
"min-evictable-idle-time-millis": 300000,
"max-evictable-idle-time-millis": 600000
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。