Mysql 监控性能状态 QPS/TPS【转】

QPS(Query per second) 每秒查询量

TPS(Transaction per second)每秒事务量

这是Mysql的两个重要性能指标,需要经常查看,和Mysql基准测试的结果对比,如果值过高,就要尽快处理了

计算方法

01

QPS

QPS = Queries / Seconds

Queries 是系统状态值--总查询次数,可以通过 show status 查询得出

Seconds 是监控的时间区间,单位为秒

例如采样10秒内的查询次数,那么先查询一次Queries值(Q1),等待10秒,再查询一次Queries值(Q2)

QPS = (Q2 - Q1) / 10

02

TPS

mysql中没有直接的事务计数器,需要通过事务提交数事务回滚数来计算

TPS = (Com_commit + Com_rollback) / Seconds

Com_commit、Com_rollback 的值通过 show status 查询得出

计算思路与 QPS 相似

统计脚本

上面是QPS/TPS的统计思路,实际操作中如果用手动方式计算很不方便,最好用程序实现

mysqladmin 的 extended-status 指令和 show status 差不多,可以查看mysql的状态值,如

# mysqladmin -uroot -p‘密码‘ extended-status

其中含有我们需要的状态值,那么就可以分析extended-status的结果信息,然后计算,最后显示出来

统计目标

每隔一秒统计一次 QPS、TPS

mysql 还有两个信息比较重要:

Threads_connected 当前连接的线程的个数
Threads_running 运行状态的线程的个数

这两个值也在extended-status的结果中,所以可以一道显示出来

最后统计结果信息包括:

QPS、TPS、Threads_connected、Threads_running

先看下统计结果的展现形式

基本思路

每秒钟运行一次extended-status,使用awk分析结果值,从中筛选出我们需要的值:

Queries、Com_commit、Com_rollback、Threads_connected、Threads_running

QPS = Queries值 - 上一次的值

TPS = (Com_commit值 - 上一次的值) + (Com_rollback值 - 上一次的值)

因为是1秒钟统计一次,所以计算QPS/TPS时就不用除以秒数了

脚本代码

代码分析

awk是代码中的重点,mysqladmin 的执行结果通过管道传给 awk 进行分析

‘BEGIN{flag=0;
print "";
print "QPS   TPS    Threads_con Threads_run ";
print "------------------------------------- "}

这部分是初始设置,打印出表头

flag=0 是设置一个标识位,后面用到

$2 ~ /Queries$/  {q=$4-lq;lq=$4;}

其中 $2 $4 代表某列的内容

awk是按行分析并按空格分割的,例如行信息为:

| Queries | 213263713 |

按空格分割后得到5列:

‘|‘, ‘Queries‘, ‘|‘, ‘213263713‘, ‘|‘

$2 : Queries

$4 : 213263713

那么这句的意思就是:

当第2列的值匹配‘Queries’时,

变量q = 第4列的值 - 变量lq的值,

变量lq = 第4列的值

变量q 就是 QPS值,用这一次的 Queries值 减去 上一次的值

