网站地图    收藏   

主页 > 后端 > mysql数据库 >

mysql性能监控相关 - mysql数据库栏目 - 自学php

来源:自学PHP网    时间:2015-04-16 10:51 作者: 阅读:

[导读] mysql性能监控相关一,获取mysql用户下的进程总数二,主机性能状态三,CPU使用率四,磁盘IO量五,swap进出量[内存]六,数据库性能状态七、querylog八、mysqladmin的extended-status指令查看mysq...

mysql性能监控相关
 
一,获取mysql用户下的进程总数
二,主机性能状态
三,CPU使用率
四,磁盘IO量
五,swap进出量[内存]
六,数据库性能状态
七、querylog
八、mysqladmin的extended-status指令查看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
 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论