专用千兆以太网上 DRBD 的重新同步率极慢

专用千兆以太网上 DRBD 的重新同步率极慢

我在 2 个节点上设置了 DRBD,并于昨天开始使用它。大约一小时后,它已重新同步了 50% 的分区。又过了 12 个小时,它已同步到 79%,而且速度非常慢。

以下是 cat /proc/drbd 显示的内容:

 1: cs:SyncTarget ro:Primary/Secondary ds:Inconsistent/UpToDate C r-----
    ns:464931976 nr:191087032 dw:656013660 dr:214780588 al:100703 bm:21100 lo:7 pe:0 ua:0 ap:7 ep:1 wo:f oos:92241852
        [==============>.....] sync'ed: 79.2% (90076/431396)M
        finish: 76:13:38 speed: 332 (8,680) want: 19,480 K/sec

我查看了网络流量,在 1G 接口上使用 1M 到 20M。尝试在发生这一切时运行 iperf,结果读数为 930M。尝试将同步速率调整为 10M、50M、500M,但无济于事。调整数据包大小也无济于事。

现在,从状态中可以看出,需要注意的是,我的主节点不一致。因此,我假设在重新同步时,操作系统实际上是与辅助节点一起工作的。但考虑到吞吐量如此之低,我不明白为什么同步速度不快。

有什么想法可以尝试下一步吗?预计 76 小时完成并不是我所期待的 :( 尤其是不知道原因,所以发生某种中断,我不知道如何快速使阵列保持一致。

谢谢!

编辑:我尝试在网络部分进行以下设置,但无济于事:

sndbuf-size       512k;
max-buffers      20480;
max-epoch-size   16384;
unplug-watermark 20480;

编辑2:在我停止调整所有配置后,速度不知何故突然跃升至 10~30M。同步率达到 98.8%,然后又降回约 300K。两台服务器的日志中均无消息。巧合的是,我看到 MySQL 数据库上的 INSERT 活动激增,该数据库运行于此分区。有什么想法吗?

编辑3:版本:8.4.2(api:1/proto:86-101)

答案1

在 @Nils 评论之后,我开始研究磁盘的利用率。并注意到我获得的读取次数比系统重新配置为 DRBD 之前多得多。进一步的研究表明磁盘利用率接近 100%,并且当时正在运行的批处理进程速度变慢。修复 MySQL 配置以增加缓冲池大小以消除大多数读取似乎解决了该问题。

所以问题在于驱动器太忙,它们无法处理 DRBD 想要交给它们的大量重新同步工作。

答案2

尝试强制同步速率

drbdsetup /dev/drbd0 syncer -r 100M

您还可以通过配置中的 syncer {} 进行重启后设置

答案3

您已经找到问题的根源 - 大量读取 IO。调整确实sndbuf-size有助于解决大量写入 IO(但会增加协议 A 模式下的异步性),rcvbuf-size可能对您的情况有所帮助。

但更好的解决办法是消除问题的根源。

更多的读取可能也与 DRBD 元设备有关(尽管我也期望在写入情况下有更多读取)。

相关内容