【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?
数据库版本:percona-mysql 5.6.16
在很长一段时光,都邑出现法度榜样连接数据库,出现响应慢的情况,正常在几到几十毫秒之间,然则有时会出现上百毫秒的情况;
开端因为开辟从新设置并调剂过法度榜样连接池,一向困惑是连接池的问题,然则问题依旧;
因为应用的版本是 percona-mysql 5.6.16 并且应用了数据库连接池。
Thread Pool 根据参数 thread_pool_size 被分为若干个 group, 每个 group 保护 client 提议的 connections, 当 MySQL 建立 connection 时,
数量为 thread_pool_oversubscribe+1。若 worker 达到最大年夜数量后照样不足以处理回话请求, 则连接在本 group 上等待, 导致 sql 语句的 rt 增大年夜;
是以将 thread_pool_oversubscribe 参数调大年夜,然则问题依旧;
MySQL 根据 connection 的 thread id 对 thread_pool_size 取模, 将 connection 提议的 sql 语句分派到对应的 group。每个 group 的最大年夜 worker
检查 thread_cache_size,办事器内存大年夜小为 64G,thread_cache_size=128;
每建立一个连接,都须要一个线程来竽暌闺之匹配,此参数用来缓存余暇的线程,以至不被烧毁,如不雅线程缓存中有余暇线程,这时刻如不雅建立新连接,MYSQL 就会很快的响应连接请求;
- show status like '%thread%';
- Variable_name Value
- Threads_cached 0
- Threads_connected 219
- Threads_created 655068
- Threads_running 48
应用 show status 查看当前 mysql 连接情况:
- SHOW STATUS WHERE Variable_name LIKE '%Thread%';
Threads_cached : 代表当前此时此刻线程缓存中有若干余暇线程。
Threads_connected : 代表当前已建立连接的数量,因为一个连接就须要一个线程,所以也可以算作当前被应用的线程数。
Threads_created : 代表大年夜比来一次办事启动,已创建线程的数量。
Threads_running : 代表当前激活的(非睡眠状况)线程数。并不是代表正在应用的线程数,有时刻连接已建立,然则连接处于 sleep 状况,这里相对应的线程也是 sleep 状况。
最好将 thread_cache_size 设置成与 threads_connected 一样。
- show variables like '%thread%';
- +-----------------------------------------+-----------------+
- | Variable_name | Value |
- +-----------------------------------------+-----------------+
- | innodb_purge_threads | 1 |
- | innodb_read_io_threads | 4 |
- | innodb_thread_concurrency | 0 |
推荐阅读
【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞? HA(High Availability)高可用集群,其特点为根据实际需求为前端Diretor,后端RS-server,数据库办事器,共>>>详细阅读
本文标题:程序连接数据库响应慢!是Thread pool参数捣的鬼吗?
地址:http://www.17bianji.com/lsqh/40049.html
1/2 1