全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

MySQL thread_stack连接线程的优化

MySQL连接不仅能通过网络方式,还可以通过命名管道的方式,不论是哪种方式连接MySQL,在MySQL中都是通过线程的方式管理所有客户端请求的。每一个客户端连接都会有一个与之对应的连接线程。在MySQL中实现了一个Thread Cache池,将空闲的连接线程存放其中,而不是完成请求后就销毁。这样,当有新的连接请求时,MySQL首先会检查Thread Cache中是否存在空闲连接线程,如果存在则取出来直接使用,如果没有空闲连接线程,才创建新的连接线程。具体参数:
Thread_cache_size:Thread Cache池中应该存放的连接线程数。
Thread_stack:每个连接线程被创建时,MySQL给它分配的内存大小。当MySQL创建一个新的连接线程时,需要给它分配一定大小的内存堆栈空间,以便存放客户端的请求的Query及自身的各种状态和处理信息。
查看连接线程相关的系统变量的设置值: show variables like 'thread%';

mysql> show variables like 'thread%';
+-------------------+--------+
| Variable_name | Value |
+-------------------+--------+
| thread_cache_size | 32 |
| thread_stack | 196608 |
+-------------------+--------+
2 rows in set (0.00 sec)

如图,系统设置了Thread Cache池最多将缓存25个连接线程,每个连接线程创建之初,系统分配192KB的内存堆栈给它。
查看系统被连接的次数及当前系统中连接线程的状态值

mysql> show status like 'connections';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Connections | 620 |
+---------------+-------+
1 row in set (0.00 sec)

mysql> show status like '%thread%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| Delayed_insert_threads | 0 |
| Slow_launch_threads | 0 |
| Threads_cached | 3 |
| Threads_connected | 4 |
| Threads_created | 7 |
| Threads_running | 1 |
+------------------------+-------+
6 rows in set (0.00 sec)

系统启动到现在共接受到客户端的连接620次,共创建了7个连接线程,当前有1个连接线程处于和客户端连接的状态,而3个连接状态的线程中只有一个处于 active 状态,即只有一个正在处理客户端提交的请求,。而在Thread Cache池中缓存了3个连接线程。

Thread Cache 命中率:
Thread_Cache_Hit = (Connections - Threads_created) / Connections * 100%;
一般在系统稳定运行一段时间后,Thread Cache命中率应该保持在90%左右才算正常。

实际应用:

针对16G/32G的机器,一般设置 512K

当然如果遇到下面的错误提示就应该考虑增加这个值了。

mysql-debug: Thread stack overrun

bug info

报错信息:
java.sql.SQLException: Thread stack overrun: 5456 bytes used of a 131072 byte stack, and 128000 bytes needed. Use 'mysqld --thread_stack=#' to specify a bigger stack.

官方相应信息:

The default (192KB) is large enough for normal operation. If the thread stack size is too small, it limits the complexity of the SQL statements that the server can handle, the recursion depth of stored procedures, and other memory-consuming actions

可以使用

show variables where `variable_name` = 'thread_stack';

查询当前数据库的默认线程栈的大小,一般情况下都能正常使用,但是当查询语句或者存储过程复杂时会报Thread stack overrun错误,此时只要修改默认配置就可以。

解决

windows: 修改mysql安装目录下的my-small.ini或者my.ini设置为256k,或者更大,然后重启服务

[mysqld]
thread_stack = 256k
linux: 同样要修改配置文件,但是!!!,不是安装目录下的配置文件,是/etc/my.cnf,只有这个文件才能生效,然后重启服务service mysql restart

[mysqld]
thread_stack = 256k


# MySQL thread_stack  # 客户端  # 给它  # 只有一个  # 重启  # 配置文件  # 池中  # 都是  # 目录下  # 还可以  # 最多  # 都能  # 更大  # 而在  # 如果没有  # 可以使用  # 正常使用  # 如图  # 与之  # 报错  # 哪种 


相关文章: 小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  详解jQuery中基本的动画方法  打鱼网站制作软件,波克捕鱼官方号怎么注册?  大型企业网站制作流程,做网站需要注册公司吗?  如何快速启动建站代理加盟业务?  如何在阿里云购买域名并搭建网站?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  高防服务器租用首荐平台,企业级优惠套餐快速部署  头像制作网站在线制作软件,dw网页背景图像怎么设置?  如何选择最佳自助建站系统?快速指南解析优劣  内部网站制作流程,如何建立公司内部网站?  网站网页制作专业公司,怎样制作自己的网页?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  如何制作网站标识牌,动态网站如何制作(教程)?  如何快速搭建高效可靠的建站解决方案?  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  招贴海报怎么做,什么是海报招贴?  如何挑选最适合建站的高性能VPS主机?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  建站VPS推荐:2025年高性能服务器配置指南  如何在香港免费服务器上快速搭建网站?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  ppt制作免费网站有哪些,ppt模板免费下载网站?  官网网站制作腾讯审核要多久,联想路由器newifi官网  如何高效完成独享虚拟主机建站?  建站之星多图banner生成与模板自定义指南  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  定制建站流程解析:需求评估与SEO优化功能开发指南  常州企业网站制作公司,全国继续教育网怎么登录?  制作网页的网站有哪些,电脑上怎么做网页?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  如何选择高效响应式自助建站源码系统?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  视频网站制作教程,怎么样制作优酷网的小视频?  公司门户网站制作流程,华为官网怎么做?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  小型网站制作HTML,*游戏网站怎么搭建?  c# 在高并发下使用反射发射(Reflection.Emit)的性能  定制建站模板如何实现SEO优化与智能系统配置?18字教程  北京企业网站设计制作公司,北京铁路集团官方网站?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  建站之星如何修改网站生成路径?  ,购物网站怎么盈利呢?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  宝塔建站助手安装配置与建站模板使用全流程解析  建站之星如何防范黑客攻击与数据泄露?  西安专业网站制作公司有哪些,陕西省建行官方网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。