All Products
Search
Document Center

Elastic Compute Service:Achieve precise time synchronization on ECS instances

Last Updated:Feb 03, 2026

Time discrepancies can result in scheduled task errors, inconsistent log timestamps, and clock skew in distributed systems. To address these aspects, you can calibrate the time for your Elastic Compute Server (ECS) instance by configuring a clock synchronization service.

How it works

image
  • Network Time Protocol (NTP): A protocol that synchronizes clocks between a client and a server to within milliseconds by calculating network latency.

  • Alibaba Cloud NTP server: Alibaba Cloud provides NTP servers with internal virtual private cloud (VPC) endpoints. This allows ECS instances to synchronize time with minimal network latency.

  • chrony/ntpd/W32time: Time synchronization services that use the NTP protocol to sync an instance’s system clock with an NTP server. On Linux/Unix systems, chrony performs better than ntpd. Windows systems use the built-in W32time service.

Verify clock accuracy

Quick guide

Linux (chrony)

ECS instances created from Alibaba Cloud public images use chrony by default for time synchronization. Some older public images use ntpd by default. You can run ps -C chronyd,ntpd -o comm= to check which process is running. If the output is ntpd, the instance uses ntpd by default. See Linux (ntpd) to verify whether time synchronization is needed.

Run the following command to retrieve the detailed time synchronization status. Check the System time field to assess accuracy. In this example, 0.000027851 seconds fast of NTP time means the system clock is 0.000027851 seconds ahead of the NTP server time. Compare this offset with your application’s tolerance. If the offset exceeds the acceptable range, adjust your time configuration to ensure accuracy.

To check time accuracy across multiple instances, use Cloud Assistant batch check.
sudo chronyc tracking
Reference ID    : 64643D58 (100.100.61.88)
Stratum         : 2
Ref time (UTC)  : Tue Oct 28 05:53:58 2025
System time     : 0.000027851 seconds fast of NTP time
Last offset     : +0.000044533 seconds
RMS offset      : 0.000036478 seconds
Frequency       : 41.053 ppm slow
Residual freq   : +0.000 ppm
Skew            : 0.007 ppm
Root delay      : 0.000408892 seconds
Root dispersion : 0.011003596 seconds
Update interval : 1028.9 seconds
Leap status     : Normal

Linux (ntpd)

Run the following command to retrieve the detailed time synchronization status. Check the offset field to assess accuracy. In this example, 1009.26 means the system clock differs from the NTP server time by 1009.26 milliseconds. Compare this offset with your application’s tolerance. If the offset exceeds the acceptable range, adjust your time configuration to ensure accuracy.

To check time accuracy across multiple instances, use Cloud Assistant batch check.
sudo ntpq -p
remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 LOCAL(0)        .LOCL.          10 l  107   64    2    0.000    0.000   0.000
+47.96.XXX.XXX   100.100.61.91    2 u   37   64    3   31.241  1009.95   1.313
 11.116.XXX.XX   .INIT.          16 u    -   16    0    0.000    0.000   0.000
-100.100.3.1     10.137.55.181    2 u   52   64    7   25.344  1010.26   0.566
-100.100.3.2     10.137.55.181    2 u   18   64    7   26.873  1008.80   2.143
-100.100.3.3     10.137.55.181    2 u   66   64   12   29.656  1010.16   0.902
-203.107.6.88    10.137.55.181    2 u   65   64    7   33.689  1005.74   0.697
 11.196.XXX.XXX  .INIT.          16 u    -   16    0    0.000    0.000   0.000
 11.196.XXX.XX   .INIT.          16 u    -   16    0    0.000    0.000   0.000
 10.143.0.44     .INIT.          16 u    -   16    0    0.000    0.000   0.000
 10.143.0.45     .INIT.          16 u    -   16    0    0.000    0.000   0.000
 10.143.0.46     .INIT.          16 u    -   16    0    0.000    0.000   0.000