$2 ~ /Com_commit$/   {c=$4-lc;lc=$4;}
$2 ~ /Com_rollback$/   {r=$4-lr;lr=$4;}
$2 ~ /Threads_connected$/  {tc=$4;}
$2 ~ /Threads_running$/    {tr=$4;

这几句的意思与上一句类似

if(flag==0){
    flag=1;
}

这里用到了flag这个标识位,意思是对第一次的分析结果什么都不做,因为这句

{q=$4-lq;lq=$4;}

q=$4-lq; 中的 lq 在第一次分析中还没有值

else {
    printf "%-6d %-8d %-10d %d \n", q,c+r,tc,tr;
}

这部分就是打印统计结果信息

下面是脚本代码下载地址,有兴趣的话可以下来实验一下

http://devdd.oss-cn-beijing.aliyuncs.com/mysql_QPS_TPS.txt

#!/bin/bash
mysqladmin -uroot -p‘瀵嗙爜‘ extended-status -i1|awk ‘BEGIN{flag=0;
print "";
print "QPS   TPS    Threads_con Threads_run ";
print "------------------------------------- "}
$2 ~ /Queries$/            {q=$4-lq;lq=$4;}
$2 ~ /Com_commit$/         {c=$4-lc;lc=$4;}
$2 ~ /Com_rollback$/       {r=$4-lr;lr=$4;}
$2 ~ /Threads_connected$/  {tc=$4;}
$2 ~ /Threads_running$/    {tr=$4;

if(flag==0){
    flag=1; count=0
}else {
    printf "%-6d %-8d %-10d %d \n", q,c+r,tc,tr;
}

}‘
时间: 2024-11-07 15:22:43

Mysql 监控性能状态 QPS/TPS【转】的相关文章

MySQL监控性能的一些方法总结

---首先, Oracle中的逻辑读对应物理读的概念,是在利用数据缓存区的技术上,对数据访问次数的计数分类.---物理读,真正有IO:逻辑读,是从缓存区读到数据,可以考察缓存区的命中率,但只是某个具体对象在缓存区中的命中率.---所以,使用数据缓存区技术的,都可以有类似的方式.但是,这仅是从IO的角度去衡量数据库的性能的.即不完全可靠.---其次,MySQL提供了一些方式,用以考察IO的使用情况.---MySQL方式1:区分"索引读"还是"随机读".这种情况,不从缓

MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控

第 18 章 高可用设计之 MySQL 监控 前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一个系统,无论如何设计如何维护,都无法完全避免出现异常的可能,监控系统就是根据系统的各项状态的分析,让我们能够尽可能多的提前预知系统可能会出现的异常状况.即使没有及时发现将要发生的异常,也要在异常出现后的第一时间知道系统已经出现异常,否则之前的设计工作很可能就白费了. 18.1 监控系统设计 系统监控

mysql状态查看 QPS/TPS/缓存命中率查看

mysql状态查看 QPS/TPS/缓存命中率查看 运行中的mysql状态查看 对正在运行的mysql进行监控,其中一个方式就是查看mysql运行状态. (1)QPS(每秒Query量) QPS = Questions(or Queries) / seconds mysql > show  global  status like 'Question%'; (2)TPS(每秒事务量) TPS = (Com_commit + Com_rollback) / seconds mysql > show

zabbix监控redis、mysql性能、mysql状态、php-fpm性能状态

zabbix监控redis http://www.21yunwei.com/archives/4195 zabbix监控mysql性能 http://www.ttlsa.com/zabbix/zabbix-monitor-mysql/ zabbix监控mysql装态 http://www.linuxidc.com/Linux/2016-04/130436.htm zabbix监控php-fpm性能状态 http://www.ttlsa.com/zabbix/zabbix-monitor-php-

mysql主要性能监控指标

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'; 当前客户端已连接的数量.这个值

MySQL监控、性能分析——工具篇

MySQL越来越被更多企业接受,随着企业发展,MySQL存储数据日益膨胀,MySQL的性能分析.监控预警.容量扩展议题越来越多.“工欲善其 事,必先利其器”,那么我们如何在进行MySQL性能分析.监控预警.容量扩展问题上得到更好的解决方案,就要利用各种工具来对MySQL各种指标进行分 析.本文是读书笔记,下面提及的工具,读者可能都用过,或打算准备是使用.MySQL服务器的发布包没有包含那些能完成许多常见任务的工具,例如监控服务器的工具.比较服务器间数据的工具.我们把这些工具分成以下几类:界面.监

mysql监控、性能调优及三范式理解

原文:mysql监控.性能调优及三范式理解 1监控 工具:sp on mysql     sp系列可监控各种数据库 2调优 2.1 DB层操作与调优 2.1.1.开启慢查询 在My.cnf文件中添加如下内容(如果不知道my.cnf的路径可使用find / -name my.cnf进行查找): 在mysqld下添加 Log_slow_queries = ON  作用:开启慢查询服务 Log-slow-queries = /var/log/slowqueries.log 作用:慢查询日志存储路径.

性能测试之mysql监控、优化

我们在做性能测试的目的是什么,就是要测出一个系统的瓶颈在哪里,到底是哪里影响了我们系统的性能,找到问题,然后解决它.当然一个系统由很多东西一起组合到一起,应用程序.数据库.服务器.中中间件等等很多东西.那我们测试的时候上面这些东西里面任何一个环节都可能会出问题,都可能会影响我们系统的性能.这篇博客主要讲下mysql数据库咱们在做性能测试的时候应该监控什么东西,又有哪些需要优化的地方. 一.哪些东西会影响mysql的性能? 1.硬件 2.系统配置 3.数据库表结构 4.SQL以及索引 硬件 硬件就

zabbix-3.2.4监控mysql服务器性能

环境:centos7已安装 zabbix-agent-3.2.4-2.el7.x86_64 zabbix-server-mysql-3.2.4-2.el7.x86_64 zabbix-web-3.2.4-2.el7.noarch zabbix-web-mysql-3.2.4-2.el7.noarch zabbix-release-3.2-1.el7.noarch zabbix-get-3.2.4-2.el7.x86_64 查看zabbix_agentd.conf配置文件: PidFile=/va