0
点赞
收藏
分享

微信扫一扫

Cause: com.mysql.cj.jdbc.exceptions.CommunicationsException: The last packet successfully.....

紫荆峰 2022-04-30 阅读 55

最近将之前的项目部署到了服务器之后,发现在长时间不访问网站后,再次打开页面会出现白屏现象,除非重新刷新页面,否则无法正常加载数据,使用F12查看请求返回的JSON数据发现提示内部错误,由此可知问题在服务端。

服务器相关信息:

登录服务器,依次检查Nginx、Tomcat、Redis、MySql服务的运行状况,使用如下命令:

ps -ef|grep {服务名称}

检查后一切正常,下一步我们需要从日志文件入手,进入Tomcat安装目录,我这里使用了Tomcat压缩包解压的方式,因此只需要进入logs目录下即可(根据自己安装的实际目录寻找就行):

cd /resources/apache-tomcat-8.5.54/logs/

查看catalina.out文件内容,注意:此文件内容即为在Windows下使用IDE开发工具时Tomcat实时输出的内容,可以帮助我们快速定位问题。

cat catalina.out

发现异常信息如下:

通过内容可知,由于太久没有使用C3P0的连接池,超过了最大的有效时间,因此连接池资源被释放,MySql无法获得有效的资源,因此也无法取得数据。

知道了问题,那么解决也很容易,异常信息中也提供了解决方案,也就是说我们可以在mysql连接中添加autoReconnect属性来避免这个问题。

 由于我的项目在服务器上,使用war包的方式来部署,因此需要修改相关信息就需要重新生成war包或者对当前war包内的配置修改,为了方便起见直接进入Tomcat的webapps目录对war包修改,(这里我的war包名称为o2o,使用时替换为你自己的项目名称)

cd /resources/apache-tomcat-8.5.54/webapps/o2o/WEB-INF/classes

修改jdbc.properties的内容

vim jdbc.properties

在文件最后添加autoReconnect=true,多个参数之间使用&连接。(若为本地IDE开发,直接修改对应jdbc配置文件内容即可。) 

jdbc.url = jdbc:mysql://{yourIpAddress}:3306/o2o?useUnicode=true&autoReconnect=true

 至此问题修复完成。

举报

相关推荐

0 条评论