---
title: OceanBase 数据库为什么要求节点之间的时间偏差小于 100ms-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 OceanBase 数据库为什么要求节点之间的时间偏差小于 100ms相关的常见问题和使用技巧，帮助您快速解决 OceanBase 数据库为什么要求节点之间的时间偏差小于 100ms的难题。
---
切换语言

- 简体中文
- English

划线反馈

# OceanBase 数据库为什么要求节点之间的时间偏差小于 100ms

更新时间：2023-11-13 02:05

适用版本： V2.1.x、V2.2.x、V3.1.x、V3.2.x 内容类型：FAQ  

本文讲解在 V2.x/V3.x 版本上配置节点时钟同步的原理说明。

## 为什么需要节点之间的时间偏差 <100ms

Paxos 选举协议会检查每个消息在发送端和接收端的时间差（即消息的延迟时间），并且设置了最大允许的延迟（100ms*2 + 200ms=400ms），其中同时考虑了 2 个机器间的时钟延迟上限（max 100ms）和 rpc 延迟上限（200ms）。

当消息延迟超过这个上限后，就认为是过期消息，就会被选举模块忽略。

## 影响

影响是 lease 机制无法正常工作，会导致：

- 选举不能正常进行，进而无主。
 - 双主风险。

  基本上集群是不太可能不出问题的，一定会处于一个特别怪异的状态，就会遇到各种各样的错，然后整个集群基本上是处于一种不可用的状态。

  当服务器间时钟偏差大于 100 毫秒后，会导致系统不可用（不能读写，但不会丢数据）。

## 调整方法

第一种情况：如果 observer 的节点上系统时间比标准时间慢：可直接调整。

第二种情况：如果 observer 的节点上系统时间比标准时间快：可以仅仅停止问题节点的 observer 进程。

在停止 observer 进程之前，建议 stop server 动作将该 server 上的 leader 副本的 leader 切换到其他节点。然后停止进程，等待足够的 Gap time，然后将时间调正确。

## 更多信息

可以使用下列方法来检查节点之间的时间误差。

```
$ clockdiff <ip>

```

可以使用下列方法来检查当前节点和时钟服务器之间的误差。

```
// if running ntpd service
clock_offset=$(ntpq -np | grep -e '^*' | awk '{print $9}')
echo $clock_offset
​
// if running chronyd service
chrony_server=$(chronyc -n sources | grep -e '^\^\*' | awk '{print $2}')
clock_offset=$(chronyc -n tracking | grep "$chrony_server" -A 3|tail -1 | awk '{print $4}')
echo $clock_offset

```

## 适用版本

OceanBase 数据库 V2.x、V3.x 的各个版本。

Previous

[部署 OceanBase 数据库时服务器到底要不要打开 NUMA](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000210146)

Next

[OceanBase 数据库同集群跨机房部署对网络的要求](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000074) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
