sptq 是一个用于查询 STP 的时间,状态,配置等信息的工具。
Note:
stpq 默认查询本地的 STP 节点,用户也可以通过指定 hostname 参数查询其他机器上的 STP 节点。
无
需要连接到 STP 节点
参数名 | 缩写 | 描述 |
---|---|---|
--help | -h | 返回 stpq 的用法和帮助 |
--version | 返回 stpq 的版本信息 | |
--hostname | -s | 指定需要连接的 STP 节点所在机器的主机名,默认值为"localhost" |
--port | -p | 指定需要连接的 STP 节点的端口,默认值为 9622 |
--time | 查询 STP 节点当前的逻辑时间,单位为纳秒 | |
--timeus | 查询 STP 节点当前的逻辑时间,单位为微秒 | |
--conf | 查询 STP 节点的配置 | |
--meta | 查询 STP 节点的元数据信息 | |
--servers | 查询 STP 节点进行同步的 server 组的信息 | |
--syncclients | 查询 STP 节点所在 STP 集群的时间同步信息 | |
--syncstatus | 查询 STP 节点和当前同步源的同步信息 | |
--synchistory | 查询 STP 节点和各个同步源的历史时间同步信息 | |
--count | -n | 指定连续打印的次数,默认值为 1 |
--delay | -d | 指定连续打印时的间隔时间,单位为秒,默认值为 10 |
Note:
- 如果没有指定查询选项,将默认使用 --time 查询 STP 节点当前的逻辑时间
- 如果指定了 --delay 但没有指定 --count,将不停地每隔一段指定的时间打印查询结果
--time 查询 STP 节点当前的逻辑时间,单位为纳秒
结果字段
字段名 | 描述 |
---|---|
TimeStamp | 逻辑时间的时间部分,其中包含 second (秒)部分和 nanosec (纳秒)部分 |
TimeError | 逻辑时间的时间容错误差部分,单位为纳秒 |
示例
$ bin/stpq --time Time: TimeStamp : ( 1590384470 second, 302563244 nanosec ) TimeError : 1000000
--timeus 查询 STP 节点当前的逻辑时间,单位为微秒
结果字段
字段名 | 描述 |
---|---|
TimeStamp | 逻辑时间的时间部分,单位为微秒 |
TimeError | 逻辑时间的时间容错误差部分,单位为纳秒 |
示例
$ bin/stpq --timeus TimeUS: TimeStamp : 1590384549092550 microsec TimeError : 1000000
--conf 查询 STP 节点的配置
结果字段
字段名 | 描述 |
---|---|
port | STP 监听端口 |
serverlist | STP 配置 server 列表 |
role | STP 节点的角色 |
syncinterval | STP 节点进行时间同步的间隔,单位为秒 |
maxtimeerror | STP 节点可以容忍的最大时间误差,单位为微秒 |
diaglevel | STP 节点打印诊断日志的级别 |
示例
$ bin/stpq --conf Config: port : 9622 serverlist : sdbserver1:9622 role : server syncinterval : 60 maxtimeerror : 50000 diaglevel : 3
--meta 查询 STP 节点的元数据信息
结果字段
字段名 | 描述 |
---|---|
MetaSHMKey | STP 节点共享内存的键值 |
Version | STP 节点元数据的版本号 |
SyncInterval | STP 节点配置的同步间隔(通过 --syncinterval 配置) |
SyncHWTime | STP 节点上次同步时的系统硬件时间,其中包含 second (秒)部分和 nanosec (纳秒)部分 |
BaseHWTime | STP 节点启动时的系统硬件时间,其中包含 second (秒)部分和 nanosec (纳秒)部分 |
BaseRealTime | STP 节点启动时的系统真实时间,其中包含 second (秒)部分和 nanosec (纳秒)部分 |
Offset | STP 节点用于计算相对于 STP server 同步节点的时间偏移,单位为纳秒 |
SlewRate | STP 节点用于计算相对于 STP server 同步节点的 CPU tick 的比率,单位为 1/10000 |
TimeError | STP 节点当前的时间容错误差,单位为纳秒 |
MetaLSN | STP 节点已完成同步的元数据 LSN,其中包含 offset(LSN 的偏移)和 version(当前 LSN 的版本号)信息 |
Note:
- SyncHWTime 和 BaseHWTime 是基于系统的运行时间计算的,与逻辑时间和系统时间无关
示例
$ bin/stpq --meta Meta: MetaSHMKey : 9622 Version : 1 SyncInterval : 60 SyncHWTime : ( 1801227 second, 379397078 nanosec ) BaseHWTime : ( 1800687 second, 344618629 nanosec ) BaseRealTime : ( 1590384465 second, 718350000 nanosec ) Offset : 0 SlewRate : 10000 TimeError : 1000000 MetaLSN : ( offset 1590385005753126, version 3 )
--servers 查询 STP 节点进行同步的 server 组的信息
结果字段
字段名 | 描述 |
---|---|
Version | STP server 组的版本号 |
Server | STP server 组的信息,一般格式是 "hostname:port" 当 STP server 组有多个 server 时,将显示多行 |
Primary | STP server 组的主节点 |
示例
$ bin/stpq --servers Servers: Version : 1 Server : sdbserver1:9622 Server : sdbserver2:9622 Server : sdbserver3:9622 Primary : sdbserver4:9622
--syncclients 查询 STP 节点所在 STP 集群的时间同步信息
Note:
用户通过任意 STP 节点执行的命令,都将会自动转发至 STP server 主节点上执行。
结果字段
字段名 | 描述 |
---|---|
Source | STP 同步源的信息,即 STP server 主节点,一般格式是 "hostname:port" |
Client | STP 同步节点的信息,一般格式是"hostname:port" |
Role | STP 同步节点的角色,"server" 或者"client" |
Port | STP 同步节点使用 STP server 主节点的端口 |
Status | STP 同步节点的状态 |
Count | STP 同步节点向 STP server 主节点同步次数 |
Interval | STP 同步节点的同步间隔,单位为秒 |
TimeError | STP 同步节点的时间容错误差,单位为微秒,格式为 <当前时间容错误差>/<最大时间容错误差> |
Passed | STP 同步节点上次同步后经过的时间,单位为微秒 |
Note:
- STP server 备节点也需要向 STP server 主节点进行时间同步
- STP 的同步状态包括
- CheckOffset:快速检查时间偏移
- CheckSlewRate:检查节点间 CPU 的频率比例
- RecheckOffset:再次快速检查时间偏移
- IntervalCheck:周期性检查同步
- CheckError:(可能由于网络拥堵引起的)同步出错
- NoSource:没有找到同步源
- STP 同步节点的最大时间容错误差是通过 STP 节点的 maxtimeerror 配置的
示例
$ bin/stpq --syncclients Synchronize Source: server-3:9622 Synchronize Clients: Client Role Port Status Count Interval TimeError Passed sdbserver1:9622 server 9622 IntervalCheck 36 60 1000/50000 45920000 sdbserver2:9622 server 9622 IntervalCheck 36 60 1000/50000 47100000 Total: 2
--syncstatus 查询 STP 节点和当前同步源的同步信息
Note:
STP server 主节点作为同步源,不需要与任何节点进行同步,所以没有同步状态信息。
结果字段
字段名 | 描述 |
---|---|
Role | STP 节点的角色,"server" 或者 "client" |
Primary | STP 节点是否为 server 主节点 |
Status | STP 节点的同步状态 |
Source | STP 节点的同步源,一般为 STP server 主节点,格式为 "hostname:port" |
Count | STP 节点与同步源的同步次数,格式为 <有效次数>/<总次数> |
Delay | STP 节点与同步源的延迟,单位为微秒,格式为 <最小延迟>/<最大延迟>/<上次延迟> |
Offset | STP 节点与同步源的时间偏移,单位为微秒,格式为 [<最小负偏移>,<最大负偏移>]/[<最小正偏移>,<最大正偏移>]/<上次偏移> |
Passed | STP 节点与同步源上次同同步后经过的时间,单位为微秒 |
同步请求历史信息
字段名 | 描述 |
---|---|
RequestID | STP 节点同步请求消息 ID |
Valid | STP 节点同步请求是否有效(在有效的时间容错误差范围内) |
Status | STP 节点发送同步请求时的同步状态 |
Delay | STP 节点同步请求的延迟,单位为微秒 |
Offset | STP 节点同步请求得到的时间偏移,单位为微秒 |
Passed | STP 节点同步请求后经过的时间,单位为微秒 |
示例
$ bin/stpq --syncstatus Synchronize Status: Role Primary Status Source Count Delay Offset Passed server FALSE IntervalCheck sdbserver1:9622 32/32 144/685/196 [-1,-208]/[2,219]/59 25390000 Synchronize history: RequestID Valid Status Delay Offset Passed 27 TRUE CheckSlewRate 685 -208 223930000 29 TRUE CheckSlewRate 188 219 214000000 30 TRUE CheckSlewRate 317 -31 204080000 31 TRUE CheckSlewRate 347 67 194150000 32 TRUE CheckSlewRate 246 -20 184220000 33 TRUE CheckSlewRate 195 -6 174290000 34 TRUE CheckSlewRate 173 -13 164370000 36 TRUE CheckSlewRate 221 4 154440000 37 TRUE RecheckOffset 168 -5 153450000 38 TRUE RecheckOffset 262 6 152450000 39 TRUE RecheckOffset 194 9 151460000 40 TRUE RecheckOffset 327 -45 150470000 41 TRUE RecheckOffset 408 -86 149480000 ...
--synchistory 查询 STP 节点和各个同步源的历史时间同步信息
Note:
同步历史信息每隔两小时会清理一次,用户应根据需要保留必要的信息。
结果字段
字段名 | 描述 |
---|---|
Source | STP 节点的同步源,一般为 STP server 主节点,格式为 "hostname:port" |
Count | STP 节点与同步源的同步次数,格式为 <有效次数>/<总次数> |
Delay | STP 节点与同步源的延迟,单位为微秒,格式为 <最小延迟>/<最大延迟>/<上次延迟> |
Offset | STP 节点与同步源的时间偏移,单位为微秒,格式为 [<最小负偏移>,<最大负偏移>]/[<最小正偏移>,<最大正偏移>]/<上次偏移> |
Passed | STP 节点与同步源上次同同步后经过的时间,单位为微秒 |
示例
$ bin/stpq --synchistory Synchronize History: Source Count Delay Offset Passed sdbserver1:9622 50/50 193/331/241 [0,-68]/[0,48]/-11 23450000 sdbserver2:9622 37/38 212/471/247 [0,-112]/[0,137]/10 144480000 Total: 2