Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Amazon RDS移行のための 性能検証でわかった2つのこと

Amazon RDS移行のための 性能検証でわかった2つのこと

日本MySQLユーザ会(MyNA会) 2021年07月 -下位レイヤ勉強会- での発表資料です。

Kenichi Takahashi

July 09, 2021
Tweet

More Decks by Kenichi Takahashi

Other Decks in Technology

Transcript

  1. 2 自己紹介 GMOペパボ EC事業部 シニアエンジニアリングリード 髙橋 健一 @kenchan • RubyとAgileなソフトウェア開発が好きなソフト

    ウェアエンジニア • https://twitter.com/kenchan • https://diary.shu-cream.net • 最近はGUILTY GEAR -STRIVE-で9層と10層 を行ったり来たりしてます
  2. 5 移行対象のデータベースの規模やスペック • Primary * 1 • Intel Xeon 24コア

    • SSD 1.4TB • memory 240GB • Replica * 4 • Intel Core Processor 24~48コア • NVMe 1.4TB • memory 240~365GB • 用途によってスペックの差異有り GMOペパボが運営するとあるWebサービスのメインDB
  3. 9 わかったこと1: ファーストタッチペナルティの解除方法は 2つ • ディスクの全ての領域に一度触ることが必要 • EC2ではddで書き込むなどの方法がある • 「全て」

    is 何 • RDS for MySQLではプライマリインデックスと セカンダリインデックス ファーストタッチペナルティを解除するためには(1) mysql -sse "SELECT distinct table_name, index_name FROM information_schema.statistics WHERE table_schema = 'YOUR_DATABASE_NAME'" | while read table index ; do mysql -sse "SELECT count(*) FROM $table FORCE INDEX($index)" YOUR_DATABASE_NAME > /dev/null & done https://diary.shu-cream.net/2021/04/02/RDS%20for%20MySQLのファーストタッチペナルティを解除する 3ライナー.html
  4. 10 わかったこと1: ファーストタッチペナルティの解除方法は 2つ • ディスクの全ての領域に一度触ることが必要 • ストレージタイプの変更は強制的にディスク全体を読み込むことになる • io1で運用するなら、まずは

    gp2で復元してからストレージタイプを変更することで全てのデータ を読み込むことになり、ファーストタッチペナルティを解除できる • クエリでの解除とストレージタイプの変更、両方の時間を計測するとよいかも ファーストタッチペナルティを解除するためには(2)
  5. 11 わかったこと1: ファーストタッチペナルティの解除方法は 2つ • Amazon RDSではEBSの技術を使っているためにバックアップから復元した直後は十分な IO性能が出ない • ファーストタッチペナルティを解除するには全てのデータ領域を触ることが必要

    • RDS for MySQLではプライマリとセカンダリ両方のインデックスを触る必要がある • ストレージタイプの変更でもファーストタッチペナルティの解除ができる ファーストタッチペナルティについてわかったこと
  6. 13 わかったこと2: Multi-AZではシングルスレッドのIO性能に限界がありそう • 現行Primary -> 現行Replica -> RDS Primary

    -> RDS Replicaという多段レプリケーショ ンを組んでいる • RDS Primaryは可用性確保のためにMulti-AZにしたい 今回の移行計画をあらためて確認 Multi-AZに なりたい!
  7. 17 わかったこと2: Multi-AZではシングルスレッドのIO性能に限界がありそう • 起きている現象のまとめ • Multi-AZのRDS Primaryに多段レプリケーションを組むと IO性能が出ずにレプリケーション遅 延が起きる

    • Single-AZのRDS Primaryでは期待するIO性能がでる • Multi-AZでも負荷試験では性能が出ているように見える • レプリケーションと負荷検証の違いは MySQLの書き込みスレッド数 • レプリケーションの書き込みは 1スレッドで行われる • 負荷試験は並列にクエリを流すので複数スレッドで書き込みが行われる • Multi-AZ環境では1スレッドあたりの書き込み性能に限界がある? なぜMulti-AZにしたRDS PrimaryのWrite IOPSが頭打ちするのかの仮説
  8. 20 まとめ • ファーストタッチペナルティを解除するには全ての領域に触る必要がある • プライマリインデックスとセカンダリインデックスの両方を読み込むこと • ストレージタイプを変更して解除することもできる • Multi-AZではシングルスレッドでの書き込み性能限界があるようにみえる

    • RDS外からレプリケーションを組むときに注意しよう • ストレージタイプに関係なく 500 IOPS前後に限界があるようにみえる • AWSのサポートにも問い合わせたが、検証期間中には原因究明に至らなかった • 具体的な移行プロセスなどの今回紹介できなかった内容はペパボテックブログで公開予定 です!!1 RDS移行のための性能検証でわかったこと・気づいたこと