+100.100.5.1     203.107.X.XX     2 u   59   64    7   53.214  1009.42   0.519
*100.100.5.2     203.107.X.XX     2 u   58   64    7   49.062  1009.26   0.984
-100.100.5.3     203.107.X.XX     2 u   57   64    7   56.670  1011.81   3.331

Windows

Press Win + R, type cmd, and then press Enter to open the command prompt. Run w32tm /query /status. Check the Root Dispersion field to assess accuracy. In this example, 7.7612440s means the system clock differs from the NTP server time by 7.7612440 seconds. Compare this offset with your application’s tolerance. If the offset exceeds the acceptable range, adjust your time configuration to ensure accuracy.

To check time accuracy across multiple instances, use Cloud Assistant batch check.
Leap Indicator: 0(no warning)
Stratum: 3 (secondary reference - syncd via (S)NTP)
Precision: -23 (119.209ns per tick)
Root Delay: 0.0259591s
Root Dispersion: 7.7612440s
Reference ID: 0x64640302 (source IP:  100.100.3.2)
Last Successful Sync Time: 2025/10/28 15:05:02
Source: ntp11.cloud.aliyuncs.com,0x9
Poll Interval: 6 (64s)

Configure clock synchronization

Linux (chrony)

ECS instances created from Alibaba Cloud public images run chrony by default for time synchronization. Some older public images run ntpd by default. You can run ps -C chronyd,ntpd -o comm= to check which process is running. If the output is ntpd, the instance uses ntpd by default. To configure time synchronization, see Linux (ntpd).

Important

A Linux system can run only one time synchronization daemon process. You must use only one of the two services: chronyd or ntpd. Before you start one of these services, ensure that the other service is stopped and disabled.

To configure time synchronization across multiple instances, use Cloud Assistant batch execution.

1. Check and configure NTP server addresses

  1. Edit the chrony configuration file.

    Alibaba Cloud Linux/CentOS/RHEL

    sudo vim /etc/chrony.conf

    Ubuntu/Debian

    sudo vim /etc/chrony/chrony.conf
  2. Configure Alibaba Cloud NTP servers.

    Use # to comment out all lines that start with `server`, and then add the following content to the configuration file.

    Important

    For fault tolerance and improved accuracy, do not use a single NTP time source. Configuring multiple sources provides redundancy and allows the system to select the best source for synchronization.

    # Configuration information, including NTP server addresses, minimum polling interval, and maximum polling interval.
    server ntp.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp10.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp11.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp12.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp7.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp8.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp9.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
  3. Save the configuration file and exit. Restart chrony.

    sudo systemctl restart chronyd.service

2. Verify clock synchronization

The restarted service smoothly and gradually adjusts the time. Run sudo chronyc tracking to verify the synchronization status.

sudo chronyc tracking

The System time field in the output shows the offset between your system clock and the NTP time. For example, 0.000036150 seconds fast of NTP time indicates that the system clock is ahead of the NTP time.

If the time offset is large (several minutes or hours) and your workload can tolerate an abrupt time jump, consider manually synchronizing time.
Reference ID    : 64643D58 (100.100.61.88)
Stratum         : 2
Ref time (UTC)  : Sat Sep 20 07:55:33 2025
System time     : 0.000036150 seconds fast of NTP time
Last offset     : +0.000031322 seconds
RMS offset      : 0.000044841 seconds
Frequency       : 43.592 ppm slow
Residual freq   : +0.000 ppm
Skew            : 0.005 ppm
Root delay      : 0.000228760 seconds
Root dispersion : 0.010518964 seconds
Update interval : 1029.1 seconds
Leap status     : Normal

Linux (ntpd)

Some older Alibaba Cloud public images (such as CentOS 6) configure the ntpd service by default. Because the NTP project is no longer maintained, we recommend upgrading to Chrony for better performance and security.

Important

A Linux system can run only one time synchronization daemon. You must use only one of the two services: chronyd or ntpd. Before you start one of these services, ensure that the other service is stopped and disabled.

To configure time synchronization across multiple instances, use Cloud Assistant batch execution.

