DigitalOcean VM上的高IO等待时间

过去一年,我有一台运行Jenkins的DigitalOcean虚拟机,没有任何问题。 本周突然出现问题。

它开始于那一天,我注意到一些与apt相关的进程(我认为apt-check )挂起了100%的CPU使用率。 我重新启动机器,事情恢复正常。

但是,现在机器已经基本上变得不可用了。 SSH很慢,我几乎不能访问Jenkins的Web界面。 所以,我开始挖掘,看看是什么造成的问题。

检查IO使用情况

我注意到的最重要的事情是,当我的一个Jenkins工作正在运行时,IO利用率一直达到100%。

在这里输入图像说明

好吧,那有点奇怪。 我继续在机器上安装iotop,并看看是什么使用这么多的IO。 只是运行iotop没有显示太多。 但是,当我运行iotop --accumulated我注意到jbd2导致了很高的IO等待时间,却没有做太多的工作(几乎没有读/写操作)。

在这里输入图像说明

写testing

因此,我继续前进并进行了一些testing(closuresJenkins之后),以测量机器上的实际读/写性能。 阅读很好,但是写作很奇怪。

 root@jenkins:~# dd if=/dev/zero of=/tmp/output bs=1G count=1 1073741824 bytes (1.1 GB) copied, 271.903 s, 3.9 MB/s 

使用SSD存储的DigitalOcean VM似乎非常慢。 但是,为了确保我使用相同的规格(1G 30GB AMS3)运行相同的testing:

 root@gitlab:~# dd if=/dev/zero of=/tmp/output bs=1G count=1 1073741824 bytes (1.1 GB) copied, 36.9623 s, 29.0 MB/s 

很明显,jenkins机器有点奇怪。 对我来说,这感觉就像一个硬件问题(一些非常轻的谷歌search关于jbd2 io等待时间提到的RAID问题)。

闲聊一夜

机器一直闲置过夜,没有jenkins跑步。 IO利用率不断波动(10-50%),并且我看到apt进程的CPU使用率很高。 不知道这是否相关。

在这里输入图像说明 在这里输入图像说明

新的虚拟机(从快照)

作为最后的testing,为了testing硬件问题,我现在也从我的jenkins机器的快照中创build了一个新的虚拟机。 目前看来,新的虚拟机工作正常(jbd2不会导致高的IO等待时间 – 闲置时或当jenkins工作正在运行)。

在这里输入图像说明

结论

难道这确实是老jenkins VM的硬件问题吗? 我也会联系DigitalOcean,看看他们在说什么。 这一切似乎有点令我担心。

更新

DigitalOcean已经确认主机节点正在经历高I / O负载。 我担心,(我假设)一个不同的客户可能会导致我的液滴变得无法使用。 但是,然而,我的液滴迁移到不同的主机,现在事情已经恢复正常。