前些天在为朋友的系统搭建测试线时,发现目前所用的服务器环境(阿里云)的磁盘读写速度与我自己的资源池磁盘速度存在明显差异,正巧从阿里云RDS下载的数据库备份文件是10GB,而且两边都有这同一个文件,于是简单试下cp命令要多久才能完成:
在我自己的资源池环境中,将此文件cp一份的操作耗时约19-20秒(速度较快于是多试了几次)
在阿里云ECS中,将此文件cp一份的操作耗时约53-62秒(只试了三次,平均57秒,磁盘类型为SSD云盘)
登录阿里云查看该SSD云盘,发现IOPS是16800,而我的资源池中SSD的IOPS为50000,所以这是一个诚实的数字,与以上cp测试的性能几乎是等比例的。
本次搭建测试线既可以避免直接在正式线开发调试,也是为了后期能够调整部署架构,同时在不突增成本的情况下获得更高的性能,但其实数据库更应该注重这一点。
在阿里云RDS控制台上还看到,每次物理备份耗时接近10分钟,而逻辑备份速度肯定是比物理备份速度更慢的,但我在导入到自己的云服务器上之后进行逻辑备份竟然只要了3分40秒,难道是阿里云将数据备份存储为*_qp.xb这个过程过于耗时?也许有关系,但我认为压缩过程是在cpu和内存之间进行的,速度瓶颈应该还是在磁盘上。
那是不是能说明我自己的资源池中的磁盘性能就优于阿里云的磁盘性能呢?当然不是,原因在于我的资源池中没有使用到低性能的磁盘,目前只有一种选择:全是IOPS=50000的高速SSD,而阿里云磁盘的IOPS选择比较多,从数百(普通云盘),到几千(高效云盘)、几万(SSD云盘)、几十万甚至几百万(ESSD云盘和本地SSD)都有,所以我能与之相比的只有性价比了。
不过阿里云磁盘的IOPS只是理论值,除了受限于数据块大小和实例本身吞吐瓶颈等,更受限于钱包啊,有兴趣的可以在自己阿里云服务器上增加一块高IOPS的磁盘,坐稳扶好后再看看价格。
当然了,我希望会有越来越多的人有机会和实力使用超高IOPS的磁盘,我自己也为之努力。同时,我认为通过架构演进避免系统整体性能受单盘性能影响也是非常重要的,毕竟没有哪一种设备的性能指标可以在单台上无限增长。除非是技术革新,否则在均值之上不断提升性能是越来越难的,而带来的成本增加却是指数级的。