1. Check and configure NTP server addresses

  1. Edit the NTP configuration file.

    sudo vim /etc/ntp.conf
  2. Configure Alibaba Cloud NTP servers.

    Use # to comment out all lines that start with `server`, and then add the following content to the configuration file.

    Important

    For fault tolerance and improved accuracy, do not use a single NTP time source. Configuring multiple sources provides redundancy and allows the system to select the best source for synchronization.

    # Configuration information, including NTP server addresses, minimum polling interval, and maximum polling interval.
    server ntp10.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    server ntp11.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    server ntp12.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    server ntp7.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    server ntp8.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    server ntp9.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
  1. Save the configuration file and exit. Restart ntpd.

    Alibaba Cloud Linux/CentOS/RHEL

    sudo service ntpd restart

    Ubuntu/Debian

    service ntp restart

2. Verify time synchronization

The restarted service smoothly and gradually adjusts the time. Run sudo ntpq -p to verify the synchronization status. The offset field in the output shows the difference between the local time and the server time. The key parameters are as follows:

  • offset: The time difference between the system time and the server time, in milliseconds. The closer the offset value is to 0, the closer the system time is to the server time.

  • jitter: The variation in time delay. A smaller absolute value indicates higher time precision.

If the time offset is large (several minutes or hours) and your workload can tolerate an abrupt time jump, consider manually synchronizing time.
sudo ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 LOCAL(0)        .LOCL.          10 l   17   64    1    0.000    0.000   0.000
+100.100.3.1     10.137.55.181    2 u    8   16    1   30.426  -307.76   0.153
*100.100.3.2     10.137.55.181    2 u    5   16    1   26.845  -309.25   0.221
+100.100.3.3     10.137.55.181    2 u    4   16    1   28.819  -309.37   0.187
-100.100.5.1     203.107.X.XX     2 u    3   16    1   50.478  -310.70   0.164
-100.100.5.2     203.107.X.XX     2 u    2   16    1   47.235  -311.89   0.246
 100.100.5.3     203.107.X.XX     2 u    1   16    1   53.661  -310.50   0.119

Windows

Graphical user interface

Important

The Windows graphical user interface (GUI) supports configuring only a single NTP server. If that node experiences network jitter or becomes unavailable, the system cannot synchronize time, which creates a single point of failure.

To ensure high availability of time synchronization in production environments, we strongly recommend that you skip the GUI configuration and instead use the command prompt to configure multiple NTP servers.

  1. In the notification area of the taskbar, click the date and time, and then click Date and time settings.

    image

  2. On the Settings page, click Related settings > Add clocks for different time zones.

  3. In the Date and Time window, click Internet Time > Change settings.

  4. In the Internet Time Settings dialog box, select Synchronize with an Internet time server, enter ntp.cloud.aliyuncs.com, click Update now, and then click OK.

  5. Verify time synchronization. A success message confirms synchronization with the server. If synchronization fails, check whether a firewall or security software is blocking UDP port 123.

    image

Command-line interface (CLI)

Compared to the GUI, CLI lets you configure multiple time sources to enable automatic failover.

To configure time synchronization across multiple instances, use Cloud Assistant batch execution.

1. Configure NTP servers

We recommend replacing the default Windows Server NTP server (time.windows.com) with Alibaba Cloud NTP servers. The following steps use Windows Server 2022 as an example.

  1. Press Win + R, type cmd, and then press Enter to open the command prompt.

  2. Set the NTP servers. For example, use ntp.cloud.aliyuncs.com ntp7.cloud.aliyuncs.com ntp8.cloud.aliyuncs.com ntp11.cloud.aliyuncs.com.

     w32tm /config /manualpeerlist:"ntp.cloud.aliyuncs.com ntp7.cloud.aliyuncs.com ntp8.cloud.aliyuncs.com ntp11.cloud.aliyuncs.com" /syncfromflags:manual /reliable:YES /update
  3. Restart the time service.

     net stop w32time
     net start w32time
  4. Synchronize time with the NTP servers.

    w32tm /resync

2. Verify time synchronization

