工具

本文档主要介绍 STP 相关工具的参数说明及使用方法。

stp

stp 是 STP 提供逻辑时间的可执行程序。

参数说明

参数名缩写类型说明
—help-h返回 stp 的用法和帮助
—version返回 stp 的版本信息
—port-pint321. STP 监听端口
2. 默认值为 9622
3.开启 TCP 和 UDP 协议的监听
—serverliststring1. STP 配置 server 列表,配置后将向指定的 server 进行时间同步
2. server 的格式为”hostname:port”,多个 server 之间通过 “,” 分隔
3. 默认:空,表示以本节点作为 server
—rolestring1. STP 节点的角色
2. 可选值为”client” 和 “server”
3. 默认:”server”
—syncintervalint321. STP 节点进行时间同步的间隔,单位为秒
2. 默认值为 60
—maxtimeerrorint321. STP 节点可以容忍的最大时间误差,单位为微秒
2. 默认值为 50000
3. 最小值为 1000,最大值为 10000000
—diaglevelint321. STP 节点打印诊断日志的级别
2. STP 诊断日志从 0~5 分别代表:SEVERE、ERROR、EVENT、WARNING、INFO 和 DEBUG
3. 默认值为 3,表示 WARNING
—daemon使用后台模式运行 STP 节点
—confpath-cstring指定 STP 的配置目录

Note:

  • STP 的 “server” 角色:server 节点可以用于同步时间的节点,server 之间选举产生主 server 节点,生成全局逻辑时间。STP 最多可以配置 7 个 “server” 角色的节点,因此 serverlist 最多可以配置 7 个节点。
  • STP 的 “client” 角色:client 节点只能向 server 节点进行同步。
  • maxtimeerror 所指定的可以容忍的最大时间误差,是指当前 STP 节点与 server 主节点之间的时间误差,详细信息可参考逻辑时间

配置参数

stp 的参数可以通过在安装目录 /conf/stp/stp.conf 中进行配置。

参数名类型说明
portint321. STP 监听端口
2. 默认值为 9622
3. 开启 TCP 和 UDP 协议的监听
serverliststring1. STP 配置 server 列表,配置后将向指定的 server 进行时间同步
2. server 的格式为”hostname:port”,多个 server 之间通过 “,” 分隔
3. 默认:空,表示以本节点作为 server
rolestring1. STP 节点的角色
2. 可选值为”client”和”server”
3. 默认:”server”
syncintervalint321. STP 节点进行时间同步的间隔,单位为秒
2. 默认值为 60
maxtimeerrorint321. STP 节点可以容忍的最大时间误差,单位为微秒
2. 默认值为 50000
3. 最小值为 1000,最大值为 10000000
diaglevelint321. STP 节点打印诊断日志的级别
2. STP 诊断日志从 0~5 分别代表:SEVERE、ERROR、EVENT、WARNING、INFO 和 DEBUG
3. 默认值为 3,表示 WARNING

后台模式

通过 daemon,用户可以使用后台模式运行 STP 节点,其功能与 stpstart 相同。

  1. bin/stp --daemon

配置示例

STP 的配置可以分为多 server 模式和单 server 模式。

  • 多个 server 的配置可以提高 server 的可用性
  • 单个 server 的配置用于1~3个节点较小的集群

多 server 模式

选择三个 server 节点:server-1:9622server-2:9622server-3:9622,其余节点作为 client 节点。

  • server 节点的配置如下:

    1. serverlist=server-1:9622,server-2:9622,server-3:9622
    2. role=server
  • client 节点的配置如下:

    1. serverlist=server-1:9622,server-2:9622,server-3:9622
    2. role=client

单 server 模式

选择一个 server 节点:server-1:9622,其余节点作为 client 节点。

  • server 节点的配置如下:

    1. serverlist=server-1:9622
    2. role=server
  • client 节点的配置如下:

    1. serverlist=server-1:9622
    2. role=client

stpq

stpq 是用于查询 STP 的时间、状态、配置等信息的工具。

Note:

stpq 默认查询本地的 STP 节点,用户也可以通过指定 hostname 参数查询其他机器上的 STP 节点。

权限需求

连接需求

stpq 工具需要连接到 STP 节点。

选项

