如何解释“chronyc 来源”报告中的小型民意调查、大型 lastRx 和最大覆盖率值?

如何解释“chronyc 来源”报告中的小型民意调查、大型 lastRx 和最大覆盖率值?

我正在chronyc sources每秒调用一次来监控 chrony 客户端。

此命令报告几个值,包括

轮询 - 显示轮询源的速率,以秒为单位的间隔的以 2 为底的对数。因此,值 6 表示每 64 秒进行一次测量。chronyd 会根据当前情况自动改变轮询速率。

可达性 - 以八进制数形式显示源可达性寄存器。该寄存器有 8 位,每次从源接收或丢失数据包时都会更新。值为 377 表示最近八次传输均收到了有效回复。

LastRx - 此列显示上次从源接收到样本的时间。通常以秒为单位。字母 m、h、d 或 y 表示分钟、小时、天或年。

来自 chronyc 文档

我使用 chrony 配置将轮询率设置为 4 秒。大多数时候,我观察到 lastRx 列(上次从源接收到样本的时间)从 0 上升到 3,然后随着下一个样本按预期收到而再次下降到 0。例如,这是我根据输出构建的表格的一部分

Timestamp                IP address    Poll Reach LastRx
==========================================================================
'2023-02-02 10:02:58'   '10.0.0.102'    2   377   0
'2023-02-02 10:02:59'   '10.0.0.102'    2   377   1
'2023-02-02 10:03:00'   '10.0.0.102'    2   377   2
'2023-02-02 10:03:02'   '10.0.0.102'    2   377   4
'2023-02-02 10:03:03'   '10.0.0.102'    2   377   0
'2023-02-02 10:03:04'   '10.0.0.102'    2   377   1
...

但是,有时 LastRx 会开始攀升,并远远超过 4。如果与时间服务器的连接丢失,我预计会发生这种情况。令我困惑的是,在这些期间,到达率值仍然是 377,表明所有数据包都已接收,并且轮询速率仍报告为 4 秒(2^2)。

Timestamp                IP address    Poll Reach LastRx
==========================================================================
'2023-02-02 09:59:17'   '10.0.0.102'    2   377   109
'2023-02-02 09:59:18'   '10.0.0.102'    2   377   110
'2023-02-02 09:59:19'   '10.0.0.102'    2   377   111
'2023-02-02 09:59:21'   '10.0.0.102'    2   377   112
'2023-02-02 09:59:22'   '10.0.0.102'    2   377   113
'2023-02-02 09:59:23'   '10.0.0.102'    2   377   114 

自从 chrony 上次收到数据包以来已经过去了 114 秒,为什么每 4 秒轮询一次新数据包,并且仍然报告已收到每个数据包?发生了什么?

编辑:

以下是我正在使用的配置。

#服务器 10.0.0.102

makestep 1.0 3                                                               
driftfile /var/lib/chrony/drift                                              
rtcsync                                                                      
allow 10.0.0                                                                 
local stratum 8                                                              
manual                                                                       
logdir /var/log/chrony  

#客户端 10.0.0.101

server 10.0.0.102 iburst maxpoll 2 minpoll 1 prefer
maxdistance 1000000000
makestep 1.0 3
driftfile /var/lib/chrony/drift
logdir /var/log/chrony

答案1

对于基本的 Chrony 设置来说,这些配置似乎合理。但是,值得注意的是,您使用的特定值最大轮询民意调查, 和最大距离设置会影响时间同步的准确性和稳定性,因此您可能需要根据具体要求和网络条件调整这些值。

在您描述的情况下,服务器可能正在发送数据包,但它们在传输过程中丢失或延迟,这可以解释为什么最后收到的数据包时间比轮询间隔晚得多。

Chrony 报告每个数据包都已收到,因为它基于服务器发送的所有数据包都被客户端收到的假设。然而,实际上,由于网络问题或其他因素,数据包可能会丢失或延迟。

要进一步调查该问题,您可以检查chronyc 跟踪命令查看系统时钟是否根据服务器的响应进行调整,并检查客户端和服务器之间的网络连接。

相关内容