1. 程式人生 > >預熱Amazon EBS Volumes

預熱Amazon EBS Volumes

預熱Amazon EBS Volumes

問題描述及分析處理:

最近在做AWS Cloud從CentOS6.9升級到CentOS7.4.1708,系統上跑著oracle數據庫,數據量大概1.5T,準備了一個全新的CentOS7.4.1708 instance,


Oracle數據也都rman還原好了,然後對新的instance做AMI,再用這個AMI重新launch一個instance,這個instance起來之後,要添加oracle redo文件組,命令如下:


ALTER DATABASE ADD LOGFILE GROUP 1 ('/redo1/redo0101.log','/redo3/redo0102.log') SIZE 5000M BLOCKSIZE 512 REUSE;


執行的大約30min還沒有結束(測試環境5min執行完成),於是查看系統的負載情況,發現CPU,memory都沒有瓶頸,然後又看了一下磁盤IO,如下:


[root@ec2-xxx-01 ~]# sar -d 1 5
Linux 3.10.0-693.17.1.el7.x86_64 (ec2-xxx-01) 05/13/2018 _x86_64_(8 CPU)
07:02:55 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
07:02:56 AM  dev259-0     58.00  14336.00      0.00    247.17     30.06    514.72     17.24    100.00
07:02:56 AM  dev259-1     72.00  17408.00     64.00    242.67     33.00    464.58     13.89    100.00
07:02:56 AM  dev259-2      2.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:02:56 AM  dev259-3      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:02:56 AM  dev259-4      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:02:56 AM  dev253-0      4.00      0.00     64.00     16.00      1.00    260.50    250.00    100.00

07:02:56 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
07:02:57 AM  dev259-0     47.00  11264.00      0.00    239.66     30.15    559.83     21.28    100.00
07:02:57 AM  dev259-1     86.00  20480.00     96.00    239.26     32.87    412.72     11.63    100.00
07:02:57 AM  dev259-2      3.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:02:57 AM  dev259-3      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:02:57 AM  dev259-4      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:02:57 AM  dev253-0      6.00      0.00     96.00     16.00      1.00    227.50    166.50     99.90

07:02:57 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
07:02:58 AM  dev259-0     54.00  13312.00      0.00    246.52     30.31    681.20     18.52    100.00
07:02:58 AM  dev259-1     63.00  15360.00     64.00    244.83     33.41    466.29     15.87    100.00
07:02:58 AM  dev259-2      2.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:02:58 AM  dev259-3      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:02:58 AM  dev259-4      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:02:58 AM  dev253-0      4.00      0.00     64.00     16.00      1.41    225.25    250.00    100.00


有兩塊盤磁盤的使用率%util是100%,await也高達681,tps即相當於iops還不到100,這可是AWS instance_type為m5.2xlarge的實例,AWS的EBS不可能這麽差吧,當時就比較疑惑,難道AWS也這麽水,


於是上AWS網站上面查找原因,最後發現,從snapshot還原的磁盤,需要initialization(即預熱pre-warming),新建的instance卻不需要initilization。


據AWS說,沒有initilizaion的磁盤性能會下降50%。那麽該如何預熱EBS呢?AWS也給出了處理方法,使用系統自帶的工具dd或者第三方磁盤IOPS測試工具fio.這裏不再詳細講述如何預熱磁盤,本文主要是想告訴大家 AWS snapshot還原的


EBS,需要提前預熱,否則性能會下降很多,如果讀者有興趣,可以參考如下AWS鏈接了解如何預熱.


參考鏈接:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-initialize.html


預熱Amazon EBS Volumes