新建的网站出现如下错误:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 58,524,080 milliseconds ago. The last packet sent successfully to the server was 58,524,127 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.

Caused by: java.net.SocketException: Software caused connection abort: socket write error

网上找来的答案:.

在mysql安装目次下找到my.ini文件中添加超时限制:在该文件最后添加一行:wait_timeout=2880000。如许把之前的超时限制把8小时(28800)扩大为800小时。如许重启了mysql后再在此中输入号令:show global variables like "wait_timeout";查看超时是否已批改为:2880000。重启tomcat(若是已启动),OK。

 

1

解决办法:从common pool的配置参数来解决:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName">
   <value>${db.driver}</value>
  </property>
  <property name="url">
   <value>${db.url}</value>
  </property>
  <property name="username">
   <value>${db.user}</value>
  </property>
  <property name="password">
   <value>${db.password}</value>
  </property>
  <property name="maxActive">
   <value>100</value>
  </property>
  <property name="maxIdle">
   <value>50</value>
  </property>
  <property name="maxWait">
   <value>10000</value>
  </property>

<property name="timeBetweenEvictionRunsMillis">
   <value>3600000</value><!--1 hours-->
  </property>
<!--
  <property name="minEvictableIdleTimeMillis">
   <value>20000</value>
  </property>
-->
  
  <property name="testWhileIdle">
   <value>true</value>
  </property>
  <property name="validationQuery">
   <value>select 1 from dual</value>
  </property>
 </bean>
使用上述的三个红色的参数,就可以避免这个问题.这三个参数的意义:

timeBetweenEvictionRunsMillis:启动connection校验定时器,定时器运行时间间隔就是timeBetweenEvictionRunsMillis的值.默认为-1,表示不启动定时器,这里设定为1小时,只要小于mysql的wait_timeout就可以了

testWhileIdle: true,表示检查idle的connection,false为不检查

validationQuery:用于检查connection的sql语句.

这只是一种方法,另外的几种方法:

timeBetweenEvictionRunsMillis+minEvictableIdleTimeMillis:这种方式不检查Connection的有效性,而是检查连接的空闲时间,大于minEvictableIdleTimeMillis就清除.

<property name="timeBetweenEvictionRunsMillis">
   <value>3600000</value><!--1 hours-->
  </property>

<property name="minEvictableIdleTimeMillis">
   <value>120000</value><!--connection的空闲时间大于这个值,就直接被关闭,并从连接池中删除-->
  </property>

如果不喜欢用定时器,也可以配置testOnBorrow+validationQuery参数:每次从连接池取参数都会校验连接的有效性.实际上这种方式性能会比定时器差些.
  <property name="testOnBorrow">
   <value>true</value>
  </property>
  <property name="validationQuery">
   <value>select 1 from dual</value>
  </property>

另外,也可以用testOnReturn+validationQuery,不过未必会解决问题:这表示每次使用完连接,归还连接池的时候检查连接的有效性,这有可能导致使用一次无效的连接,最好不要用.

上面的几种方法可以合并使用,只是检查的点多了,未必是好事.

转载于:https://www.cnblogs.com/stonehat/archive/2013/01/17/2864247.html

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException相关推荐

  1. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 数据库报错

    -- 查询mysql 数据库链接空闲时间持有最大空闲时间,单位为秒 SHOW VARIABLES WHERE VAriable_name = 'interactive_timeout'; -- 会出现 ...

  2. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

    昨天数据库做了一些改动,早上再打开的项目的时候就出现了这样的问题 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communicat ...

  3. Mysql学习总结(62)——MySQL连接com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link问题

    数据库出现如下连接问题 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The ...

  4. 问题记录——com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure...

    最近在搞一个Spring boot + Mybatis + Mysql的项目,用Mybatis访问数据库时,报了如下的错误,先在网上搜索了,试了各种办法都不行, 奇葩的是,连接另外1个数据库又没问题. ...

  5. mysql第二天无法连接_MySQL第二天早上第一次连接超时报错,解决方法com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:...

    http://zeusami.iteye.com/blog/1112827 MySQL第二天早上第一次连接超时报错,解决方法com.mysql.jdbc.exceptions.jdbc4.Commun ...

  6. Cause com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications link failure 问题解决 报错

    Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 问题解决 Cau ...

  7. 解决com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link

    一.可能导致这样的原因 1.配置文件中的url不正确(排除) <url>jdbc:mysql://localhost:3306/env</url> 2.mysql的连接等待时间 ...

  8. mysql连接com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link

    jdbc驱动:mysql-connector-java-5.1.39-bin.jar 这个有问题, 换成:mysql-connector-java-5.1.34.jar 就可以了 转载于:https: ...

  9. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'rtjhyt' in 'field list'

    今天向数据库中插入语句遇到了这样的异常: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'rtjh ...

最新文章

  1. python 图片对比文件夹_初学Python-找出文件夹下的所有图片
  2. One-Page AlphaGo --十分钟看懂 AlphaGo 的核心算法!
  3. javascript调用dll_Blazor条码识别:Web中运行C#和JavaScript
  4. moxy json介绍_MOXy的对象图和动态JAXB
  5. SqlServer2008 安装经验日志总结
  6. Flink SQL CDC 上线!我们总结了 13 条生产实践经验
  7. 助老打车暖心车站落地杭州 帮助老年人扫码一键叫车
  8. 家用工具套装_居家生活必不可少的8款五金工具,便宜又实用
  9. hibernate多对多映射关系实现
  10. MySQL安装配置详解(5.5 For Windows)
  11. html5 crop,HTML5内联SVG autocrop空格
  12. 普林斯顿微积分读本06第五章--连续性
  13. 基于MIPS指令集的单周期处理器设计
  14. 游戏模块分析总结(4)之系统篇
  15. centos7+PHP7 编译安装swoole教程
  16. 一图看懂信用报告在线查询指南
  17. Linux常用命令——systemctl命令
  18. JAVA Io 流 字符流 编码表 编码和解码的方法
  19. ionic3正式发布(ionic2升级到ionic3)
  20. python初步学习(二) 3.19

热门文章

  1. struts 修改拦截器修改返回值_关于struts2简单的介绍与示例
  2. java json.pasent_来自CSV的带有id parent(Python)的JSON树
  3. LeetCode:85. 最大矩形
  4. 2020年1月份学习总结,死线(Deadline)杀死团队拖延症
  5. 笔记-高项案例题-2017年上-计算题
  6. DevExpress的TreeList实现自定义右键菜单打开文件选择对话框
  7. 怎样在vue单页面中引入其他组件
  8. 学会用各种方式备份MySQL数据库
  9. vscode快捷键大全
  10. flutter自定义弹窗