我们偶尔会在服务器上看到时间差异,并确认:
/etc/init.d/ntp restart然后ntpq -p ,问题解决了 起初, ntpq -p返回ntpq: read: Connection refused ,所以我继续前进, ps aux | grep ntp ps aux | grep ntp没有返回ntp进程,而其他工作主机返回类似于/usr/sbin/ntpd -p /var/run/ntpd.pid -u 101:103 -g 。 看起来ntpd确实崩溃了,因为在/ var / log / messages中没有看到日志,但是它可能发生在很久以前,并且日志中的那部分已经被旋转了。
于是我继续进行/etc/init.d/ntp restart ,并被告知过时的pid存在:
Stopping NTP server: ntpdstart-stop-daemon: warning: failed to kill 2124: No such process`. Starting NTP server: ntpd.
但一切都回来了。
我们在Debian 6 Squeeze上,但Debian 5 Lenny之后就出现了这个问题。 我们使用aptitude install ntp 。 服务器位于Linode VPS(= Xen虚拟化),所以我们问他们,但他们说,他们没有这样的经验。
另外,虽然我不知道这是不是巧合,但它似乎只发生在应用程序服务器(Ruby on Rails)上。
事情是,由于pid文件在ntpd崩溃时保持不变,所以很难检测到崩溃并以monit或类似的方式重新启动。 我应该每隔一段时间通过cron调用/etc/init.d/ntp restart ?
任何经验,解决scheme,想法?
如果你使用的是monit, 他们的FAQ说monit检查,以确保pid文件中的pid是有效的,以便检测程序崩溃并将其pid文件留在后面的情况。
如果你不使用monit,那么也许你可以find一个直接与ntpd进行通信的监视脚本(nagios有几个你可以使用/重用的ntp插件)? 如果你不能与它沟通,那么它可能会坠毁。