性能监视器
开发人员可以更改实时事务的截止时间设置以优化性能。 SmartEDB RT 的性能监视器通过收集以下连接和事务统计信息,为观察此选择对运行中的实时系统产生的实际影响提供了手段。
统计信息
常量 | 说明 |
---|---|
MCO_STATRT_OPEN_TRANS_COUNT | 开启的事务数量 |
MCO_STATRT_INTERRUPTED_TRANS_COUNT | 中断的事务数量,即未能在截止期限内完成的事务数量 |
MCO_STATRT_COMMIT_COUNT | 成功提交的事务数量 |
MCO_STATRT_ROLLBACK_COUNT | 回滚的事务数量 |
MCO_STATRT_ERROR_TRANS_COUNT | 结束时出现错误的事务数量(不包括错过截止期限的情况) |
MCO_STATRT_MAX_TRANS_TIME | 成功提交事务的最长执行时间 |
MCO_STATRT_TOTAL_TRANS_TIME | 成功提交事务的总时间 |
统计数据是按连接收集的。该机制无锁,不会对事务造成性能影响。不过,作为副作用,在某些时刻可能会不够精确。
直方图
性能监视器根据收集到的统计数据构建一个直方图,显示值在各个范围内的分布情况。该直方图由范围和条形图组成。范围是时间间隔(以 SmartEDB RT 定时器单位 - 系统相关的时间单位来衡量)。条形图显示在相应时间范围内提交的事务数量。范围是根据每个单独连接的事务时间自动计算得出的。条形图的数量由文件 mcostatrt.h 中的常量 MCO_STAT_HISTOGRAM_NELEMENT 定义。其默认值为 10。
快速入门(适用于 Linux)
构建并启动示例 26-realtime/rest
从示例的输出中复制/粘贴 REST URL(默认值为 http://0.0.0.0:8083)。通过以下方式设置:
#define INTERFACE "0.0.0.0" #define PORT 8083
启动 xPanel 并使用上述 URL 设置一个连接器(按照 xPanel 内部的帮助指南,点击问号图标可访问)。
HTTP REST API resources
HTTP REST API 资源
/api
根资源 API 提供有关 SmartEDB RT 版本的信息。
例如,在启动 REST 服务器(监听 8083 端口)的情况下,以下 HTTP 请求将返回包含版本、修订号和构建号的列表:
{
"v": "1.2",
"rev":"",
"type": "rt"
}
/api/stats
/api/stats 资源提供了连接统计信息的访问。它有一个参数:agg。 /api/stats?agg=0:不执行聚合,返回每个连接的统计信息。
{
"now":1673337297594,
"stats":[
{
"db":0,
"con":[
{
"id":0,
"counters":[80429482,0,80429481,0,0,820,72920655],
"hist":{
"r":1600,
"v":[80429459,13,5,2,1,1,0,0,0,0]
}
}
]
}
]
}
/api/stats?agg=1(默认值):执行聚合操作,返回聚合后的统计信息:
{
"now":1673337518962,
"counters":[
{
"db":0,
"values":[304731693,0,304731692,0,0,827,275837196]
}
],
"hist":{
"r":1600,
"v":[304731623,50,12,4,2,2,0,0,0,0]
}
}
rst
重置目标端的统计信息。 当指定 rst=1 时,计数器的值将被重置。默认值为 0(不重置)。此参数可选地与参数 agg 结合使用:
/api/stats?rst=1
C API
虽然 REST API 是访问性能监视器统计信息的主要方法,但也可以通过 C API 直接访问。
#include <include/mcostatrt.h>
/**
* @brief Get all counters as array and reset values
*
* @param vals Pointer to array to store all counter
* reset Flag if reset statistics
* @return MCO_S_OK - no errors
*/
MCOSTATRT_API MCO_RET mco_stat_get_all(mco_conn_statistics, int reset);
/*
* @brief Get connection's statistics
*
* @param db_name database name to get statistics and histogram
* conn_no connection identifier to get values. Value -1 means get aggregated values for all connections
* out_stats Pointer to array to store statistic counters
* hist Pointer to array to store histogram
* reset Flag to reset histogram
* @return MCO_S_OK - no errors
* @return MCO_S_NOTFOUND - connection with conn_no was not
*/
MCOSTATRT_API MCO_RET mco_stat_get_conn_stats(const char *db_name, int conn_no,
mco_conn_statistics out_stats, mco_stat_histogram_t *hist, int reset);