searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

TeleDB for MySQL实例的连接池参数值过小的问题

2023-06-09 06:05:49
44
0

一、故障表现

数据库建立连接时间不稳定,time /$instance_dir/mysql -uRDS_gw -hxx.xx.xx.xx -P6301 -p'xxxxxxxx' -e 'seelct 1;' 

这里的 -hxx.xx.xx.xx 没有用vip、不经过gw,如下图,几次执行的时间不在一个数量级上。

二、故障排查

进入数据库里show processlist可以看到很多unauthenticated user Connect状态的进程。

show global variables like '%thread%';

thread_pool_oversubscribe =3 

thread_pool_size = 4 ,图里是调整后的50

结合客户提供的测试网页,基本可以判断客户Php没做连接池,高并发短链接直接打到数据库导致的这种现象。

三、故障原因

1、客户php应用的高并发短链接,建议更改为连接池

2、rds实例的连接池参数值设置的太小。我们设置的应该是固定的值,4个分组,每组3个。

四、可能的解决方案

因为无法预测客户侧的动作,所以仅考虑我侧能够实施的优化方案

1、参照友商,thread_pool_size=4 、thread_pool_oversubscribe=32 不区分实例规格;

2、参照percona,thread_pool_size跟随逻辑cpu核数、thread_pool_oversubscribe默认3;

3、管控配置文件模板建议加上thread_pool_stall_limit=10,这个等待时间默认500ms,会导致查询有毛刺(查询只要10ms,高并发时这个参数等待500ms)

#当前我们的策略:400、3、50、500

0条评论
0 / 1000
z****n
18文章数
1粉丝数
z****n
18 文章 | 1 粉丝
原创

TeleDB for MySQL实例的连接池参数值过小的问题

2023-06-09 06:05:49
44
0

一、故障表现

数据库建立连接时间不稳定,time /$instance_dir/mysql -uRDS_gw -hxx.xx.xx.xx -P6301 -p'xxxxxxxx' -e 'seelct 1;' 

这里的 -hxx.xx.xx.xx 没有用vip、不经过gw,如下图,几次执行的时间不在一个数量级上。

二、故障排查

进入数据库里show processlist可以看到很多unauthenticated user Connect状态的进程。

show global variables like '%thread%';

thread_pool_oversubscribe =3 

thread_pool_size = 4 ,图里是调整后的50

结合客户提供的测试网页,基本可以判断客户Php没做连接池,高并发短链接直接打到数据库导致的这种现象。

三、故障原因

1、客户php应用的高并发短链接,建议更改为连接池

2、rds实例的连接池参数值设置的太小。我们设置的应该是固定的值,4个分组,每组3个。

四、可能的解决方案

因为无法预测客户侧的动作,所以仅考虑我侧能够实施的优化方案

1、参照友商,thread_pool_size=4 、thread_pool_oversubscribe=32 不区分实例规格;

2、参照percona,thread_pool_size跟随逻辑cpu核数、thread_pool_oversubscribe默认3;

3、管控配置文件模板建议加上thread_pool_stall_limit=10,这个等待时间默认500ms,会导致查询有毛刺(查询只要10ms,高并发时这个参数等待500ms)

#当前我们的策略:400、3、50、500

文章来自个人专栏
数据库运维专项
18 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0