时间同步,校时问题总结

前段时间测试现场车辆上报云端数据的延迟,使用的测试方案是车端上报数据中携带精确到毫秒的时间戳,云端收到协议之后在本身的日志存储接收时的时间戳,比对两者的差异从而确认网络+业务延迟。

当然正常情况下测试两者延迟的方法是客户端发送时记录时间戳,然后服务端接收后马上进行业务处理同步的返回回复协议,客户端计算发收时间间隔的1/2就是延迟。这里不使用这种方法的原因有二,一是车和平台目前只有个别这样同步收发消息的业务,难以做长时间的拷机稳定测试;二是我们不关想测试网络延迟,是想测试车云真正的业务处理延迟,所以为了不增加新的测试代码,我们的测试方案是最方便的;当然这就要求车云双方对时间的高度同步。

        最初为了摸清车云的现有时间环境,做了初步测试,测试延迟大概有500ms,而ping延迟只有50ms左右,基本确认两者的时间高度不同步。为了车云的时间同步问题接触了三个实现ntp协议的软件的使用,下面做一下简单的总结。

1.systemd-timesyncd

systemd 提供了 systemd-timesyncd 客户端,它是一个用于跨网络同步系统时钟的守护服务。它实现了一个 SNTP 客户端。与NTP的复杂实现相比,这个服务简单的多,它只专注于从远程服务器查询然后同步到本地时钟。在/etc/systemd/timesyncd.conf 中配置你的(时间)服务器。大多数 Linux 发行版都提供了一个默认配置,它指向发行版维护的时间服务器上。systemd-timesyncd只会更改系统时间不会更改硬件时间,可以通过hwclock -w命令将系统时间同步到硬件时间

配置文件

/etc/systemd/timesyncd.conf  存储校时,修改ntp服务ip,其中

[Time]

NTP=192.168.33.105

NTP可以配置ntp协议的校时服务器;

控制命令

timedatectl timesync-status,查看校时状态

systemctl restart systemd-timesyncd,  重启服务

timedatectl , 查看同步状态

System clock synchronized: yes

          NTP service: active

          RTC in local TZ: no

(System clock synchronized: yes         ##如果和远程NTP服务器成功同步,显示为yessystemd-timesyncd.service active: yes    ##NTP时间同步是否开启,yes表示是,systemd-timesyncd服务为活动也就是开启了NTP时间同步)

2. chrony

Chrony包含chronyd一个在用户空间中运行的守护程序,以及chronyc一个命令行程序,可用于监视其性能chronyd并在运行时更改各种操作参数。chronyd可以监测和由命令行实用程序来控制chronyc。该实用程序提供了一个命令提示符,该命令提示符允许输入许多命令来查询其当前状态chronyd并对其配置进行更改。chrony既作为校时服务器,又作为校时客户端为本机校时。

配置文件

/etc/chrony.conf(/etc/chrony/chrony.conf)  配置文件,可以修改新增server

控制命令

systemctl status chronyd -l 查看校时状态

chronyc activity 查看校时源状态

chronyc sources -v 查看时间同步源

chronyc tracking 查看实际校时源和校时情况

使用chrony进行PPS校时参考了

Linux服务器时间同步chrony详解+案例_云烟成雨TD的博客-CSDN博客_chronyc tracking

另外chrony的官方文档介绍的也比较详细

chrony – chronyc(1)

3.ntpdate

ntpdate -s ntp.ming.com 手动同步时间

ntpdate了解的并不是很多,主要是上面这个命令。

还有就是可以通过crontab和ntpdate实现定时同步时间的功能

sudo vim /etc/crontab

时间同步,校时问题总结_第1张图片

 以上修改即可配置1小时同步一次时间

你可能感兴趣的:(Linux应用开发,时间同步,ntp)