Run w32tm /query /status. If the Source field shows Local CMOS Clock instead of your configured NTP server address, synchronization has failed.

 w32tm /query /status
Leap Indicator: 0(no warning)
Stratum: 3 (secondary reference - syncd via (S)NTP)
Precision: -23 (119.209ns per tick)
Root Delay: 0.0020371s
Root Dispersion: 0.0191713s
Reference ID: 0x64640302 (source IP:  100.100.3.2)
Last Successful Sync Time: 2025/10/28 14:37:42
Source: ntp11.cloud.aliyuncs.com
Poll Interval: 10 (1024s)

FAQ

Do I need to install or configure chronyd or ntpd inside containers (Docker/Kubernetes)?

No.

Never run chronyd or ntpd inside containers. Containers share the host’s time by default and do not require independent configuration. Running a time synchronization service inside a container causes clock resource contention with the host, which severely compromises workload stability.

How do I force manual system clock synchronization?

To avoid the risks associated with abrupt time jumps, do not manually synchronize the time. However, if the system clock deviates significantly from the standard time (for example, by several minutes or hours) and your workload can tolerate an abrupt time jump, you can perform a manual synchronization.

Linux (chrony)

  1. Stop chrony.

    sudo systemctl stop chronyd.service
  2. Manually synchronize time.

    Important

    For fault tolerance and improved accuracy, do not use a single NTP time source. Before you manually synchronize the time, confirm that you have configured multiple Alibaba Cloud NTP servers.

    sudo chronyd -q
  3. Start chrony.

    sudo systemctl start chronyd.service

Linux (ntpd)

Alibaba Cloud Linux/CentOS/RHEL

  1. Stop ntpd.

    sudo service ntpd stop
  2. Manually synchronize time.

    Important

    The NTP project is no longer maintained. Using ntpdate for manual synchronization carries a risk of abrupt time jumps. If you must use it, specify three or more time sources in the ntpdate command to mitigate risk. For more information about Alibaba Cloud NTP servers, see Alibaba Cloud NTP server domains.

    Important

    Running ntpdate periodically using a script is not a valid replacement for an NTP daemon. NTP daemons use sophisticated algorithms to maximize time accuracy and reliability while minimizing resource usage.

    sudo ntpdate ntp.cloud.aliyuncs.com ntp7.cloud.aliyuncs.com ntp10.cloud.aliyuncs.com ntp11.cloud.aliyuncs.com ntp12.cloud.aliyuncs.com
  3. Start ntpd.

    sudo service ntpd start

Ubuntu/Debian

  1. Stop ntpd.

    sudo service ntp stop
  2. Manually synchronize time.

    Important

    The NTP project is no longer maintained. Using ntpdate for manual synchronization carries a risk of abrupt time jumps. If you must use it, specify three or more time sources in the ntpdate command to mitigate risk. For more information about Alibaba Cloud NTP servers, see Alibaba Cloud NTP server domains.

    sudo ntpdate ntp.cloud.aliyuncs.com ntp7.cloud.aliyuncs.com ntp10.cloud.aliyuncs.com ntp11.cloud.aliyuncs.com ntp12.cloud.aliyuncs.com
  3. Start ntpd.

    sudo service ntp start

What are the Alibaba Cloud NTP server domain names?

The following table lists the Alibaba Cloud NTP server addresses for different networks (IPv4 only).

  • For Alibaba Cloud ECS instances: Use the VPC domains for lower network latency.

  • For non-Alibaba Cloud instances: Use the Internet domains.

VPC internal network

Public network

ntp.cloud.aliyuncs.com

ntp7.cloud.aliyuncs.com

ntp8.cloud.aliyuncs.com

ntp9.cloud.aliyuncs.com

ntp10.cloud.aliyuncs.com

ntp11.cloud.aliyuncs.com

ntp12.cloud.aliyuncs.com

ntp.aliyun.com

ntp1.aliyun.com

ntp2.aliyun.com

ntp3.aliyun.com

ntp4.aliyun.com

ntp5.aliyun.com

ntp6.aliyun.com

