选购云主机时我们会考虑很多因素,像CPU,内存,磁盘I/O,网络是不是BGP等。其中大部分因素都可以直接量化,比如几核CPU,几M带宽在购买时就能直接选择。但是磁盘I/O是你看不到但是直接影响云主机性能的参数。
我们拿到云主机后第一件事通常都会测试下磁盘I/O,最常用并且较专业的工具就是hdparm,基本所有Linux系统都自带该工具。下面说说测试方法:
一.查看我们的硬盘分区挂载情况
首先我们要查看硬盘分区与挂载情况,由于云主机挂载磁盘是动态的(国内大部分云还停留在需要重启服务器阶段),所以我们执行命令看到的情况可能会有些差异,不过不会影响测试;
1 | df -h |
执行上面命令能查看我们的磁盘挂载情况,找到最大的那个就对了,比如我的磁盘就是”/dev/xvda2”,如果挂载了多个磁盘,都测试一遍就行。
二.测试磁盘I/O
hdparm功能非常强大,这里我们只用来测试磁盘读速度。我将用最简单的参数和命令。
1 | $ sudo hdparm -Tt /dev/xvda2 |
Timing cached reads 是缓存区的读取速度,Timing buffered disk reads是非缓存区的读取速度,我们测试的时候通常更关心非缓冲区的速度,60.26MB/sec在云主机中属于偏低了。阿里云通常是50MB,腾讯云通常是70MB。当然测试结果肯定有误差,但大体上能体现真实情况。我们一般会测试多次取平均数。
三.测试磁盘I/O工具介绍
为了方便大家测试自己的云主机磁盘I/O情况,我写了个一键执行工具,欢迎大家使用并提出意见;
1 | $ sudo wget https://raw.githubusercontent.com/laynefyc/php_thread_demo/master/hdparm_avg.sh -O -|sudo sh |
四.测试磁盘I/O总结
hdparm在某些主机上可能测试结果很惊人,比如低于10MB或者大于90M(非SSD高速硬盘),都属于不正常的数据。可以再通过其他测试工具试试。不过我在国内几家主流的云主机的测试结果都是相对准确的。