标签:htpdate

htpdate

标签 :GAC-350 htpdate

GAC-350 放弃ntpdate采用htpdate,通过/etc/default/htpdate配置为deamon模式,并且尝试从多个门户网站同步时间。但是测试反馈从开机无网络到网络恢复的时候同步时间未及时恢复,需要等待一段时间。

初步怀疑第一次未正常获取到时间后,默认轮询周期过大,导致未及时同步,在man htpdate找到轮询周期的描述,从这里看这里默认的轮询周期在30分钟至32小时。

https://salsa.debian.org/debian/htpdate

仔细走读了代码,发现这里的最小时间和最大时间有很多规则,理顺完整原理后再详细介绍这里的规则。

  • htpdate 区分deamon 模式,在deamon模式会周期同步时间,否则只同步一次;
  • 从服务器http文件头多次获取时间,如果存在多个服务器,多次获取;
  • 计算多个服务器获取时间平均值,并且计算本地误差然后更改时间;

而对于轮询时间和异常处理,如下规则:

  • 多个服务器,某一个服务器获取时间失败,休眠,时间设置最小时间除以/服务器数量;

  • 成功获取时间(任一服务器),如果存在误差,立即同步,休眠30分钟(固定时间)最小延时值设置为最小时间;

  • 多个服务器获取时间均失败,最小时间睡眠;

  • 获取成功,但是不存在时间误差;睡眠时间*2,直到最大时间;

综上,如果未通过-m 或者 -M 默认最小轮询时间为30(DEFAU...