Q
[alibaba/druid]求助大佬: CommunicationsException: Communications link failure :The last packet successfully received from the server was 932,134 milliseconds ago. The last packet sent successfully to the server was 931,363 milliseconds ago.
9
数据库没有做读写分离
druid版本:1.0.28 mysql-connector版本 5.1.38
配置:
filters:stat
maxActive:20
initialSize:1
maxWait:6000
minIdle:1
timeBetweenEvictionRunsMillis:60000
minEvictableIdleTimeMillis:300000
validationQuery:select 'x'
testWhileIdle:true
testOnBorrow:false
testOnReturn:false
poolPreparedStatements:true
maxOpenPreparedStatements:20
A
回答
1
此问题目前偶尔出现,但一出现,会一直报此错误。线上环境maxActive会配置的稍微大一点
7
5
看下数据库配置的连接超时时间
都是默认配置
connect_timeout 10
interactive_timeout 28800
net_read_timeout 30
net_write_timeout 60
wait_timeout 28800
2
在数据库 url 后面配置一个 socketTimeout 参数,比如 jdbc:mysql://xxxxx:3306/dbname?socketTimeout=5000。注意这个参数会影响慢查,如果慢查时间超过3秒,也会被中断。另外我看你上面还有一个连接超时的异常,connectTimeout 参数也配置一下,先配置成 3000 试试。
这两个配置只能降低问题持续时间,并不能解决问题。最好抓包分析一下应用于 MySQL 服务器的交互过程。
1
在数据库 url 后面配置一个 socketTimeout 参数,比如 jdbc:mysql://xxxxx:3306/dbname?socketTimeout=5000。注意这个参数会影响慢查,如果慢查时间超过3秒,也会被中断。另外我看你上面还有一个连接超时的异常,connectTimeout 参数也配置一下,先配置成 3000 试试。
这两个配置只能降低问题持续时间,并不能解决问题。最好抓包分析一下应用于 MySQL 服务器的交互过程。
有多个慢查超过3s,数据量的问题,这两个参数目前都没有设置。因为这个错误是偶尔出现,但是一出现服务就会不停的报这个错误
6
有多个慢查超过3s,数据量的问题,这两个参数目前都没有设置。因为这个错误是偶尔出现,但是一出现服务就会不停的报这个错误
我们出现过类似问题,MySQL 数据库故障,不响应应用请求,导致线程被长时间卡住。通过设置 socketTimeout,可以保证连接不会卡住很长时间,超过设置值就会超时返回。
3
有多个慢查超过3s,数据量的问题,这两个参数目前都没有设置。因为这个错误是偶尔出现,但是一出现服务就会不停的报这个错误
我们出现过类似问题,MySQL 数据库故障,不响应应用请求,导致线程被长时间卡住。通过设置 socketTimeout,可以保证连接不会卡住很长时间,超过设置值就会超时返回。
谢谢, 我这边先试试,看看这种情况还会出现么
3
有多个慢查超过3s,数据量的问题,这两个参数目前都没有设置。因为这个错误是偶尔出现,但是一出现服务就会不停的报这个错误
我们出现过类似问题,MySQL 数据库故障,不响应应用请求,导致线程被长时间卡住。通过设置 socketTimeout,可以保证连接不会卡住很长时间,超过设置值就会超时返回。
谢谢, 我这边先试试,看看这种情况还会出现么
大佬能帮忙看看这个问题么 #4387,最近遇到的一个问题,非常感谢
7
有个参数phyTimeoutMillis,可以设置物理链接存在的最大时长,我也是所有办法都试了,没解决,看源码发现了这个参数。好像有用
1
有个参数phyTimeoutMillis,可以设置物理链接存在的最大时长,我也是所有办法都试了,没解决,看源码发现了这个参数。好像有用
谢谢,我试试,最近加了socketTimeout 和connectTimeout,目前还没出现那个报错,出现了就有的弄了
1
有个参数phyTimeoutMillis,可以设置物理链接存在的最大时长,我也是所有办法都试了,没解决,看源码发现了这个参数。好像有用
谢谢,我试试,最近加了socketTimeout 和connectTimeout,目前还没出现那个报错,出现了就有的弄了
我们都设置的也会出问题,phyTimeoutMillis我刚看了源码,也有问题,设置了可能也不生效。我dump出来内存发现确实存在超过数据库wait_timeout的链接,按道理设置了testOnBorrow应该没问题,结果没生效。
1
使用
有个参数phyTimeoutMillis,可以设置物理链接存在的最大时长,我也是所有办法都试了,没解决,看源码发现了这个参数。好像有用
谢谢,我试试,最近加了socketTimeout 和connectTimeout,目前还没出现那个报错,出现了就有的弄了
我们都设置的也会出问题,phyTimeoutMillis我刚看了源码,也有问题,设置了可能也不生效。我dump出来内存发现确实存在超过数据库wait_timeout的链接,按道理设置了testOnBorrow应该没问题,结果没生效。
使用keepalive配合minidle试试呢,keepalive是保活的,保证连接到数据库最少有minidle个连接,并且连接超过min-evictable-idle-time-millis会自动请求数据库保证该连接有效
1