一、问题背景
客户应用端经常报连接报错
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
二、原因分析
上面是客户的应用连接池配置,发现客户的maximum-pool-size=10太小了,应用端并发很容易打满应用端连接池的连接数。
刚好和连接报错信息吻合,The last packet sent successfully to the server was 0 milliseconds ago. 说明是客户端无法建立连接。
hakari连接数满的情况下 就会报这个错误。
三、解决方案
1、添加testWhileIdle=true配置,应用实例在使用连接前进行连接有效性的检查。
2、添加autoReconnect=true配置,连接到数据源的连接发生中断,Druid会尝试自动重新连接。
3、加长MySQL的wait_timeout空闲连接超时时间,使其大于客户端应用空闲连接超时时间。
4、增大hakari的maximum-pool-size(本案例就处于此种情况)