知识库 : 如何对大数据集群服务器进行磁盘读写性能测试

一、背景介绍

我们在日常开发过程中会经常使用基于虚拟机技术的虚拟服务器来进行环境搭建和程序调试,由于虚拟服务器的底层磁盘是建立在分布式文件系统之上的,如果分布式文件系统或磁盘硬件出现故障,会直接影响集群的运行速度和稳定性。所以,测试系统磁盘的读写性能就成为了系统环境准备和验证的一个重要环节。

那么,如何来对系统磁盘的读写性能进行测试呢?

二、测试环境介绍

以我曾经遇到过的一个真实情况举例,我准备搭建一个大数据集群环境,分配了6台虚拟服务器作为大数据集群的各个节点。

节点列表如下:

172.20.0.86  dev16

172.20.0.87  dev17
172.20.0.89  dev18
172.20.0.90  dev19
172.20.0.92  dev20
172.20.0.93  dev21
大数据集群环境搭建完成后,我在进行大数据的相关测试时发现,这6台服务器中有几台服务器的性能不正常,经过对服务器进行磁盘数据写入测试后发现仅有一台服务器的磁盘写入速度基本正常,有四台服务器的磁盘写入有严重问题,写入速度仅为正常值的10%,一台服务器的写入速度为正常值的60%。

集群各节点的其他数据基本正常,所以基本可以将问题定位为磁盘写入异常,下面让我们一起来看一下如何对磁盘的性能进行测试。

三、测试方法介绍

测试原理:使用Linux命令向磁盘中写入1G测试数据,记录写入数据的时间及每秒的平均写入数据量,根据这两个数据对服务器进行横向比较。

测试硬盘纯粹写入的命令为:time dd if=/dev/zero of=/test.dbf bs=64k count=16k

这条命令会在磁盘根目录创建一个名为test.dbf的文件,并持续向文件中写入数据,写入完成后会通过time命令计算总的写入时间,以及每秒写入的数据量。

测试硬盘纯粹读的命令为:time dd if=/test.dbf of=/dev/null bs=64k count=16k

这条命令会从test.dbf文件中读取数据,并将数据写入/dev/null,并不产生磁盘写操作,所以测试结果可以视为纯粹读取所消耗的时间。

 

使用上述命令对我的测试集群节点分别测试后,得到测试结果如下:

dev16: 18.8439 秒,57.0 MB/秒
dev17: 420.648 秒,2.6 MB/秒
dev18: 120.325 秒,8.9 MB/秒
dev19: 130.475 秒,8.2 MB/秒
dev20: 111.198 秒,9.7 MB/秒
dev21: 12.3676 秒,86.8 MB/秒

我在我个人电脑的虚拟机上测试的结果为用时13秒,每秒81.8M。只有dev21与这个数据接近。

根据以上测试结果可以看到,dev17、dev18、dev19、dev20的磁盘读写性能均严重偏离正常值,存在明显问题。其中一台服务器的测试情况截图如下:

四、总结

现在定位了出现问题的服务器,就可以对该服务器进行检查,会导致类似问题出现的原因会有很多种,比如:分布式文件系统网络传输过慢、磁盘硬件出现故障、虚拟机的宿主服务器负载过高等等。

在确定了导致问题的原因之后,才能逐一对存在的问题进行解决,一般情况下可能会需要跟运维工程师和网络工程师一起排查问题。

大数据集群在磁盘写入性能和网络传输性能等方面都有较高要求,希望这篇文章能够对大家在搭建大数据集群时排查问题提供一些帮助。

 

 

Attachments: