热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

CentOS下阿里云SSD云盘性能测试

由于服务器需要高并发高IO,所以入手了阿里云的SSD云盘+IO优化的ECS实例。阿里云SSD云盘:单盘最高提供20000随机读写IOPS、256MB/s吞吐量的存储性能。采用分布式三副本机制,提供99.9999999%的数据可靠性。SSD云盘基于全SSD存储介
由于服务器需要高并发高IO,所以入手了阿里云的SSD云盘+IO优化的ECS实例。

 

   阿里云SSD云盘:单盘最高提供20000随机读写IOPS、256MB/s吞吐量的存储性能。采用分布式三副本机制,提供99.9999999%的数据可靠性。

 

    SSD云盘基于全SSD存储介质、利用阿里云飞天分布式存储技术,提供数据可靠性99.9999999%的高性能存储;该产品具备以下特点: 

 

高性能:单个SSD云盘最高提供20000随机读写IOPS、256MB/s吞吐量的存储性能
高可靠性:SSD云盘采用分布式三副本机制,提供99.9999999%的数据可靠性;
每GB提供30 IOPS:SSD云盘采用每GB空间30个IOPS的策略,30GB的SSD云盘拥有900 IOPS的性能、100GB的SSD云盘拥有3000 IOPS的性能、667GB的SSD云盘拥有最高20000 IOPS的性能
单块SSD云盘容量:单块SSD云盘最大提供1024GB存储空间;

 

    【SSD云盘和本地SSD盘 、普通云盘有啥区别? 】
如您对IO性能要求高、同时对数据可靠性要求也高,建议您选择SSD云盘,详细对比如下: 

 

    【为什么我购买的SSD云盘性能效果不明显?】 
    SSD云盘采用每GB空间30个IOPS的策略,30GB的SSD云盘拥有900 IOPS的性能、100GB的SSD云盘拥有3000 IOPS的性能、667GB的SSD云盘拥有最高20000 IOPS的性能
    如果SSD云盘在用户原有的ECS实例上使用,性能最多能发挥出1000 IOPS的能力;如果想要1000以上的IOPS性能,SSD云盘必须与I/O优化的实例配合使用;

 

    购买后,我该如何测试磁盘性能? 
linux环境使用FIO做性能测试,测试命令:
fio -direct=1  -iodepth=64  -rw=randwrite  -ioengine=libaio  -bs=16k  -size=10G  -numjobs=1  -runtime=1000  -group_reporting  -name=/storage/iotest

这段测试的含义是测试随机写,每次写入大小16K,文件大小为10G,ioengine=libaio,运行1000秒(runtime),跳过buffer,其中 -name 指向到你想测试的磁盘上的文件。
上面这点代码比较耗时,我们可以缩减测试文件的大小和运行时间,改为:
fio -direct=1  -iodepth=64  -rw=randwrite  -ioengine=libaio  -bs=16k  -size=256M  -numjobs=1  -runtime=100  -group_reporting  -name=/storage/iotest

 

    下面以20G的ssd云盘(系统默认盘)测试,每秒写速bw=9456KB/s,IOPS=591。

    下面以50G的ssd云盘测试,每秒写速bw=23731KB/s,IOPS=1483。确实如介绍的那样每1GB空间30个IOPS,50G就是50x30=1500IOPS:

 

    我们再对比下购买阿里云的普通云盘的性能  bw=16284KB/s, iops=1017 :

    普通云盘的性能 和磁盘大小无关,一般固定在16MB/s吞吐量、1000IOPS随机读写上下。

 

    我们再来对比下腾讯云的普通云硬盘的性能,每秒写速bw=41341KB/s,IOPS=2583:

    我只能呵呵了,腾讯云的普通云硬盘达到了2500随机读写IOPS、41MB/s吞吐量,是阿里云普通云盘的性能的2倍以上。

 

    然后,我们来看一下腾讯云最新推出的高IO版本的服务器情况(测试默认系统8G ssd盘):

    腾讯云的高IO版本硬盘达到了1.8万随机读写IOPS、300MB/s吞吐量!

 

    再看腾讯云高IO版的500G硬盘(ssd盘):

    达到了6.3万随机读写IOPS、998MB/s吞吐量!

 

    注意,新的磁盘需要先挂载:Linux VPS如何挂载硬盘

 


windows环境下使用AnvilPro工具做性能测试; 

 

也许有人说最高提供20000随机读写IOPS、256MB/s吞吐量的存储性能 也不咋样啊?

 

飘易就举例说明下:我们家用机械盘在小I/O情况下,读写时随机IOPS也就是80~100左右、吞吐量10MB/s左右;如果是拷贝大的压缩包时,由于有OS的pagecache,吞吐量能达到100MB/s以上,但这只能是拷贝大应用时,对于企业级应用根本达不到这样。

 

    为什么我用FIO测试性能时,会导致实例宕机?     
     FIO这个测试工具支持裸盘分区、文件系统两种方式测试I/O性能;如果是直接测试裸盘分区,可能导致裸盘分区中的文件系统元数据被破坏掉,访问该裸盘分区中的文件时会失败,导致实例宕机;使用FIO的文件系统方式测试性能时,不存在上述问题,因此我们推荐使用FIO文件系统的方式测试I/O性能; 

 


    【补充:】
dd命令测试硬盘的读写速度
写速度:
time dd if=/dev/zero of=/var/test bs=8k count=1000000

读速度:
time dd if=/var/test of=/dev/null bs=8k count=1000000

 
    FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。 
    一,FIO安装 
wget http://brick.kernel.dk/snaps/fio-2.0.7.tar.gz 
yum install libaio-devel 
tar -zxvf fio-2.0.7.tar.gz 
cd fio-2.0.7 
make 
make install
 

 

    二,随机读测试: 
随机读: 
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=200G -numjobs=10 -runtime=1000 -group_reporting -name=mytest 

说明: 
filename=/dev/sdb1 测试文件名称,通常选择需要测试的盘的data目录。 
direct=1 测试过程绕过机器自带的buffer。使测试结果更真实。 
rw=randwrite 测试随机写的I/O 
rw=randrw 测试随机写和读的I/O 
bs=16k 单次io的块文件大小为16k 
bsrange=512-2048 同上,提定数据块的大小范围 
size=5g 本次的测试文件大小为5g,以每次4k的io进行测试。 
numjobs=30 本次的测试线程为30. 
runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。 
ioengine=psync io引擎使用pync方式 
rwmixwrite=30 在混合读写的模式下,写占30% 
group_reporting 关于显示结果的,汇总每个进程的信息。 
此外 
lockmem=1g 只使用1g内存进行测试。 
zero_buffers 用0初始化系统buffer。 
nrfiles=8 每个进程生成文件的数量。 

 

顺序读: 
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest 

随机写: 
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest 

顺序写: 
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest 

混合随机读写: 
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=100 -group_reporting -name=mytest -ioscheduler=noop
 

 

【参考】
SSD云盘+ECS(IO优化): http://bbs.aliyun.com/read/241167.html
linux 使用FIO测试磁盘iops :http://blog.itpub.net/26855487/viewspace-754346/
推荐阅读
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
author-avatar
mobiledu2502912277
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有