NTP Troubleshooting Guide
Step-by-step solutions for common time synchronization problems
Understanding Time Offset
Time offset is the difference between your system clock and the reference NTP server. Here's how to interpret offset values:
| Offset Range | Status | Action Required |
|---|---|---|
| < 100ms | Excellent | No action needed |
| 100ms - 500ms | Acceptable | Monitor, may need tuning |
| 500ms - 1s | Warning | Check NTP configuration |
| > 1 second | Critical | Immediate action required |
Fixing Clock Skew & Drift
Common Causes
- CMOS/RTC hardware clock inaccuracy
- Weak or failing CMOS battery
- Virtual machine time sync conflicts (especially on KVM/Proxmox VE)
- NTP polling interval too long
# Check hardware clock (RTC) sudo hwclock --show # Compare with system time date # Sync hardware clock from system time sudo hwclock --systohc
# In /etc/ntp.conf, add minpoll/maxpoll server pool.ntp.org minpoll 4 maxpoll 6 # Or for chrony (/etc/chrony/chrony.conf) server pool.ntp.org minpoll 4 maxpoll 6
Network Latency Issues
Diagnosing Latency
# Test latency to NTP server ping -c 10 pool.ntp.org # Check NTP round-trip delay ntpq -p # Look at the "delay" column (in milliseconds)
# Use regional pool servers # Europe server 0.europe.pool.ntp.org server 1.europe.pool.ntp.org # France specifically server 0.fr.pool.ntp.org server 1.fr.pool.ntp.org # Or use RDEM Systems (European infrastructure) server ntp.rdem-systems.com
High Jitter Problems
Understanding Jitter
Jitter measures the variation in round-trip delay. High jitter indicates network instability or server issues.
# Check jitter values ntpq -p # The "jitter" column shows measurement stability # Good: < 5ms # Acceptable: 5-20ms # Poor: > 20ms
# /etc/ntp.conf - use at least 4 servers server 0.pool.ntp.org iburst server 1.pool.ntp.org iburst server 2.pool.ntp.org iburst server 3.pool.ntp.org iburst # The 'iburst' option speeds up initial sync
Large Time Offset (>1000 seconds)
Why This Happens
NTP has a "panic threshold" (default 1000 seconds) to prevent accidental large time jumps that could corrupt databases or logs.
# Stop NTP service first sudo systemctl stop ntpd # or chronyd # Set time manually (rough sync) sudo ntpdate -b pool.ntp.org # Or use timedatectl sudo timedatectl set-time "2025-01-14 10:30:00" # Restart NTP sudo systemctl start ntpd
# For ntpd: add -g flag to allow first large step # Edit /etc/sysconfig/ntpd or service file OPTIONS="-g" # For chrony: use makestep directive # /etc/chrony/chrony.conf makestep 1 3 # Step if offset > 1s, first 3 updates
Quick Fixes Checklist
5-Minute NTP Health Check
- Is NTP running?
systemctl status ntpdorsystemctl status chronyd - Are servers reachable?
ntpq -p- check "reach" column (should be 377) - Is firewall open?
sudo ufw status- UDP 123 must be allowed - What's the offset?
ntpq -p- check "offset" column - Force a sync:
sudo systemctl restart ntpd
Still Having Issues?
For advanced diagnostics or enterprise NTP infrastructure needs:
See also: quick NTP diagnostic · NTP server validator · field case: 4.2s drift fixed to <50ms (fr)