ntp7.aliyun.com

Is the Alibaba Cloud NTP service free?

This service is provided at no charge. Alibaba Cloud public images include a default time synchronization configuration. By default, ECS instances created from these images use the Chrony or NTP service to synchronize time.

How do I upgrade from ntpd to chrony?

Some older Alibaba Cloud ECS images, such as CentOS 6, use the `ntpd` service. Because the NTP project is no longer maintained, we recommend that you upgrade to `chrony` if your workload does not depend on NTP.

  1. Uninstall the ntp service.

    Alibaba Cloud Linux/CentOS/RHEL
    sudo yum remove ntp
    Ubuntu/Debian
    sudo apt remove ntp
  2. Install Chrony.

    If the download fails, see How to resolve yum failures when installing chrony on CentOS 6 (EOL)?

    Alibaba Cloud Linux/CentOS/RHEL
    sudo yum install chrony
    Ubuntu/Debian
    sudo apt update
    
    sudo apt install chrony
  3. Configure Chrony.

    Edit the configuration file.

    Alibaba Cloud Linux/CentOS/RHEL

    sudo vim /etc/chrony.conf

    Ubuntu/Debian

    sudo vim /etc/chrony/chrony.conf

    Add NTP servers and other settings to the file. The following is a simple chrony.conf example:

    # NTP server settings
    server ntp.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    # Specify the location of the drift file
    driftfile /var/lib/chrony/drift
    # Allow chronyd to be queried from localhost
    allow 127.0.0.1

    Parameter descriptions:

    Parameter

    Description

    server ntp.cloud.aliyuncs.com

    This is the NTP server domain name. chrony connects to this server for time synchronization.

    minpoll 4

    Specifies the minimum polling interval as a power of 2 in seconds. minpoll 4 means the minimum interval is 2⁴ = 16 seconds. This ensures chrony sends at least one sync request every 16 seconds.

    maxpoll 10

    Specifies the maximum polling interval as a power of 2 in seconds. maxpoll 10 means the maximum interval is 2¹⁰ = 1024 seconds.

    iburst

    An option that speeds up initial synchronization. When chrony starts, it sends a burst of requests (typically 8) to quickly obtain accurate time from the server.

  4. Start the chrony service.

    1. Start the Chrony service and enable it to start on boot.

      # Start the chrony service
      sudo service chronyd start
      
      # Set chrony to start automatically when the system boots
      sudo chkconfig chronyd on
    2. Check the chrony status. Use the chronyc tool to check the chrony status and synchronization.

      # Check the service status
      sudo service chronyd status
    3. Verify time synchronization. Run the command to check the primary server status and the offset between your local clock and the time server.

      sudo chronyc tracking

How to resolve yum failures when installing chrony on CentOS 6 (EOL)?

  1. Clean old repo configurations.

    sudo mkdir -p /etc/yum.repos.d/backup && sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
  2. Create a new configuration that points to the official archive. Run the following command to create a new CentOS-Vault.repo file.

    sudo tee /etc/yum.repos.d/CentOS-Vault.repo <<'EOF'
    [C6.10-base]
    name=CentOS-6.10 - Base
    baseurl=http://vault.centos.org/6.10/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    enabled=1
    [C6.10-updates]
    name=CentOS-6.10 - Updates
    baseurl=http://vault.centos.org/6.10/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    enabled=1
    [C6.10-extras]
    name=CentOS-6.10 - Extras
    baseurl=http://vault.centos.org/6.10/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    enabled=1
    EOF
  3. Clean and rebuild the cache.

    sudo yum clean all && sudo yum makecache
  4. Downloading chrony

    sudo yum install chrony

References

  • For more information about Linux time concepts, operations, or changes to time configurations in Linux public images, see Linux time and time zones.

  • The Precision Time Protocol (PTP) time synchronization service uses hardware-level timestamps and dynamic path compensation to achieve sub-microsecond clock synchronization. This ensures timing consistency in distributed systems, which makes it ideal for scenarios that require high time precision, such as high-frequency financial trading.