Mysql查看状态,连接数,线程数以及Mysql性能监控工具doDBA的使用以及优化
解决问题:
- 怎样查看Mysql最大连接数(max_connections)?怎样修改max_connections?
- 怎样查看Mysql线程缓存池数量(thread_cache_size)?thread_cache_size的作用?优化?
- 怎样查看Mysql线程的状态(Threads_cached/Threads_connected/Threads_running/Threads_running)?
- 怎样理解Threads_cached/Threads_connected/Threads_running/Threads_running?以及它们和并发量的关系?
- 怎样使用doDBA工具?
1. 怎样查看Mysql最大连接数?怎样修改?
1.1 查看MySQL最大连接数?
登录Mysql:mysql -u username -p password
show variables like '%max_connections%';
1.2 修改MySQL最大连接数?
修改mysql的配置文件。
vi /etc/my.cnf
修改或添加:max_connections=1000(需要的值)
重启mysql:systemctl restart mysqld
如果修改失败,参见博客:MySQL 修改最大连接数(max_connections)失效,上限214问题
2.怎样查看Mysql线程缓存池数量(thread_cache_size)?thread_cache_size的作用?优化?
2.1 查看
登录mysql
show variables like '%thread_cache_size%';
2.2 理解
“每个Mysql客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行,该线程只能轮流在某个CPU核心或者CPU中运行。服务器会负责缓存线程,因此不需要为每一个新建的连接创建或者销毁线程。”(来着《高性能MySQL》)
意思是如果Mysql客户端新建一个连接,那么Mysql服务器就需要为这个连接创建一个线程。如果Mysql线程缓存池中有线程,那么就直接从缓存区删除这个线程,并且把它分配给这个新的连接使用。节省了创建连接的开销。当连接关闭时,如果线程缓存还有空间的话,MySQL又会把线程返回缓存。如果没有空间,Mysql会销毁这个线程。
2.3 修改
修改mysql的配置文件。
vi /etc/my.cnf
修改或添加:thread_cache_size=300(需要的值)
重启mysql:systemctl restart mysqld
2.4 优化建议(优化建议来自《高性能MySQL》)
thread_cache_size变量指定了MySQL可以保持在缓存中的线程数。一般不需要配置这个值,除非服务器有很多连接请求。如果我们观察到很少有每秒创建的新线程数少于10个的时候,通常应该尝试保持线程缓冲足够大,但是实际上经常可能看到每秒少于1个新线程的情况。
一个好的办法是观察Threads_connected变量并且尝试设置thread_cache_size足够大以便能处理业务压力正常的波动。如果它保持在100-120,则可以设置为20;如果保持在500-700,200的线程缓存应该足够大了。
3.怎样查看Mysql线程的状态?
登录mysql
show status like 'thread%';
Threads_cached:当前线程缓存还有多少线程。
Threads_connected:当前已连接的MySQL线程数。这个值不会超过max_connections,也许会超过1或2个,不用管它。
Threads_created:这个值是个累加值,表示MySQL服务器为连接创建的线程数?有待考证!
Threads_running:表示当前正在运行的连接数,这个数会远小于Threads_connected,这是正常情况。
4. 怎样理解Threads_cached/Threads_connected/Threads_running/Threads_running?以及它们和并发量的关系?
没有高并发时,这四个状态为:
1000并发时,这四个状态为:(参考)
当高并发开始时,Threads_cached的值会减少,Threads_created值几乎不变,Threads_connected值持续增加;当Threads_cached的值减少为0后,Threads_createds值增加(波动会大于10),Threads_connected值持续增加;直到Threads_connected值稳定,这个值和max_connections有关系,此时Threads_cached值为0,Thread_created值不变,Threads_connected值不变。
当高并发结束后,Threads_connected值会减少,Threads_cached值会恢复成最初值(thread_cache_size配置决定。)
以上就是高并发时,MySQL线程的变化情况。
优化建议:(以下建议,来自踩坑)
合理的Threads_cached值,能在高并发开始时,让MySQL更快的进入状态,因为它会节省很多创建线程的开销。Threads_connected值上不去,首先看看max_connections的值是多少,如果有连接池,看看连接池配置的最大连接数是多少,如果数据库连接池(比如Druid)最大Active连接数只有500,那Threads_connected最多只能到501(用MySQL性能检测工具可以看到),如果还是上不去,就需要具体分析了。
5. 怎样使用doDBA工具?
5.1 在linux上部署doDBA
安装:
wget https://raw.githubusercontent.com/dblucyne/dodba_tools/master/doDBA --no-check-certificate
wget https://raw.githubusercontent.com/dblucyne/dodba_tools/master/doDBA.conf --no-check-certificate
chmod +x doDBA
修改配置文件:
运行:
监控Mysql:./doDBA -h 192.168.43.167 -mysql
监控系统:./doDBA -h 192.168.43.167 -sys
(转载请标明出处)
转载于:https://www.cnblogs.com/mungerz/p/10413457.html
Mysql查看状态,连接数,线程数以及Mysql性能监控工具doDBA的使用以及优化相关推荐
- MySQL查看状态及简单优化
MySQL查看状态及简单优化 使用show status命令 含义如下: aborted_clients 客户端非法中断连接次数 aborted_connects 连接mysql失败次数 com_xx ...
- MYSQL 查看最大连接数和修改最大连接数
MySQL查看最大连接数和修改最大连接数 1.查看最大连接数 show variables like '%max_connections%'; 2.修改最大连接数 set GLOBAL max_con ...
- Mysql查看最大连接数及设置
Mysql查看最大连接数及设置 1.查看连接数 show status like 'Threads%' 2.查看当前数据库设置的最大连接数 show variables like '%max_conn ...
- 查看tomcat的线程数
查看tomcat的线程数 ps -Lf pid |wc -l 查看tomcat的线程数 port: 5010 netstat -an|grep port|awk '{count[$6]++} END{ ...
- linux下查看进程的线程数,linux查看进程的线程数
top -H -p $PID #查看对应进程的那个线程占用CPU过高 1.top -H 手册中说:-H : Threads toggle 加上这个选项启动top,top一行显示一个线程.否则,它一行 ...
- mysql 查看密码_Ubuntu安装和配置MySQL数据库
彻底删除mysql 首先在终端中查看MySQL的依赖项 //创建一个Date对象,表示当前系统时间Date date1=new Date();//创建一个Date对象,参数表示指定的时间距离1970年 ...
- MySQL查看数据库连接数和状态
1.查看MySQL连接数 登录到MySQL命令行,使用如下命令可以查看当前处于连接未关闭状态的进程列表: show full processlist; 若不加上full选项,则最多显示100条记录. ...
- mysql查看历史连接数_MySQL如何查看连接数和连接状态
MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准 ...
- mysql查看最大连接数_MySQL查看最大连接数和修改最大连接数
1.查看最大连接数 show variables like '%max_connections%'; 2.修改最大连接数 set GLOBAL max_connections = 200; 以下的文章 ...
最新文章
- python爬虫实例100-Python 练习实例1
- Java集合中的排序API分析
- 201771010118马昕璐《面向对象程序设计java》第八周学习总结
- 分享10个强大的神器工具,你一定会需要!
- 2013年第四届蓝桥杯C/C++ A组国赛 —— 第二题:骰子迷题
- svn 分支合并(Subclipse例子)
- 程序员基本功02对象与内存控制
- mongo ttl索引
- matlab零相移滤波,零相移数字滤波器边界效应讨论(附程序与参考文献)
- 优秀的程序员是如何处理技术 Bug 的?
- CGI、PHP-CGI、FastCGI
- Theme相关:button的效果不显示
- 第六章节 三层架构(二. 模型层与数据访问层)
- 实用主义学python百度网盘_麻瓜编程:实用主义学Python(5套全)(火评)
- 蓝光三维扫描仪 蓝光投影仪
- UopenCryptionKit4Java:一个好用的轻量开源加解密器工具包
- ActiveMQ 停止 关闭 报错 ERROR: No or outdated process id in
- 计算机一级网络题连接网络,计算机一级MSOffice模拟试题及答案
- 都2021年了不会还有人用门禁卡吧!(手把手教你用手机代替门禁卡)
- Word学习简单笔记(2)文档排版与设计
热门文章
- Python报错:IndentationError: expected an indented block
- Working copy XXX locked and cleanup failed in SVN
- Java多线程同步Synchronized深入解析
- Java线程池Executor框架
- linux文件系统启动流程 ---笔记整理
- Nand分区及nand erase简解
- 叶县有没有计算机培训学校,叶县中等专业学校
- java feign同时传对象和其他参数_关于Spirng Cloud的Feign传参问题:
- Java throws子句
- 利用Cydia Substrate进行Android HOOK(2)