问题描述
我在编译/构建 C++ 包时遇到时钟偏差问题。
我们正在使用从远程驱动器到本地的软链接来获取常用包,同时将包构建为每晚构建。我们还安装了 NTP 服务器以匹配两次。我们并不总是面对它,而是有时。
make[1]: warning: Clock skew detected. Your build may be incomplete.
make[2]: Warning: File 'Makefile' has modification time 0.00096 s in the future
如果我在本地机器上的所有内容中构建它,那么构建行为正确,但由于某种原因,我们不能在 CICD 过程中这样做,因为构建需要 3 个小时。由于这个问题,编译器无法检测到一些文件。
此应用基于 QT 构建。
对此有什么建议吗?以前有人遇到过同样的问题吗?
解决方法
这真的是一个serverfault的问题,并标记[NTP]
我们有一个大型企业配置,带有多个 VM 服务器和 NFS/SAN 存储。虽然我们所有的服务器都有 NTP,但事实证明存储阵列前端无法访问 NTP 服务器(单独的、隔离的 VLAN)。失败来自阵列分配的时间戳,而不是安装的服务器。它会飘向未来。有趣的是,相同的阵列托管 VM。
我们甚至在运行 tar 时也观察到了问题,以及检测源控制和构建的变化。
确保您的所有服务器都指向一个有效的上游服务器,一直指向权威时钟。这包括 SAN 头设备a和任何备份/恢复主机。您可以谷歌最佳实践,但一个好的建议是服务器重新连接到上游网络交换机,然后连接到内部 NTP 服务器(和备用服务器(或 2 个更好)),然后连接到公共权威源。使用 LDAP 或 AD 作为上游源都可以。这样,即使出现故障,至少您网段中的所有内容都会同步。
使用 ntpq
进行验证。
刚知道我们的服务器配置了 Chronyc。
这是chronyc tracking
状态
Stratum : 6
Ref time (UTC) : Mon Feb 22 17:01:00 2021
System time : 0.000108047 seconds slow of NTP time
Last offset : +0.000085771 seconds
RMS offset : 0.001162956 seconds
Frequency : 89.448 ppm slow
Residual freq : +0.001 ppm
Skew : 0.245 ppm
Root delay : 0.158043087 seconds
Root dispersion : 0.115303792 seconds
Update interval : 1043.7 seconds
Leap status : Normal