可选值 | 含义 |
disabled | 禁止模式动态迁移 |
stable | 只有新连接迁移 |
fast | 新连接 + 新请求都迁移,默认模式 |
sharp | kill 当前活跃连接,迫使用户重连,达到快速切换的效果 |
show threadpool status
中新增如下状态:show full processlist
中新增如下状态:参数名 | 动态 | 类型 | 默认 | 参数值范围 | 说明 |
thread_pool_idle_timeout | Yes | uint | 60 | [1, UINT_MAX] | worker 线程在没有需要处理的网络事件时,最多等待此时间(单位秒)后销毁 |
thread_pool_oversubscribe | Yes | uint | 高稳定参数模板:10 高性能参数模板:16 | [3,32] | 在一个工作组中最多允许多少个 worker |
thread_pool_size | Yes | uint | 当前机器 CPU 个数 | [1,1000] | 线程组个数 |
thread_pool_stall_limit | Yes | uint | 500 | [10, UINT_MAX] | 每间隔此时间(单位毫秒)timer 线程负责遍历检查一次所有线程组。 当线程组没有 listener、高低优先级队列非空并且没有新增的 IO 网络事件时,认为线程组处于 stall 状态,timer 线程负责唤醒或创建新的 worker 线程来缓解该线程组的压力 |
thread_pool_max_threads | Yes | uint | 100000 | [1,100000] | 线程池中所有 worker 线程的总数 |
thread_pool_high_prio_mode | Yes, session | enum | transactions | transactions\\statement\\none | 高优先级队列工作模式,包括三种: transactions:只有一个已经开启了事务的 SQL,并且 thread_pool_high_prio_tickets 不为0,才会进入到高优先级队列中,每个连接在 thread_pool_high_prio_tickets 池被放到优先队列中后,会移到普通队列中 statement:所有连接都被放入高优先级队列中 none:与 statement 相反,所有连接都被放入低优先级队列中 |
thread_pool_high_prio_tickets | Yes, session | uint | UINT_MAX | [0, UINT_MAX] | transactions 工作模式下,给每个连接授予的 tickets 大小 |
threadpool_workaround_epoll_bug | Yes | bool | false | true/false | 是否绕过 linux2.x 中的 epoll bug,该 bug 在 linux3 中修复 |
show threadpool status
命令展示的相关状态介绍:状态名 | 说明 |
groupid | 线程组 ID |
connection_count | 线程组用户连接数 |
thread_count | 线程组内工作线程数 |
havelistener | 线程组当前是否存在 listener |
active_thread_count | 线程组内活跃 worker 数量 |
waiting_thread_count | 线程组内等待中的 worker 数量(调用 wait_begin 的 worker) |
waiting_threads_size | 线程组中无网络事件需要处理,进入休眠期等待被唤醒的 worker 数量(等待 thread_pool_idle_timeout 秒后自动销毁) |
queue_size | 线程组普通优先级队列长度 |
high_prio_queue_size | 线程组高优先级队列长度 |
get_high_prio_queue_num | 线程组内事件从高优先级队列被取走的总次数 |
get_normal_queue_num | 线程组内事件从普通优先级队列被取走的总次数 |
create_thread_num | 线程组内创建的 worker 线程总数 |
wake_thread_num | 线程组内从 waiting_threads 队列中唤醒的 worker 总数 |
oversubscribed_num | 线程组内 worker 发现当前线程组处于 oversubscribed 状态,并且准备进入休眠的次数 |
mysql_cond_timedwait_num | 线程组内 worker 进入 waiting_threads 队列的总次数 |
check_stall_nolistener | 线程组被 timer 线程 check_stall 检查中发现没有 listener 的总次数 |
check_stall_stall | 线程组被 timer 线程 check_stall 检查中被判定为 stall 状态的总次数 |
max_req_latency_us | 线程组中用户连接在队列等待的最长时间(单位毫秒) |
conns_timeout_killed | 线程组中用户连接因客户端无新消息时间超过阈值(net_wait_timeout)被 killed 的总次数 |
connections_moved_in | 从其他线程组中迁入该线程组的连接总数 |
connections_moved_out | 从该线程组迁出到其他线程组的连接总数 |
connections_moved_from_per_thread | 从 one-thread-per-connection 模式中迁入该线程组的连接总数 |
connections_moved_to_per_thread | 从该线程组中迁出到 one-thread-per-connection 模式的连接总数 |
events_consumed | 线程组处理过的 events 总数 |
average_wait_usecs_in_queue | 线程组内所有 events 在队列中的平均等待时间 |
本页内容是否解决了您的问题?