mysql线程池

mysql连接池与线程池
区别
    连接池是客户端进行设置
    线程池是db服务端设置

连接池的作用
 控制客户端频繁连接DB服务器,和销毁连接线程

线程池的优势
 1.防止雪崩
 2.提高性能,提升系统稳定性
架构
 mysql_thread_pool被划分成一个线程(timer)和多个group,每个group又有对应的工作线程
 timer线程
  控制管理整个group,。。。
 group组成
  两个高低队列
  listener
  worker
线程池简化工作流程
1.客户端的请求根据threadid%thread_pool_size来决定落到哪个group
2.group中的listener监听到有新请求,加入队列或者将其转换成worker线程
3.group中的thread线程检查队列的请求,
 有,处理,没有,则休眠,一直没唤醒的话,超过thread_pool_idle_timeout后,则结束线程退出
 当然Group中running线程数超过thread_pool_oversubscribe+1的话,也会休眠
4.timer线程会一直检查group是否被阻塞,如果有,就唤醒worker线程或者重建

线程池的分配机制
 线程池会根据thread_pool_size的值来进行group的分配,每个group各自管理客户端发起的连接,根据threadid%thread_pool_size决定分配到哪个组?
   thread_pool_oversubscribe控制每个group的并发线程数
相关参数 -- show variables like '%thread%'
   thread_handling = pool-of-threads 启用线程池
   thread_pool_size = cpu cores 设置线程池group的数量
   thread_pool_oversubscribe = 8 每个group的最大线程数 thread_pool_oversubscribe+1
   thread_pool_high_prio_mode 高优先级队列控制参数,默认transactions
   thread_pool_high_prio_tickets 每个连接分配来进入高优先级队列的ticket数,尽量设置大点。
   thread_pool_idle_timeout worker线程最大空闲时间,默认60秒,超过限制后会退出
   thread_pool_max_threads 限制线程池最大线程数,超过限制后将无法再创建更多线程,默认值10000. 
   thread_pool_stall_limit 设置timer线程的检测group是否异常的时间间隔,默认500ms

配置文件配置 #其他参数默认即可
#thread_pool
   thread_handling = pool-of-threads
   thread_pool_size = 36
   thread_pool_oversubscribe = 8
   performance_schema =off
# extra_connection
extra_max_connections = 8
extra_port = 33333

注意事项
   performance_schema=off如果performance_schema与thread_pool同时开启的话,会有内存泄漏的问题,5。7.21-20已修复改问题
   extra_connection防止连接池满无法登陆

拨测异常问题
   启用线程池后,相当于限制了线程并发数,当并发连接达到mysql的最大线程数的时候,其他线程需要等待,新连接也会卡在连接验证的那一步
   这时候会造成拨测程序连接MySQL超时,拨测程序连接超时后,就会认为master出现了问题,在极端情况下,重试多次都有异常后,就会
   启动自动切换操作,将业务切到从机
解决办法
   1.启用旁路端口,监控和高可用相关直接使用MySQL的旁路端口管理
   2.修改高可用探测脚本,将达到线程池最大活动线程数返回的错误做异常处理,当做超过最大连接数的场景来处理(只做告警,不进行自动切换)

慢sql的引入问题
   因为慢sql的问题,导致group线程数不够 
   在没有阻塞的时候,每次都是4个线程,而后面有一个线程长时间运行的时候,就会出现那个长时间线程对应的group出现排队的情况,
   最后虽然有三个空闲的线程,但却只有一个线程在处理
解决办法
   1.调大thread_pool_oversubscribe
   2.找到慢sql,优化

posted @ 2018-04-02 17:17  geek_ace  阅读(419)  评论(0编辑  收藏  举报