集群中 Linux 机器的 IOP 和吞吐量下降

集群中 Linux 机器的 IOP 和吞吐量下降

我们在 AWS 上有一个基于 Linux 的集群,其中有 8 个工作程序。

操作系统版本(取自 /proc/version)是:

Linux 版本 5.4.0-1029-aws (buildd@lcy01-amd64-021) (gcc 版本 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #30~18.04.1-Ubuntu SMP 2020 年 10 月 20 日星期二 11:09:25 UTC

最近添加了工作程序 ID 5,我们发现的问题是,在由于工作程序的写入突发而导致磁盘利用率较高的时候,挂载到该工作程序的数据目录 (/dev/nvme1n1p1) 的磁盘在 w/sec 和 wMB/sec 方面的性能会下降,与其他 7 个工作程序相比,该工作程序的性能要低得多(该代理的 iops 和吞吐量减少了约 40%)。

该表中的数据是通过在所有代理上运行 iostat -x 获得的,运行时间相同,在高峰时段 3 小时后结束。集群每秒处理约 200 万条消息。

另一个奇怪的行为是,与其他代理相比,代理 ID 7 在写入突发期间的 iops 和吞吐量大约高出 40%。

工作器类型为 i3en.3xlarge,配备一个 7.5TB nvme ssd。

知道什么原因会导致工作者 ID 5 的性能如此下降(或者代理 ID 7 的性能如此好)吗?

该问题导致该集群的消费者在高写入期间滞后,因为工作器 ID 5 进入高 iowait,并且如果某些消费者读取进入滞后并从磁盘执行读取,则工作器 ID 5 上的 iowait 将攀升至~70%,并且所有消费者都开始滞后,并且生产者还会由于代理不接受的缓冲消息而获得 OOM。

在此处输入图片描述

相关内容