设为首页 加入收藏

TOP

MySQL?MySql连接数与线程池(二)
2019-09-17 16:02:21 】 浏览:38
Tags:MySQL MySql 连接 线程
服务器死锁的风险

 

thread_pool_stall_limit允许线程池处理长时间运行的语句。如果某个长时间运行的语句阻塞线程组,那么所有分配给该线程组的连接都会被阻塞,且在长时间运行的语句完成之前无法被执行。最差的情况下,这可能耗费几个小时甚至几天。

 

仔细考虑thread_pool_stall_limit值的选取,以便语句执行被认为停滞前,有更长的执行时间。执行停滞的语句(Stalled statment),会调用额外的上下文切换,某些情况下,甚至是额外线程的创建,因此会产生许多额外超负载。另一方面,thread_pool_stall_limit值如果设置太高,意味着长时间运行的语句会更长时间的阻塞许多短时间运行的语句。短时间等待允许线程更快的启动,同时更有利于避免产生死锁。长时间等待利于包含长时间运行语句的工作负载,避免当前语句执行时,开启更多新的语句。

 

假设服务器执行一工作任务,即便是服务器处于负载的情况下,其99.9%的语句都在100ms内完成,剩余语句的执行时间相当均匀的分布在100ms2小时之间。这种情况,把thread_pool_stall_limit设置为10会比较,即100ms(毫秒)。针对主要执行简单语句的的服务器来说,默认值,60ms已经很ok

 

thread_pool_stall_limit参数可以在运行时被修改,以便服务器工作负载上能取得一个适当的平衡。假设开启了TP_THREAD_GROUP_STATS表,可以使用以下查询来判断停滞执行语句所占比例。

 

SELECT SUM(STALLED_QUERIES_EXECUTED) / SUM(QUERIES_EXECUTED)

FROM information_schema.TP_THREAD_GROUP_STATS;

该值应尽可能低,为了降低语句执行停滞的可能性,增加thread_pool_stall_limit的值。

 

修改thread_pool_stall_limit:同修改最大连接数“max_connections

 

参考连接:

http://dev.mysql.com/doc/refman/5.7/en/thread-pool-tuning.html

 

 

参考连接:

http://dev.mysql.com/doc/refman/4.1/en/server-status-variables.html

 

 

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇用xtrabackup实现mysql的主从复制.. 下一篇MySQL?性能优化--优化数据库结构..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目