参数缩写描述
—help-h返回 stpq 的用法和帮助
—version返回 stpq 的版本信息
—hostname-s指定需要连接的 STP 节点所在机器的主机名,默认值为”localhost”
—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逻辑时间的时间容错误差部分,单位为纳秒

    示例

    1. $ bin/stpq --time
    2. Time:
    3. TimeStamp : ( 1590384470 second, 302563244 nanosec )
    4. TimeError : 1000000
  • 查询时间(微秒)

    --timeus 查询 STP 节点当前的逻辑时间,单位为微秒。

    结果字段

    字段描述
    TimeStamp逻辑时间的时间部分,单位为微秒
    TimeError逻辑时间的时间容错误差部分,单位为纳秒

    示例

    1. $ bin/stpq --timeus
    2. TimeUS:
    3. TimeStamp : 1590384549092550 microsec
    4. TimeError : 1000000
  • 查询配置

    --conf 查询 STP 节点的配置。

    结果字段

    字段描述
    portSTP 监听端口
    serverlistSTP 配置 server 列表
    roleSTP 节点的角色
    syncintervalSTP 节点进行时间同步的间隔,单位为秒
    maxtimeerrorSTP 节点可以容忍的最大时间误差,单位为微秒
    diaglevelSTP 节点打印诊断日志的级别

    示例

    1. $ bin/stpq --conf
    2. Config:
    3. port : 9622
    4. serverlist : server-1:9622
    5. role : server
    6. syncinterval : 60
    7. maxtimeerror : 50000
    8. diaglevel : 3
  • 查询元数据

    --meta 查询 STP 节点的元数据信息。

    结果字段

    字段描述
    MetaSHMKeySTP 节点共享内存的键值
    VersionSTP 节点元数据的版本号
    SyncIntervalSTP 节点配置的同步间隔(通过 —syncinterval 配置)
    SyncHWTimeSTP 节点上次同步时的系统硬件时间,其中包含 second (秒)部分和 nanosec (纳秒)部分
    BaseHWTimeSTP 节点启动时的系统硬件时间,其中包含 second (秒)部分和 nanosec (纳秒)部分
    BaseRealTimeSTP 节点启动时的系统真实时间,其中包含 second (秒)部分和 nanosec (纳秒)部分
    OffsetSTP 节点用于计算相对于 STP server 同步节点的时间偏移,单位为纳秒
    SlewRateSTP 节点用于计算相对于 STP server 同步节点的 CPU tick 的比率,单位为 1/10000
    TimeErrorSTP 节点当前的时间容错误差,单位为纳秒
    MetaLSNSTP 节点用于同步元数据的 LSN,其中包含 offset (偏移)和 version (版本号)信息

    示例

    1. $ bin/stpq --meta
    2. Meta:
    3. MetaSHMKey : 9622
    4. Version : 1
    5. SyncInterval : 60
    6. SyncHWTime : ( 1801227 second, 379397078 nanosec )
    7. BaseHWTime : ( 1800687 second, 344618629 nanosec )
    8. BaseRealTime : ( 1590384465 second, 718350000 nanosec )
    9. Offset : 0
    10. SlewRate : 10000
    11. TimeError : 1000000
    12. MetaLSN : ( offset 1590385005753126, version 3 )
  • 查询 server 信息

    --servers 查询 STP 节点进行同步的 server 组的信息。

    结果字段

    字段描述
    VersionSTP server 组的版本号
    ServerSTP server 组的信息,一般格式为: “hostname:port”
    PrimarySTP server 组的主节点

    示例

    1. $ bin/stpq --servers
    2. Servers:
    3. Version : 1
    4. Server : u16-t02:9622
    5. Server : u16-t03:9622
    6. Server : u16-t04:9622
    7. Primary : u16-t04:9622
  • 查询同步客户端信息

    --syncclients 查询 STP 节点所在 STP 集群的时间同步信息。

    Note:

    可以连接任意 STP 节点进行查询,命令将自动转发至 STP server 主节点上执行。

    结果字段:

    字段描述
    SourceSTP 同步源的信息,即 STP server 主节点,一般格式为: “hostname:port”
    ClientSTP 同步节点的信息,一般格式为:”hostname:port”
    RoleSTP 同步节点的角色:”server” 或者 “client”
    PortSTP 同步节点使用 STP server 主节点的端口
    StatusSTP 同步节点的状态
    CountSTP 同步节点向 STP server 主节点同步次数
    IntervalSTP 同步节点的同步间隔,单位为秒
    TimeErrorSTP 同步节点的时间容错误差,单位为微秒,格式为:<当前时间容错误差>/<最大时间容错误差>
    PassedSTP 同步节点上次同步后经过的时间,单位为微秒

    Note:

    • STP server 备节点也需要向 STP server 主节点进行时间同步。
    • STP 的同步状态包括:
      • CheckOffset:快速检查时间偏移
      • CheckSlewRate:检查节点间 CPU 的频率比例
      • RecheckOffset:再次快速检查时间偏移
      • IntervalCheck:周期性检查同步
      • CheckError:(可能由于网络拥堵引起的)同步出错
      • NoSource:没有找到同步源
    • STP 同步节点的最大时间容错误差通过 STP 节点的 maxtimeerror 进行配置。

    示例

    1. $ bin/stpq --syncclients
    2. Synchronize Source: server-3:9622
    3. Synchronize Clients:
    4. Client Role Port Status Count Interval TimeError Passed
    5. server-1:9622 server 9622 IntervalCheck 36 60 1000/50000 45920000
    6. server-2:9622 server 9622 IntervalCheck 36 60 1000/50000 47100000
    7. Total: 2
  • 查询同步信息

    --syncstatus 查询 STP 节点和当前同步源的同步信息。

    结果字段

    字段描述
    RoleSTP 节点的角色:”server” 或者 “client”
    PrimarySTP 节点是否 server 主节点
    StatusSTP 节点的同步状态
    SourceSTP 节点的同步源,一般为 STP server 主节点,格式为: “hostname:port”
    CountSTP 节点与同步源的同步次数,格式为:<有效次数>/<总次数>
    DelaySTP 节点与同步源的延迟,单位为微秒,格式为: <最小延迟>/<最大延迟>/<上次延迟>
    OffsetSTP 节点与同步源的时间偏移,单位为微秒,格式为: [<最小负偏移>,<最大负偏移>]/[<最小正偏移>,<最大正偏移>]/<上次偏移>
    PassedSTP 节点与同步源上次同同步后经过的时间,单位为微秒
  • 同步请求历史信息

    字段描述
    RequestIDSTP 节点同步请求消息 ID
    ValidSTP 节点同步请求是否有效(在有效的时间容错误差范围内)
    StatusSTP 节点发送同步请求时的同步状态
    DelaySTP 节点同步请求的延迟,单位为微秒
    OffsetSTP 节点同步请求得到的时间偏移,单位为微秒
    PassedSTP 节点同步请求后经过的时间,单位为微秒

    示例

    1. $ bin/stpq --syncstatus
    2. Synchronize Status:
    3. Role Primary Status Source Count Delay Offset Passed
    4. server FALSE IntervalCheck server-1:9622 32/32 144/685/196 [-1,-208]/[2,219]/59 25390000
    5. Synchronize history:
    6. RequestID Valid Status Delay Offset Passed
    7. 27 TRUE CheckSlewRate 685 -208 223930000
    8. 29 TRUE CheckSlewRate 188 219 214000000
    9. 30 TRUE CheckSlewRate 317 -31 204080000
    10. 31 TRUE CheckSlewRate 347 67 194150000
    11. 32 TRUE CheckSlewRate 246 -20 184220000
    12. 33 TRUE CheckSlewRate 195 -6 174290000
    13. 34 TRUE CheckSlewRate 173 -13 164370000
    14. 36 TRUE CheckSlewRate 221 4 154440000
    15. 37 TRUE RecheckOffset 168 -5 153450000
    16. 38 TRUE RecheckOffset 262 6 152450000
    17. 39 TRUE RecheckOffset 194 9 151460000
    18. 40 TRUE RecheckOffset 327 -45 150470000
    19. 41 TRUE RecheckOffset 408 -86 149480000
    20. ...
  • 查询同步历史

    --synchistory 查询 STP 节点和各个同步源的历史时间同步信息。

    Note:

    同步历史会被保留两小时,之后会被过期清理。

    结果字段

    字段描述
    SourceSTP 节点的同步源,一般为 STP server 主节点,格式为: “hostname:port”
    CountSTP 节点与同步源的同步次数,格式为: <有效次数>/<总次数>
    DelaySTP 节点与同步源的延迟,单位为微秒,格式为:<最小延迟>/<最大延迟>/<上次延迟>
    OffsetSTP 节点与同步源的时间偏移,单位为微秒,格式为: [<最小负偏移>,<最大负偏移>]/[<最小正偏移>,<最大正偏移>]/<上次偏移>
    PassedSTP 节点与同步源上次同同步后经过的时间,单位为微秒

    示例

    1. $ bin/stpq --synchistory
    2. Synchronize History:
    3. Source Count Delay Offset Passed
    4. server-1:9622 50/50 193/331/241 [0,-68]/[0,48]/-11 23450000
    5. server-2:9622 37/38 212/471/247 [0,-112]/[0,137]/10 144480000
    6. Total: 2

stpstart

stpstart 是用于启动 STP 节点的工具。

Note:

用户可以通过 stp --daemon 来启动 STP 节点,具体可参考上文中的后台模式。

权限需求

连接需求

选项

参数缩写描述
—help-h返回 stpstart 的用法和帮助
—version返回 stpstart 的版本信息
—confpath-c指定 STP 的配置目录
—options指定启动 STP 时额外的配置项

示例

  • 通过 stpstart 启动 STP 节点

    1. bin/stpstart
  • 通过 stpstart,使用 conf/stp 下的配置启动 STP 节点

    1. bin/stpstart --confpath conf/stp
  • 通过 stpstart 启动 STP 节点,并且额外配置 diaglevel 为 5 (DEBUG 级别)

    1. bin/stpstart --options "--diaglevel=5"

stpstop

stpstop 是用于停止 STP 节点的工具。

权限需求

连接需求

选项

参数缩写描述
—help-h返回 stpstop 的用法和帮助
—version返回 stpstop 的版本信息
—force强制停止 STP 节点

示例

通过 stpstop 停止 STP 节点

  1. bin/stpstop