-
Notifications
You must be signed in to change notification settings - Fork 8.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
求助大佬: 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. #4351
Comments
此问题目前偶尔出现,但一出现,会一直报此错误。线上环境maxActive会配置的稍微大一点 |
看下数据库配置的连接超时时间 |
都是默认配置 |
在数据库 url 后面配置一个 socketTimeout 参数,比如 jdbc:mysql://xxxxx:3306/dbname?socketTimeout=5000。注意这个参数会影响慢查,如果慢查时间超过3秒,也会被中断。另外我看你上面还有一个连接超时的异常,connectTimeout 参数也配置一下,先配置成 3000 试试。 |
有多个慢查超过3s,数据量的问题,这两个参数目前都没有设置。因为这个错误是偶尔出现,但是一出现服务就会不停的报这个错误 |
我们出现过类似问题,MySQL 数据库故障,不响应应用请求,导致线程被长时间卡住。通过设置 socketTimeout,可以保证连接不会卡住很长时间,超过设置值就会超时返回。 |
谢谢, 我这边先试试,看看这种情况还会出现么 |
大佬能帮忙看看这个问题么 #4387,最近遇到的一个问题,非常感谢 |
有个参数 |
谢谢,我试试,最近加了socketTimeout 和connectTimeout,目前还没出现那个报错,出现了就有的弄了 |
我们都设置的也会出问题,phyTimeoutMillis我刚看了源码,也有问题,设置了可能也不生效。我dump出来内存发现确实存在超过数据库 |
使用
使用keepalive配合minidle试试呢,keepalive是保活的,保证连接到数据库最少有minidle个连接,并且连接超过min-evictable-idle-time-millis会自动请求数据库保证该连接有效 |
版本太低了,升级到最新版本应该就好了。 |
数据库没有做读写分离
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
The text was updated successfully, but these errors were encountered: