/api/perf
报告如下所述的性能统计数据。
为了能够访问性能统计数据,必须启用性能监视器并且启动 REST 服务器。使用来启动 REST 服务器时,性能监视器会在配置文件中被明确启用。例如:
database_name : xsqldb,
database_size : 100m,
perfmon : {
database_size : 64m
},
rest : {
addr : 127.0.0.1,
port : 8083
}
请注意,对于 perf 资源,必须在 xSQL 配置文件中包含 perfmon 部分。(有关更多信息,请参阅 xSQL Web 服务 REST 参数页面)。 启用 perfmon 并以 8083 端口启动 REST 服务器后,以下 HTTP 请求将返回可用性能统计信息的列表:
http://localhost:8083/api/perf
性能统计数据分为两种类型:计数器和计时器。读数数组以以下格式显示每个计数器和计时器的名称、描述和索引编号 no:
{
"databases":
[
{
"name": "xsqldb",
"no": 0
}
],
"nodes":
[
],
"readings":
[
{
"name": "MCO_PERF_ERROR_COUNT",
"description": "Error count",
"type": "counter",
"no": 0
},
...
{
"name": "MCO_PERF_DB_CACHE_PAGES_WRITE_DELAYED",
"description": "",
"type": "counter",
"no": 24
},
...
{
"name": "MCO_PERF_DISK_READ_TIME",
"description": "Disk read time",
"type": "timing",
"no": 100
},
...
{
"name": "MCO_PERF_CLUSTER_NET_RECV_TIME",
"description": "",
"type": "timing",
"no": 107
}
]
}
可以通过指定所需计数器的索引来请求单个计数器的值。(有关更多详细信息,请参阅下面的“请求参数”部分。)
计数器
以下表格列出了可用的计数器:
序号 | 名称 | 描述 |
---|---|---|
0 | MCO_PERF_ERROR_COUNT | 错误计数 |
1 | MCO_PERF_CONNECTION_COUNT | 当前数据库连接数 |
2 | MCO_PERF_CONNECTS | 数据库连接请求数 |
3 | MCO_PERF_DISCONNECTS | 数据库断开连接请求数 |
4 | MCO_PERF_HOST_CPU_LOAD | 主机 CPU 负载 |
5 | MCO_PERF_HOST_MEMORY | 主机内存使用量 |
6 | MCO_PERF_OPEN_TRANS_COUNT | 已打开的事务数 |
7 | MCO_PERF_OPEN_CURSOR_COUNT | 游标数 |
8 | MCO_PERF_LAST_SNAPSHOT_SIZE | 最近保存的数据库快照大小 |
9 | MCO_PERF_MAX_CONNECTIONS | 数据库连接的最大数量 |
11 | MCO_PERF_DB_FREE_PAGES | 空闲页的数量 |
12 | MCO_PERF_DB_MEMORY | 已用页的数量 |
13 | MCO_PERF_DB_FILE_SIZE | 数据库文件的总大小 |
14 | MCO_PERF_DB_LOG_FILE_SIZE | 日志文件的大小 |
15 | MCO_PERF_DB_USED_FILE_SIZE | 已用数据库文件的大小 |
16 | MCO_PERF_DB_CACHE_HIT_COUNT | 磁盘缓存命中次数 |
17 | MCO_PERF_DB_CACHE_MISS_COUNT | 磁盘缓存未命中次数 |
18 | MCO_PERF_DB_CACHE_PAGES_ALLOCATED | 已分配缓存页的总数 |
19 | MCO_PERF_DB_CACHE_PAGES_USED | 已用缓存页的数量 |
21 | MCO_PERF_DB_CACHE_PAGES_MODIFIED | 活跃事务修改的缓存页数量 |
22 | MCO_PERF_DB_CACHE_PAGES_DIRTY | 脏缓存页数量 |
23 | MCO_PERF_DB_CACHE_PAGES_COPIED | 原始页的副本数量 |
24 | MCO_PERF_DB_CACHE_PAGES_WRITE_DELAYED | 写入延迟的缓存页数量 |
计时
以下表格列出了可用的时间安排:
序号 | 名称 | 描述 |
---|---|---|
100 | MCO_PERF_DISK_READ_TIME | 磁盘读取时间 |
101 | MCO_PERF_DISK_WRITE_TIME | 磁盘写入时间 |
102 | MCO_PERF_LOG_WRITE_TIME | 日志写入时间 |
103 | MCO_PERF_COMMIT_TIME | 提交时间 |
104 | MCO_PERF_ROLLBACK_TIME_AVG | 回滚时间 |
105 | MCO_PERF_SNAPSHOT_DURATION | 快照持续时间 |
106 | MCO_PERF_CLUSTER_NET_SEND_TIME | 集群网络数据写入时间 |
107 | MCO_PERF_CLUSTER_NET_RECV_TIME | 集群网络数据读取时间 |
请求参数
/api/perf/counters 和 /api/perf/timings 请求显示性能计数器和时间读数。这些资源支持以下查询参数:
- db:数据库编号。
- count:返回的最大读取数。
- counter:从数组中获取读取值的索引;若未设置,则返回所有读取值。
- node:节点编号。
- period:返回读取值的时间段,单位为毫秒。
- since:用于检索读取值的起始时间戳。
period 和 since 参数互斥,不能同时使用。若未指定 count、since 或 period 参数,则仅返回最新的读取值。
counter 参数对应于上述读取描述中的 no 键。db 参数对应于上述数据库描述中的 no 键。
以下代码片段是针对请求 http://localhost:8083/api/perf/counters?db=0 的计数器读数示例:
{
"now": 1514548579967,
"counters":
[
{
"stamp": 1514548579792,
"db": 0,
"node": 0,
"values":
[
0, 7, 0, 0, 0, 23, 0, 0, 0, 100, 406786, 406735, 3, 122880, 73940
]
}
]
}
以下代码片段是针对请求 http://localhost:8083/api/perf/timings?db=0 的一次计时读取示例。
{
"now": 1514548622065,
"timings":
[
{
"stamp": 1514548621908,
"db": 0,
"node": 0,
"values":
{
"current":
[
0, 0, 0, 0, 0, 0, 0, 0
],
"min":
[
0, 0, 0, 0, 0, 0, 0, 0
],
"max":
[
0, 0, 0, 0, 0, 0, 0, 0
],
"avg":
[
0, 0, 0, 0, 0, 0, 0, 0
],
"total":
[
0, 0, 0, 0, 0, 0, 0, 0
],
"count":
[
0, 0, 0, 0, 0, 0, 0, 0
]
}
}
]
}