*注意:如果您的服务器由于内核混乱而仍然存在问题,并且您无法重新启动 - 建议在您的系统上安装 gnu date 的最简单解决方案是:date -s now。这将重置内核的内部“time_was_set”变量并修复 Java 和其他用户空间工具中的 CPU 占用 futex 循环。我已经在我自己的系统上跟踪了这个命令,并确认它正在做它在锡上所说的 *
尸检
Anticlimax:唯一死掉的是我的 VPN (openvpn) 链接到集群,所以在它重新建立时有令人兴奋的几秒钟。其他一切都很好,并且在闰秒过去后启动 ntp 就顺利进行了。
我在http://blog.fastmail.fm/2012/07/03/a-story-of-leaping-seconds/写下了我当天的全部经历
如果您在http://my.opera.com/marcomarongiu/blog/2012/06/01/an-humble-attempt-to-work-around-the-leap-second查看 Marco 的博客- 他有一个解决方案使用 ntpd -x 在 24 小时内调整时间变化以避免 1 秒跳过。这是运行您自己的 ntp 基础架构的另一种涂抹方法。
就在今天,2012 年 6 月 30 日星期六 - 在格林威治标准时间开始后不久开始。我们在由不同团队管理的不同数据中心的少数服务器都变黑了 - 不响应 ping,屏幕空白。
他们都在运行 Debian Squeeze - 从库存内核到自定义 3.2.21 构建的所有内容。大多数是戴尔 M610 刀片,但我也刚刚丢失了戴尔 R510,其他部门也丢失了其他供应商的机器。还有一个旧的 IBM x3550 崩溃了,我认为它可能无关紧要,但现在我想知道。
我确实从中获得了屏幕转储的一次崩溃说:
[3161000.864001] BUG: spinlock lockup on CPU#1, ntpd/3358
[3161000.864001] lock: ffff88083fc0d740, .magic: dead4ead, .owner: imapd/24737, .owner_cpu: …Run Code Online (Sandbox Code Playgroud) 为什么 Windows Server(在这种情况下为 2008,但我在 2003 年看到过同样的问题)似乎在同步时间时出现问题?我在各种服务器的系统日志中看到了这个错误:
时间服务没有同步系统时间 86400 秒,因为没有时间服务提供者提供可用的时间戳。时间服务在能够与时间源同步之前不会更新本地系统时间。如果本地系统配置为作为客户端的时间服务器,它将停止作为时间源向客户端进行广告。时间服务将继续重试并与其时间源同步时间。检查其他 W32time 事件的系统事件日志以获取更多详细信息。运行“w32tm /resync”以强制进行即时时间同步。
在控制面板下,日期和时间,互联网时间设置被设置为与同步time-nw.nist.gov;上次成功同步是在 2 天前,表明存在某种问题。但是,如果我单击该对话框上的“立即更新”按钮,它确实会随着时间而更新!
那么为什么 Windows 服务器不能在没有我手动干预的情况下在后台通过 NTP 可靠地同步时间呢?我究竟做错了什么?
我遇到了一些 GPS NTP 服务器,以及一些使用现成接收器和软件的廉价解决方案。现在我只是将 NTP 与 Internet 上的服务器列表一起使用。使用 GPS 有什么好处(考虑到替代方案是免费的)?
我在一个盒子上运行 ntpd。我想看看盒子上的时间与从 ntp.ubuntu.com 检索到的时间相比如何。是否有捷径可寻?
Debian 稳定版 (5.0.3) 服务器正在运行ntpd,并已连接到 Internet。尽管如此,系统时钟还是有大约 5 分钟的错误。
$ /etc/init.d/ntp status
NTP server is running..
Run Code Online (Sandbox Code Playgroud)
相关部分(我认为)/etc/ntp.conf:
driftfile /var/lib/ntp/ntp.drift
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
server 0.europe.pool.ntp.org
server 1.europe.pool.ntp.org
server 2.europe.pool.ntp.org
server 3.europe.pool.ntp.org
Run Code Online (Sandbox Code Playgroud)
我知道 NTP 不一定会立即按时提供时钟。尽管如此,您需要等待多少小时或多少天才能合理地期望 NTP 完成其工作并同步时钟?
我是否缺少其他配置文件或选项,或者只是做错了什么?是NTP(而不是如用ntpdate),这样做的正确的工具?有没有什么快速的方法可以检查配置是否正确以及选择的NTP服务器是否返回正确的时间?
编辑:输出ntpq -p是:
remote refid st t when poll reach delay offset jitter
============================================================================== …Run Code Online (Sandbox Code Playgroud) 我听说如果您在运行时更改系统时间,数据库和邮件服务器会发生坏事的传言。但是,我很难找到有关实际风险的任何具体信息。
我有一个在 Debian Wheezy 主机上运行的生产 Postgres 9.3 服务器,时间减少了 367 秒。我可以ntpdate在 Postgres 运行时运行或启动 openntp,还是可能会导致问题?如果是这样,纠正时间的更安全方法是什么?
是否有其他服务对系统时间的变化更敏感?也许是邮件服务器(exim、sendmail 等)或消息队列(activemq、rabbitmq、zeromq 等)?
我们在隔离网络上推出 Ubuntu 14.04 服务器,运行 ntpd 4.2.6p5,配置为使用客户提供的多个 NTP 服务器(无法访问 pool.ntp.org)。我们的哑终端客户端设备运行旧版本的 BusyBox (1.00-rc2) 和Larry Doolittle 的ntpclient 2010。
这种设置多年来一直运行良好,但最近我们遇到了一个新客户的障碍。他们为我们提供了 5 个内部 NTP 服务器地址,ntpdate-debian就 Linux 服务器而言,这些地址似乎独立工作得很好。然而,在 BusyBox 方面,ntpclient抱怨“分散太高”。从调试输出中,ntpclient从 NTP 服务器获取“1217163.1”,但它支持的最大值是绝对值 (65536)。
$ /usr/sbin/ntpclient -s -i 15 -h 10.17.162.250 -d
Configuration:
-c probe_count 1
-d (debug) 1
-g goodness 0
-h hostname 10.17.162.250
-i interval 15
-l live 0
-p local_port 0
-q min_delay 800.000000
-s set_clock 1
-x cross_check 1
Listening...
Sending ...
recvfrom
packet of …Run Code Online (Sandbox Code Playgroud) 我已将 systemd timesyncd 配置为从 NTP 服务器获取时间:
/etc/systemd/timesyncd.conf > NTP=ca.pool.ntp.org
systemctl restart systemd-timesyncd.service
timedatectl set-ntp true
Run Code Online (Sandbox Code Playgroud)
状态如下:
$ timedatectl status
...
Network time on: yes
NTP synchronized: no
Run Code Online (Sandbox Code Playgroud)
正如输出所暗示的那样,时间尚未同步。有人可以帮我解决以下问题吗?
这两种同步服务器的方法之间的优缺点是什么?
在我看来,您的服务器每天的漂移可能不会超过 1 秒,因此 crontab 上的 ntpdate 就可以了。但我听说你可以在这里使用冗余的 NTP 服务器
http://www.pool.ntp.org/en/use.html
以便在发生故障时保持同步时间。
你有什么建议吗?
对于只有一个或几个站点的小型商店来说,这可能不是什么大问题,但对于较大的组织来说,这是我很好奇的事情。
您的所有/大部分服务器都使用 UTC 有什么优点和缺点?它肯定有助于报告和集中日志记录。还具有用于故障排除或安全审计的事件关联。人们也不必担心夏令时的变化。
一个缺点是,如果您希望它在本地地理时间的“凌晨 4 点”运行某些程序,则调度自动化事件(例如,cron)可能需要一些时间。对于 Unix-y 机器,您仍然可以通过在 /etc/profile 中设置“TZ”来让用户处于本地时区,但是对于将 RDesktop 放入服务器的 Windows 用户(无论出于何种原因),他们是否坚持查看 UTC?