MySQL连接为什么挂死了及解决方案有哪些?[图]

在微服务架构中,MySQL作为数据存储遇到挂死问题。通过分析发现,即使VIP切换,业务有时仍无法访问。问题根源在于连接池中线程挂死。解决方案包括增加AddConnectionExecutor线程数量和设置SO_TIMEOUT避免阻塞。
摘要由CSDN通过智能技术生成

一、背景
近期测试反馈关于系统可靠性测试提出的问题令人感到头疼,一来这类问题有时候属于“偶发”现象,难以在环境上快速复现;二来则是可靠性问题的定位链条有时候变得很长,极端情况下可能要从A服务追踪到Z服务,或者是从应用代码追溯到硬件层面。
架构
首先,系统以MySQL作为主要的数据存储部件。整一个是典型的微服务架构(SpringBoot+SpringCloud),持久层则采用了如下几个组件:
mybatis,实现SQL<->Method的映射
hikaricp,实现数据库连接池
mariadb-java-client,实现JDBC驱动
在MySQL服务端部分,后端采用了双主架构,前端以keepalived结合浮动IP(VIP)做一层高可用。如下:
说明
MySQL部署两台实例,设定为互为主备的关系。
为每台MySQL实例部署一个keepalived进程,由keepalived提供VIP高可用的故障切换。
实际上,keepalived和MySQL都实现了容器化,而VIP端口则映射到VM上的nodePort服务端口上。
业务服务一律使用VIP进行数据库访问。

MySQL连接为什么挂死了及解决方案有哪些?[图]

Keepalived是基于VRRP协议实现了路由层转换的,在同一时刻,VIP只会指向其中的一个虚拟机(master)。当主节点发生故障时,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值