mysql性能监控相关
目录
一,获取mysql用户下的进程总数
ps -ef | awk '{print $1}' | grep "mysql" | grep -v "grep" | wc-1 二,主机性能状态
# uptime
[root@ ~]# uptime
13:05:52 up 53 days, 52 min, 1 user, load average: 0.00, 0.00, 0.00
三,CPU使用率
# top
或
# vmstat 四,磁盘IO量
# vmstat 或 # iostat 五,swap进出量[内存] # free 六,数据库性能状态
(1)QPS(每秒Query量)
QPS = Questions(or Queries) / seconds
mysql > show /*50000 global */ status like 'Question';
(2)TPS(每秒事务量)
TPS = (Com_commit + Com_rollback) / seconds
mysql >
show status like 'Com_commit';
mysql > show status like 'Com_rollback'; (3)key Buffer 命中率
key_buffer_read_hits = (1-key_reads / key_read_requests)
* 100%
key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%
mysql> show status like 'Key%'; (4)InnoDB Buffer命中率
innodb_buffer_read_hits = (1 -
innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%
mysql> show status like 'innodb_buffer_pool_read%'; (5)Query Cache命中率
Query_cache_hits = (Qcahce_hits / (Qcache_hits +
Qcache_inserts )) * 100%;
mysql> show status like 'Qcache%';
(6)Table Cache状态量
mysql> show
status like 'open%'; (7)Thread Cache 命中率
Thread_cache_hits = (1 - Threads_created / connections
) * 100%
mysql> show status like 'Thread%';
mysql> show status like 'Connections'; (8)锁定状态
mysql> show status like '%lock%';
(9)复制延时量
mysql > show slave status (10) Tmp Table 状况(临时表状况)
mysql > show status like
'Create_tmp%'; (11) Binlog Cache 使用状况
mysql > show status like
'Binlog_cache%'; (12) Innodb_log_waits 量
mysql > show status like 'innodb_log_waits'; 七、querylog
mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysql启动的时候加入一些参数。如果在my.cnf里面修改,需增加如下几行
引用
long_query_time = 1
log-slow-queries = /var/youpath/slow.log
log-queries-not-using-indexes[这个在mysql4.10以后才被引入]
long_query_time 是指执行超过多久的sql会被log下来,这里是1秒。
log-slow-queries
设置把日志写在那里,可以为空,系统会给一个缺省的文件host_name-slow.log,我生成的log就在mysql的data目录
log-queries-not-using-indexes
就是字面意思,log下来没有使用索引的query。
把上述参数打开,运行一段时间,就可以关掉了,省得影响生产环境。 接下来就是分析了,我这里的文件名字叫host-slow.log。
先mysqldumpslow
–help以下,我主要用的是
引用
-s ORDER what to sort by (t, at, l, al, r, ar etc), ‘at’ is default
-t
NUM just show the top n queries
-g PATTERN grep: only consider stmts that
include this string
-s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有
c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙
-t,是top
n的意思,即为返回前面多少条的数据
-g,后边可以写一个正则匹配模式,大小写不敏感的 mysqldumpslow -s c
-t 20 host-slow.log
mysqldumpslow -s r -t 20
host-slow.log
上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。
mysqldumpslow -t 10
-s t -g “left join” host-slow.log
这个是按照时间返回前10条里面含有左连接的sql语句。 八、mysqladmin的extended-status指令查看mysql各状态值
/usr/local/mysql/bin/mysqladmin
-u User --host=IP --password=Passwd extended-status|grep $VARIABLE|awk '{print
$4}' 附网友总结的mysql状态值含义 Aborted_clients
由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
Aborted_connects
尝试已经失败的MySQL服务器的连接的次数。
Connections
试图连接MySQL服务器的次数。
Created_tmp_tables
当执行语句时,已经被创造了的隐含临时表的数量。
Delayed_insert_threads
正在使用的延迟插入处理器线程的数量。
Delayed_writes
用INSERT DELAYED写入的行数。
Delayed_errors
用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。
Flush_commands
执行FLUSH命令的次数。
Handler_delete
请求从一张表中删除行的次数。
Handler_read_first
请求读入表中第一行的次数。
Handler_read_key
请求数字基于键读行。
Handler_read_next
请求读入基于一个键的一行的次数。
Handler_read_rnd
请求读入基于一个固定位置的一行的次数。
Handler_update
请求更新表中一行的次数。
Handler_write
请求向表中插入一行的次数。
Key_blocks_used
用于关键字缓存的块的数量。
Key_read_requests
请求从缓存读入一个键值的次数。
Key_reads
从磁盘物理读入一个键值的次数。
Key_write_requests
请求将一个关键字块写入缓存次数。
Key_writes
将一个键值块物理写入磁盘的次数。
Max_used_connections
同时使用的连接的最大数目。
Not_flushed_key_blocks
在键缓存中已经改变但是还没被清空到磁盘上的键块。
Not_flushed_delayed_rows
在INSERT DELAY队列中等待写入的行的数量。
Open_tables
打开表的数量。
Open_files
打开文件的数量。
Open_streams
打开流的数量(主要用于日志记载)
Opened_tables
已经打开的表的数量。
Questions
发往服务器的查询的数量。
Slow_queries
要花超过long_query_time时间的查询数量。
Threads_connected
当前打开的连接的数量。
Threads_running
不在睡眠的线程数量。
Uptime
服务器工作了多少秒。 九、开源监控软件
1,RRDTool
2,Nagios
3,MRTG
4,Cacti 1.系统mysql的进程数
ps -ef | grep "mysql" | grep -v "grep" | wc –l 2.Slave_running
mysql > show status like 'Slave_running';
如果系统有一个从复***务器,这个值指明了从服务器的健康度 3.Threads_connected
mysql > show status like 'Threads_connected';
当前客户端已连接的数量。这个值会少于预设的值,但你也能监视到这个值较大,这可保证客户端是处在活跃状态。 4.Threads_running
mysql
> show status like 'Threads_running';
如果数据库超负荷了,你将会得到一个正在(查询的语句持续)增长的数值。这个值也可以少于预先设定的值。这个值在很短的时间内超过限定值是没问题的。当Threads_running值超过预设值时并且该值在5秒内没有回落时,
要同时监视其他的一些值。 5.Aborted_clients
mysql > show status like 'Aborted_clients';
客户端被异常中断的数值,即连接到mysql服务器的客户端没有正常地断开或关闭。对于一些应用程序是没有影响的,但对于另一些应用程序可能你要跟踪该值,因为异常中断连接可能表明了一些应用程序有问题。 6.Questions
mysql> show status like 'Questions';
每秒钟获得的查询数量,也可以是全部查询的数量,根据你输入不同的命令会得到你想要的不同的值。 7.Handler_*
mysql> show status like 'Handler_%';
如果你想监视底层(low-level)数据库负载,这些值是值得去跟踪的。
如果Handler_read_rnd_next值相对于你认为是正常值相差悬殊,可能会告诉你需要优化或索引出问题了。Handler_rollback表明事务被回滚的查询数量。你可能想调查一下原因。 8.Opened_tables
mysql>
show status like 'Opened_tables';
表缓存没有命中的数量。如果该值很大,你可能需要增加table_cache的数值。典型地,你可能想要这个值每秒打开的表数量少于1或2。
9.Select_full_join
mysql> show status like 'Select_full_join';
没有主键(key)联合(Join)的执行。该值可能是零。这是捕获开发错误的好方法,因为一些这样的查询可能降低系统的性能 10.Select_scan
mysql> show status like 'Select_scan';
执行全表搜索查询的数量。在某些情况下是没问题的,但占总查询数量该比值应该是常量(即Select_scan/总查询数量商应该是常数)。如果你发现该值持续增长,说明需要优化,缺乏必要的索引或其他问题。
11.Slow_queries
mysql>
show status like 'Slow_queries';
超过该值(--long-query-time)的查询数量,或没有使用索引查询数量。对于全部查询会有小的冲突。如果该值增长,表明系统有性能问题。 12.Threads_created
mysql> show status like 'Threads_created';
该值应该是低的。较高的值可能意味着你需要增加thread_cache的数值,或你遇到了持续增加的连接,表明了潜在的问题。 13.客户端连接进程数
shell> mysqladmin processlist
mysql> show processlist;
你可以通过使用其他的统计信息得到已连接线程数量和正在运行线程的数量,检查正在运行的查询花了多长时间是一个好主意。如果有一些长时间的查询,管理员可以被通知。你可能也想了解多少个查询是在"Locked"的状态—---该值作为正在运行的查询不被计算在内而是作为非活跃的。一个用户正在等待一个数据库响应。 14.innodb状态
mysql> show engine innodb status\G;
该语句产生很多信息,从中你可以得到你感兴趣的。首先你要检查的就是“从最近的XX秒计算出来的每秒的平均负载”。 (1)Pending
normal aio reads: 该值是innodb
io请求查询的大小(size)。如果该值大到超过了10—20,你可能有一些瓶颈。 (2)reads/s,
avg bytes/read, writes/s,
fsyncs/s:这些值是io统计。对于reads/writes大值意味着io子系统正在被装载。适当的值取决于你系统的配置。 (3)Buffer
pool hit rate:这个命中率非常依赖于你的应用程序。当你觉得有问题时请检查你的命中率 (4)inserts/s,
updates/s, deletes/s,
reads/s:有一些Innodb的底层操作。你可以用这些值检查你的负载情况查看是否是期待的数值范围。 15.主机性能状态
shell> uptime 16.CPU使用率
shell> top
shell> vmstat 17.磁盘IO
shell> vmstat
shell> iostat 18.swap进出量(内存)
shell> free 19.MySQL错误日志
在服务器正常完成初始化后,什么都不会写到错误日志中,因此任何在该日志中的信息都要引起管理员的注意。 20.InnoDB表空间信息
InnoDB仅有的危险情况就是表空间填满----日志不会填满。检查的最好方式就是:show
table status;你可以用任何InnoDB表来监视InnoDB表的剩余空间。 21.QPS每秒Query量
QPS = Questions(or Queries) / seconds
mysql > show /* global */ status like 'Question'; 22.TPS(每秒事务量)
TPS = (Com_commit + Com_rollback) / seconds
mysql > show status like 'Com_commit';
mysql > show status like 'Com_rollback'; 23.key
Buffer 命中率
key_buffer_read_hits = (1-key_reads / key_read_requests) * 100%
key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%
mysql> show status like 'Key%'; 24.InnoDB
Buffer命中率
Innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%
mysql> show status like 'innodb_buffer_pool_read%'; 25.Query
Cache命中率
Query_cache_hits = (Qcahce_hits / (Qcache_hits + Qcache_inserts )) * 100%;
mysql> show status like 'Qcache%'; 26.Table
Cache状态量
mysql> show status like 'open%'; 27.Thread
Cache 命中率
Thread_cache_hits = (1 - Threads_created / connections ) * 100%
mysql> show status like 'Thread%';
mysql> show status like 'Connections'; 28.锁定状态
mysql> show status like '%lock%'; 29.复制延时量
mysql > show slave status 30.Tmp
Table状况(临时表状况)
mysql > show status like 'Create_tmp%'; 31.Binlog
Cache使用状况
mysql > show status like 'Binlog_cache%'; 32.Innodb_log_waits量
mysql > show status like 'innodb_log_waits'; http://www.open-open.com/lib/view/open1328776066546.html
mysql性能监控相关的更多相关文章
- MySQL 性能监控 4 大指标
[编者按]本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的 4 大指标. 文章系国内 ITOM 管理平台 OneAPM 编译呈现. MySQL 是什么? MySQL ...
- MySQL 性能监控4大指标——第一部分
[编者按]本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的4大指标. 第一部分将详细介绍前两个指标: 查询吞吐量与查询执行性能.文章系国内 ITOM 管理平台 OneAPM ...
- MySql性能优化相关
原来使用MySql处理的数据量比较少,小打小闹的,没有关注过性能的问题.最近要处理的数据量飙升,每天至少20W行的新增数据,导致MySql在性能方面已经是差到不可用的地步了,必须要重视MySql的优化 ...
- MySQL 性能监控4大指标——第二部分
[编者按]本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的4大指标. 第一部分介绍了前两个指标:查询吞吐量与查询执行性能.本文将继续介绍另两个指标:MySQL 连接与缓冲池 ...
- Mysql性能监控可视化
前言 操作系统以及Mysql数据库的实时性能状态数据尤为重要,特别是在有性能抖动的时候,这些实时的性能数据可以快速帮助你定位系统或Mysql数据库的性能瓶颈,镜像你在Linux系统上使用top.i ...
- mysql性能监控软件pmm
具体配置操作步骤:1.在vmware或者virtualbox上安装centos镜像,可以选择阿里巴巴的镜像,下载速度快 centos7 修改yum源为阿里源,某下网络下速度比较快 首先是到yum源设置 ...
- Mysql性能监控项及sql语句
推荐一款mysql监控软件MONyog 1.查询缓存: mysql> show variables like '%query_cache%'; 2.缓存在Cache中线程数量thread_cac ...
- Mysql 性能监控及调优
死锁概念: 两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象 1.监控死锁(innotop): (1) 启用 innodb_status_file 在/etc/my.cnf添加如 ...
- myawr : mysql性能监控
myawr以mysql instance 为单位,每隔一段时间进行采样,然后把数据保存到数据库,以便分析.目前myawr脚本收集的信息包括5个部分: 1 系统方面的:负载.cpu.io.网络.swap ...
随机推荐
- linux线程的实现
首先从OS设计原理上阐明三种线程:内核线程.轻量级进程.用户线程 内核线程 内核线程就是内核的分身,一个分身可以处理一件特定事情.这在处理异步事件如异步IO时特别有用.内核线程的使用是廉价的,唯一使用 ...
- ASM:《X86汇编语言-从实模式到保护模式》第14章:保护模式下的特权保护和任务概述
★PART1:32位保护模式下任务的隔离和特权级保护 这一章是全书的重点之一,这一张必须要理解特权级(包括CPL,RPL和DPL的含义)是什么,调用门的使用,还有LDT和TSS的工作原理(15章着重 ...
- vs2013显示行号
随便打开一个项目,可以看到代码框内并没有显示行号 选择“工具”-“选项”,打开后界面如下 选择文本编辑器,找到下图中的“行号”并勾选 行号可以显示了 5 这样我们就完成了任务
- func 和 actin 委托的区别
一.[action<>]指定那些只有输入参数,没有返回值的委托 1.1定义一个委托: 比如,我们原来写委托: public delegate void myDelegate(string ...
- 【leetcode】Remove Duplicates from Sorted Array I & II(middle)
Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...
- 关闭Eclipse的控制台console自动跳出
一.背景 在eclipse中进行开发,尤其是在后台有项目运行的时候,当有log或者错误需要打印到console中时,控制台就会被自动弹出,恰好这时候你又在编写代码,就会感觉瞬间想杀人,下面我们就来分享 ...
- cookie的设置、获取以及删除
首先介绍一下cookie的基本信息: cookie是以域为单位的,它必须放在服务器的的环境下,但是cookie的容量小,只有4kb,并且也不安全,还有入股cookie的名字相同,会修改或者覆盖原来的值 ...
- Java网络连接之HttpURLConnection 与 HttpClient
HttpClient使用详解:http://blog.csdn.net/wangpeng047/article/details/19624529 注:HttpURLConnection输出流用ou ...
- Codeforces Round #370 (Div. 2)(简单逻辑,比较水)
C. Memory and De-Evolution time limit per test 2 seconds memory limit per test 256 megabytes input s ...
- iOS 判断第一个字符是数字还是汉字
NSString *titleStr = @"琳小兮"; //先截取字符串,拿到第一个字符 NSString *firstStr = [titleStr s ...