关于fpmmm与pmm的监控数据不一致的问题

如题~时间点均为上午8:57左右~
fpmmm_innodb_transaction.png pmm_innodb_transaction.png
已邀请:

wubx - 专注MySQL及架构设计

赞同来自:

可以看一下这个图形取的KEY及最终对应的MySQL里的变量是不是一直的。估计这里面这两个值取的不一样,但名字起的一样了。

arron

赞同来自:

fpmmm的取值:
来源于指标:Innodb_trx_running, 该指标值的算法通过阅读源码,节选如下:
 
fpmmm-1.0.1/lib/InnoDbStatus.inc, 第621行:
    // Get InnoDB Transaction states
    $sql = 'SELECT LOWER(REPLACE(trx_state, " ", "_")) AS state, count(*) AS cnt from information_schema.INNODB_TRX GROUP BY state ORDER BY state';

    if ( $result = $dbh->query($sql) ) {
        if ( $row = $result->fetch_assoc() ) {
                $aEngineInnodbStatus['Innodb_trx_' . $row['state']] = $row['cnt'];
        }
    }
    else {
        $rc = 1665;
        $msg = "Invalid query: $sql, Errno: " . $dbh->errno . ': ' .  $dbh->error;
        mylog($pParameter['LogFile'], ERR, '    ' . $msg . " (rc=$rc).");
    }
 
从上面的代码可以看出,其值是通过其下的SQL汇总统计:
SELECT LOWER(REPLACE(trx_state, " ", "_")) AS state, count(*) AS cnt from information_schema.INNODB_TRX GROUP BY state ORDER BY state
其中trx_state的取值包括:RUNNING, LOCK WAIT, ROLLING BACK, and COMMITTING.
各分组统计列通过拼接转换成下面几个Key值:
'Innodb_trx_committing'
'Innodb_trx_lock_memory'
'Innodb_trx_lock_wait'
'Innodb_trx_rolling_back'
'Innodb_trx_running'
 
 
pmm的没有环境,暂时不知道这部分的算法

要回复问题请先登录注册