SlideShare una empresa de Scribd logo
1 de 90
ioDriveの
世界へようこそ
     2012/08/27
第2回 ioDrive+MySQL勉強会

 外道父@GedowFather
                 Copyright © DRECOM Co., Ltd All Rights Reserved.   1
自己紹介


       Copyright © DRECOM Co., Ltd All Rights Reserved.   2
自己紹介

■私は
    外道父@GedowFather
■所属
    ドリコム
■職種
    インフラエンジニア
■ブログ
   http://blog.father.gedow.net/
                        Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                           3
目 次


      Copyright © DRECOM Co., Ltd All Rights Reserved.   4
目次


     1. ioDriveを使う理由
     2. サーバ構成
     3. キャパシティの計測
     4. IOPSの次の敵
                 Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                    5
WARNING !!




  この資料にはioDriveを褒め称
  える表現が多く含まれています

  全て事実に基づくものであり、
  ステマの類ではありません

              Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                 6
ioDriveを
 使う理由

       Copyright © DRECOM Co., Ltd All Rights Reserved.   7
ioDriveの基本性能や運用について




 ブログに書いてあります
http://blog.father.gedow.net/category/hardware/iodrive/




                                     Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                                        8
ioDriveのおさらい
  200,000 IOPS
                       Access Latency 26µs

        速い
めっちゃ                                   全っ然

     write 数TB / Day        壊れない
 性能の割に                                Warranty 数十年


    高くない
                          100~300万円
                               Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                                  9
IOPSが凄い!


      Copyright © DRECOM Co., Ltd All Rights Reserved.   10
IOPSが凄い!
速い
SAS 15,000 rpm × 6
     RAID10
  1,000 IOPS

                 ioDrive
            200,000 IOPS
                以上
                     Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                        11
IOPSが凄い!
速い
  UPDATE1,000 QPS
1,000 IOPS   200,000 IOPS



iowait 80%      iowait 3%


                Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                   12
IOPSが凄い!
速い

圧倒的パワー
 IOPS限界を
解決することで

iowaitを激減!
             Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                13
Access Latencyが凄い!



             Copyright © DRECOM Co., Ltd All Rights Reserved.   14
Access Latencyが凄い!
速い

       3ms

     その差100 倍

      30µs
              Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                 15
Access Latencyが凄い!
速い
      2,000 QPS
3ms              30µs


iowait 15%     iowait 2%以下



                Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                   16
Access Latencyが凄い!
速い

圧倒的スピード
       CPUとの往復時間を
         短くすることで

            常時
       iowaitを激減!
            Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                               17
圧倒的パワー
   圧倒的スピード
        ザ・ワールド

        世       界
ioDriveの世界へ入門
           クエリが
       止まって見えるぜ Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                   18
耐久年数が凄い!



      Copyright © DRECOM Co., Ltd All Rights Reserved.   19
壊れない        耐久年数が凄い!


  ioDrive
160GB SLC
書き込み平均
75PB まで
  write 10TB / Day
                   ・・・?
  耐久年数 20.5年
              Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                 20
壊れない     耐久年数が凄い!

           参照 平均
           3,000 QPS
           更新 平均
            300 QPS

書き込み平均
 10 MB/秒
            Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                               21
壊れない      耐久年数が凄い!

       書き込み平均
        10MB × 86400秒

        864GB / 日
       耐久年数
        75PB ÷ 864GB ÷ 365日

        237年
  ioDriveは砕けない
            Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                               22
費用対効果が高い!



       Copyright © DRECOM Co., Ltd All Rights Reserved.   23
高くない            費用対効果が高い!

SAS 15,000 rpm 300GB
  RAIDコントローラー
    30~40万円
   (1,000 IOPS)

                  ioDrive
             100~300万円
            (200,000 IOPS以上)
                       Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                          24
高くない               費用対効果が高い!


30~40万円      価格差       100~300万円


             4~5倍


1,000 IOPS    IOPS差    200,000 IOPS

             200倍以上
                        Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                           25
サーバ台数の削減



      Copyright © DRECOM Co., Ltd All Rights Reserved.   26
サーバ台数の削減

1,000 IOPS    IOPS差   200,000 IOPS

             200倍以上

             といっても、

    実際にはどのくらいの
  サーバ台数を削減できるのか?
                      Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                         27
Before
   Max CPU : 1,600%
   Max IOPS : 1,000
         1台当り
         CPU         : 500%
         IOPS        : 800
8台構成
         合計
         CPU         : 4,000%
         IOPS        : 6,400
                Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                   28
After          必要合計スペック
                  CPU                  : 4,000%
                  IOPS                 : 6,400
        Max CPU : 1,600%
        Max IOPS : 200,000
CPU視点で必要な台数
4000% ÷ 1600%
   3台
                                         削
IOPS視点で                                  減
6,400 ÷ 200,000
   1台
                         Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                            29
After               その他の要素

             1台当り
             CPU    : 1,300%
 3台構成        IOPS   : 2,100

CPUとIOPSをメインで考えるが、さらに
    CPUがギリギリ
    記憶デバイスの容量
    メモリ容量
    可用性/負荷分散 構成
などを元に数ヶ月後を見据えた台数にする
                    Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                       30
サーバ構成


    Copyright © DRECOM Co., Ltd All Rights Reserved.   31
MySQLサーバ


  MySQL Community Server
          5.5.x



 Percona Server with XtraDB
           5.5.x

                   Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                      32
Percona Server の特徴

 MySQLのForkである
 性能面/機能面で劣ることはない
 マルチコアCPU・同時アクセスI/Oに配慮
 効率的なバックアップ/その他周辺機能
 本家に1~2ヶ月程度の遅れでリリース
 マニュアルが整備されている
 各種OS用のパッケージを配布
                     Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                        33
Percona Server

    Percona Server を
    使わない理由がない




                 Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                    34
並列処理やI/Oの設定
  ~ my.cnf ~


               Copyright © DRECOM Co., Ltd All Rights Reserved.   35
XtraDBです
  default-storage-engine = InnoDB

  表示上は今までどおり InnoDB ですが、
  中身は XtraDB になっています。
    mysql> SHOW ENGINES ¥G
    ********************** 9. row **********************
    Engine       : InnoDB
    Support      : DEFAULT
    Comment      : Percona-XtraDB, Supports transactions,
                   row-level locking, and foreign keys
    Transactions : YES
    XA           : YES
    Savepoints : YES

   全テーブルをInnoDBにしてPerconaの恩恵を受けましょう
   MyISAMがあるとバックアップでロックが入ってしまいます

                                               Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                                                  36
よく知られた設定

  innodb_flush_method = O_DIRECT

 OSによるバッファリングを抑制し、MySQLとOSによるダ
 ブルバッファリング状態を防ぎ無駄を省きます


  innodb_flush_log_at_trx_commit = 2

  ログファイルへの書き出しをCOMMIT毎、データファイルへ
   の書き出しを毎秒にすることでフラッシュ効率を上げます
  よほど安全にしたいなら 1ですが遅いです
  0 はリスクが上がる割に効果が薄いので使いません



                            Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                               37
Disk I/O

   innodb_io_capacity = 40000
   デバイスのIOPS上限を設定できます
   実運用では 10,000台がせいぜいですが、上限を設ける理由
    もないので、それ以上にします


   innodb_read_io_threads = 8
   innodb_write_io_threads = 16
   読み書きの同時スレッド数
   ioDriveの24+1チャネル に合わせたが…
   デフォルトはどちらも 4


                               Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                                  38
CPUスレッド

  innodb_thread_concurrency = 0

  並列処理するCPUのスレッド数です
  0 は上限なしを意味します
  1以上を指定するとそのスレッド数でしか動かないので、1ス
   レッドは空けておきたい、という時に使えなくもないです


  thread_concurrency = 16

  Solaris特有のもの
  5.6.1で廃止される
  innodb_thread_concurrency を使いましょう

                                Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                                   39
ディスクフラッシュ – チェックポイント
 innodb_adaptive_flushing = true
 innodb_adaptive_flushing_method = keep_average


 従来のInnoDBの場合、ログファイルからのフラッシュ間隔が
  結構長くなります
 そのため、ある程度まとめてデータを書き込むため瞬間的に高
  いIOPSを必要とし、それが原因でiowaitが高騰します
 keep_average にすると、0.1秒間隔となり、緩やかな
  iowait になり、デメリットも見受けられません
 主にSSDやioDrive用として追加されましたが、HDDでも使っ
  てみてよいと思います


                                Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                                   40
ディスクフラッシュ – 隣接ページ


  innodb_flush_neighbor_pages = none



  デフォルトのareaの場合、フラッシュしようとするページの
   隣接したページもある程度まとめて書き込もうとします
  HDDの場合は効率が上がる可能性があります
  ランダムアクセスのコストが小さいioDriveでは余計な機能と
   なり、外したほうが効率が上がる可能性があります




                               Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                                  41
ログファイル



  innodb_log_block_size = 4096

  ioDriveを、MySQLにおいてパフォーマンスが良いとさ
   れる4Kbyteでフォーマットした場合、合わせることで
   性能が若干向上します
  ただし雀の涙程度なので、途中から変えるほどではなく、
   最初からできるならしておこう、程度です




                                  Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                                     42
Atomic Write



           Copyright © DRECOM Co., Ltd All Rights Reserved.   43
Atomic Write

   新機能

   絶賛開発中
   Double Write の代替
   2度書き込む必要が無いようにioDrive側で保証する
   アクセス速度の向上、ioDrive寿命が倍


  (参考資料)
  Tuning For Speed: Percona Server and Fusion-io
  http://www.slideshare.net/fusionio/tuning-for-speed-percona-server-and-fusionio


                                                           Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                                                              44
バックアップ



     Copyright © DRECOM Co., Ltd All Rights Reserved.   45
XtraBackupでバックアップ

  別途パッケージでインストール
  クエリベースではなくデータファイル丸ごとの形


    デメリット              メリット

                    InnoDBのみの場合、
  mysqldumpよりバッ     ロックを必要としない
   クアップ容量が大きい       差分バックアップや
  mysqldumpより取得     tarストリーミング出
   に時間がかかる           力など多機能
                    リストアが速い

                       Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                          46
レプリケーション



      Copyright © DRECOM Co., Ltd All Rights Reserved.   47
Semi-Synchronous Replication

            SLAVEでの relay-log 保存を
   CLIENT
            確定してからCOMMIT完了と
            する例のアレ
            ack
  MASTER          SLAVE
            log


    目的
  信頼度の高いバックアップ
  可用性担保のフェイルオーバー用

                          Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                             48
Semi-Syncが遅くなる理由

  MASTER ⇔ SLAVE のネットワーク往復
  SLAVEでのログ保存 Disk I/O
  IO_THREAD と SQL_THREAD の非分離
    非同期の場合は別スレッドで動作する
    Semi-Syncの場合は1スレッドで両方動作する


       SLAVE      I/O CPU      SQL CPU
                    40%         100%
       非同期
                 (Thread A)   (Thread B)
                    30%          70%
     Semi-Sync
                 (Thread A)   (Thread A)
                               Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                                  49
Semi-Syncを採用できる理由
    更新QPSは確実に低下するが・・・

 ベンチマーク例

 非同期         : 更新 12,000 QPS
 Semi-Sync   : 更新 7,000 QPS


 約40%の性能低下 は問題ではない
 更新 7,000 QPS が足りていればOK
                       Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                          50
クラスタ構成



     Copyright © DRECOM Co., Ltd All Rights Reserved.   51
turntable
     ①
              User01    User02      User03                      Other01
              ioDrive   ioDrive      ioDrive   ・・・                     SAS                     ・・・
    Active




              MASTER    MASTER      MASTER     ・・・                 MASTER                      ・・・

②
    Standby




               SLAVE     SLAVE       SLAVE     ・・・                   SLAVE                     ・・・



③
    予備




                        ioDrive                                         SAS


    ① 垂直/水平分割へ接続
    ② MASTER障害時にSLAVEが自動昇格
    ③ SLAVE不在時に自動的にSLAVE化
                                                Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                                                     52
① turntableで垂直/水平分割へ接続
                Gussan
                ドリコム所属
                activerecord-turntable 製作者
 (参考URL)
 Github
   https://github.com/drecom/activerecord-turntable
 SlideShare
   http://www.slideshare.net/drecom/activerecordturntable

  Ruby on Rails の Active Record で利用できる
   Shardingプラグイン
  テーブルの垂直分割だけでなく、行条件での水平分散
   ができる
                                             Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                                                53
② MASTER障害時にSLAVEが自動昇格


      VIP

     MASTER                 MASTER

                                   VIP
      SLAVE                 MASTER


 MASTERのVIPに影響あるほどの障害    VIPが移動して接続先が
 ローカル監視で障害と判断したら自動的       切り替わる
  にVIPを放棄                 フェイルバックは抑制

                          Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                             54
③ SLAVE不在時に自動的にSLAVE化

       VIP                           VIP

     MASTER                   MASTER


      ioDrive                     SLAVE


 MASTERが自身にSLAVEが無    予備機がバックアップファイル
  いことを確認する              からリストアする
 予備機に対してSLAVE化を要請     MASTER に START SLAVE

 ※1クラスタに1予備機は無駄なので、ioDrive/SASそれぞれ1台ずつ用意

                            Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                               55
その他の検討構成



      Copyright © DRECOM Co., Ltd All Rights Reserved.   56
その他の検討構成
        MySQL SPIDER
        要件によっては間違いなく便利だが、当時は効率を考えた時にいく
        つか不安になった
           更新クエリのたびに全台にXAトランザクションが発行される
           集約関数は一度行データを集めてから数えるので非効率

MySQL Cluster
 期待した性能は出なかった
 構築も運用も難しいため、エンジニア全員が
  身に付けるには敷居が高い


                MySQL Proxy
                 自動MASTER昇格や正しい参照分散ができる
                  LUAスクリプトを書いて楽しかった
                 小規模では有用だが・・・

                              Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                                 57
キャパシティの計測


      Copyright © DRECOM Co., Ltd All Rights Reserved.   58
計測条件

MySQLのベンチマークにおいて重要なこと
     クエリの種類(参照/更新)
     データの容量とメモリの容量
     データの性質
          4つの計測条件
 参照クエリ        データ容量 ≦ メモリ容量
 更新クエリ        データ容量 ≧ メモリ容量
 本番データ/本番クエリだからとやみくもにベンチマークをとっても、
 真のキャパシティは計測できません
                     Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                        59
CPUとIOPS



           Copyright © DRECOM Co., Ltd All Rights Reserved.   60
参照/更新クエリの必要性能

  データ容量 ≦ メモリ容量
    全データがメモリに収まる状況において


    参照クエリ    : CPU
    更新クエリ    : IOPS

    参照はIOPSを必要としない
    更新はWEBアプリだと主キー更新
     主体のためCPUは微量

                  Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                     61
先行するボトルネックを見極める

キャパシティ    MAX     My Limit
  CPU    1,600%    800%                 増設納期を
  IOPS    1,000    500                  考慮して半分
                  比較
  現在値    ピークタイム   あと何倍
  CPU     200%     4倍                                先に到達
  IOPS     100     5倍

 リクエストがあと4倍に増えたら増設手続きに
  入るという判断
 ioDriveの場合はIOPSの判断がほぼ不要になる

                         Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                            62
メモリとデータ容量



       Copyright © DRECOM Co., Ltd All Rights Reserved.   63
メモリの重要性 innodb_buffer_pool_size

           write IOPS しか発生しない

データ        100 GB
メモリ          128 GB
      参照   : 全てメモリから読み込まれる
      更新   : フラッシュのみwrite IOPSが発生する

  通常の write IOPS に加えて大量の read IOPS が発生

データ                200 GB
メモリ          128 GB                  72 GB 不足
      参照 : 72GB分はread IOPSが発生する
      更新 : 同上+フラッシュ時にwrite IOPS
                            Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                               64
LRUによるバッファプール管理

      innodb_buffer_pool_size

  よくアクセスするデータ          メモリ破棄予備軍

     YOUNG                OLD
    62% (5/8)           38% (3/8)
        アクセスされると戻る



                DISK
                                                                             破棄
      メモリになければ読み込まれ
       read IOPS が発生する
                          Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                              65
メモリとデータ容量にみる read IOPS
                                        アクセス頻度が高いデータ
                                        アクセス頻度が低いデータ

SAFE :   全データがメモリに格納されており read IOPS は発生しない
          young                       old
              disk data

WARNING :    デバイスに read IOPS が発生し始める
          young                       old
                    disk data


CRITICAL :   デバイスに頻繁な read IOPS が発生し始める
          young                       old
                          disk data

                                            Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                                               66
データの性質とは
                                    アクセス頻度が高いデータ
テーブルごとに考えてみる                         アクセス頻度が低いデータ


    User Item               History
例)アイテム数カウント           例)履歴データ
何年経過しても全データが対象        最新数十件しか必要ない

データ全体で考えてみる
頻繁に利用されるデータの割合が多いのか
                disk data
古い不要データによって総容量が増加しているだけなのか
                disk data

        後者ならばメモリ不足が許容されるが、
        この度合いを確実に知る術は無い
                            Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                               67
メモリ管理とデバイスごとの対応
    メモリからはみ出たデータの IOPS を
    確実には読めなく、被害大の可能性がある
       メモリの増設やサーバ分割により
       常にメモリに収めるのが確実

    メモリからはみ出たデータへのアクセスも
    アプリに影響ない程度の速度で動作をする
    場合が多い
        それなりに放置しても大丈夫
        メモリ管理の知識や緊張が薄くなる
        酷いクエリ/インデックスでも動く

『ioDriveは甘え』の所以
                Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                   68
暖機運転
MySQLの起動直後はいっさいメモリに載っていないため
メモリに載るまでレスポンスが遅くなる
       young           old
           disk data                最初は全てdiskから


       HTTPを再開する前に
       主要テーブルに全参照をかけて
       暖機運転をする必要がある

       diskアクセスでもHTTPが許容範囲で
       動作するほど速いため暖機運転は必要ない


 『ioDriveの恩恵』でOK
                        Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                           69
SQLの質



        Copyright © DRECOM Co., Ltd All Rights Reserved.   70
ioDriveは甘え

        IOPS限界が無い
        read I/O が発生しても致命傷にならない


  スキーマの質          確実に全て下がる
  インデックスの質
  クエリの質           開発力の低下
  必要
  開発ルールの整備
                                                                 堕
  自動的な質のチェック                                                    落
                     Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                        71
Generalistによる質の定量化
   外道父が書いた1枚のPHPスクリプト
   参照クエリ/更新クエリ/インデックスの
    質を数値化
   悪い順に並べたTSVデータ出力しエクセル
    で閲覧したり、snmpd用値を出力

     1時間に1度実行しておく
     general.log を採取
     クエリのユニーク化
     SHOW や EXPLAIN で色々取得
     外道父ルールで勝手に質を数値化
                       Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                          72
Generalist の 参照クエリ診断




   DQP(Dirty Query Points)が悪い順に解
    決していけばOK
   実際のクエリとEXPLAIN結果
   悪いと評価した項目とその度合い
                       Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                          73
Generalist の 更新クエリ診断




   DUP(Dirty Update Points)が悪い順に
    解決していけばOK
   更新行数や更新カラムの対象となるイン
    デックス数などから診断



                       Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                          74
Generalist の インデックス診断




    DIP(Dirty Index Points)が悪い順に
     解決していけばOK
    複合インデックスのCardinality効率など
     から診断

                       Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                          75
IOPSの次の敵


      Copyright © DRECOM Co., Ltd All Rights Reserved.   76
IOPSの次の問題は?
                IOPS

ioDriveの出現による          新時代の幕開け




  CPU       Network               Software
                        Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                           77
IPMI


       Copyright © DRECOM Co., Ltd All Rights Reserved.   78
ioDriveは暴れん坊?
   ioDrive搭載サーバで、サーバ起動時から
   何もしていないのにSystemCPUが50%

       50%




      新しく入れたioDriveを疑うのだ!
      ioDriveが悪いに決まってる!!
                  Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                     79
犯人はIPMIでした
  ipmitool パッケージの ipmiモジュールを
  削除したら解決しました(テヘペロ




     ioDriveが悪いわけないじゃない
     まだまだ信心が足りないわ!

                    Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                       80
NUMA


       Copyright © DRECOM Co., Ltd All Rights Reserved.   81
ioDriveは気まぐれ屋?
   ioDrive搭載サーバで、iowaitが急増したり
   グラフが虫食いになるほどの状態になる


  20~80%




      新しく入れたioDriveを疑うのだ!
      ioDriveが悪いに決まってる!!
                    Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                       82
あらゆる調査を行った
 aio       vmstat io_schedule
      iostat       strace pidstat
 mpstat                 top      lsof
           netstat           sysctl
 ipcs      meminfo      slabinfo
      sar          ulimit
      nsswitch.conf     resolv.conf
           nscd    ldap
   ・・・問題発生時は
   Disk I/O だけでなくメモリも遅いぞ!?
                          Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                             83
犯人はNUMAでした
   NUMAを無効にしたら
   全てが正常に動作しました(ゲッソリ
     sysctl -w vm.zone_reclaim_mode=0

NUMAとは
多量マルチプロセッサにおいて効率的なメモリアクセスを
試みるアーキテクチャ        ※kenerl >= v2.6.29

       iowait には Disk I/O だけじゃなく
        Memory I/O も含むのは常識よ!
       せいぜいデュアルCPUのくせに
        NUMAが有効なんておこがましいわ!
                          Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                             84
query_cache


         Copyright © DRECOM Co., Ltd All Rights Reserved.   85
ioDriveの副作用?
  ioDrive入れたからベンチマークとってみたけど
  全然性能でないし、なんかCPU詰まってる!


        キャパシティ : 1600%
        ベンチマーク : 350% まで


      新しく入れたioDriveを疑うのだ!
      ioDriveが悪いに決まってる!!
                   Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                      86
犯人はquery_cacheでした
    query_cacheを無効にしたら
    最大までCPUが稼働しました
      query_cache_type=0
      ※query_cache_size=0 だけじゃダメ

キャッシュONで高負荷をかけると mutex lock の増加に
よって Software Interrupt や Context Switch が増加
してCPU利用率が上がらなくなる

        キャッシュは効いてた方が良いなんて
         人間の傲慢だわ
        場合によりけりといってもOFFにし
         た方が安定稼働が望めるよ
                             Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                                87
その他の注意点


      Copyright © DRECOM Co., Ltd All Rights Reserved.   88
経験の少ない領域へ
何年も悩んできたIOPS周り
あまりにその問題に注力してきたために
           ioDriveの導入によって
           未経験の問題が襲い掛かることでしょう

  MySQL       OS              ハードウェア
                             CPU
my.cnf      ファイル
                             メモリ
トランザクション    メモリ
                             データ容量
レプリケーション    ネットワーク
                             ネットワーク


                     Copyright © DRECOM Co., Ltd All Rights Reserved.
                                                                        89
導入後も
ioDriveに甘えず
精進せよ!




                    fin
              Copyright © DRECOM Co., Ltd All Rights Reserved.   90

Más contenido relacionado

La actualidad más candente

AWSインスタンス設定手順書
AWSインスタンス設定手順書AWSインスタンス設定手順書
AWSインスタンス設定手順書iret, Inc.
 
NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野livedoor
 
ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術Drecom Co., Ltd.
 
Aerospike xdr (Cross Datacenter Replication)
Aerospike xdr (Cross Datacenter Replication)Aerospike xdr (Cross Datacenter Replication)
Aerospike xdr (Cross Datacenter Replication)Makoto Uehara
 
プレゼン インフラエンジニア、アプリ開発者集まれ!今注目のクラウド 「Bluemix」、「soft layer」をはじめよう!(OSC福岡2015)
プレゼン インフラエンジニア、アプリ開発者集まれ!今注目のクラウド 「Bluemix」、「soft layer」をはじめよう!(OSC福岡2015)プレゼン インフラエンジニア、アプリ開発者集まれ!今注目のクラウド 「Bluemix」、「soft layer」をはじめよう!(OSC福岡2015)
プレゼン インフラエンジニア、アプリ開発者集まれ!今注目のクラウド 「Bluemix」、「soft layer」をはじめよう!(OSC福岡2015)Yasushi Osonoi
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニックinfinite_loop
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコシステムズ合同会社
 
httpbis WG IETF89レポート
httpbis WG IETF89レポートhttpbis WG IETF89レポート
httpbis WG IETF89レポートKaoru Maeda
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 VirtualTech Japan Inc.
 
HTTP/2 draft 14 preview and IETF90 httpbis WG Report
HTTP/2 draft 14 preview and IETF90 httpbis WG ReportHTTP/2 draft 14 preview and IETF90 httpbis WG Report
HTTP/2 draft 14 preview and IETF90 httpbis WG ReportKaoru Maeda
 
GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介Dai Utsui
 
IETF90 IoT関連WG報告 #isocjp
IETF90 IoT関連WG報告 #isocjpIETF90 IoT関連WG報告 #isocjp
IETF90 IoT関連WG報告 #isocjpKaoru Maeda
 
クラウドを支える基盤技術の最新動向と今後の方向性
クラウドを支える基盤技術の最新動向と今後の方向性クラウドを支える基盤技術の最新動向と今後の方向性
クラウドを支える基盤技術の最新動向と今後の方向性Masayoshi Hagiwara
 
Windows Azure の中でも動いている InfiniBand って何?
Windows Azure の中でも動いている InfiniBand って何?Windows Azure の中でも動いている InfiniBand って何?
Windows Azure の中でも動いている InfiniBand って何?Sunao Tomita
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)シスコシステムズ合同会社
 
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先Kazuho Oku
 
#RouterBOARD 勉強会 OSPF検証班 appendix1.1
#RouterBOARD 勉強会 OSPF検証班 appendix1.1#RouterBOARD 勉強会 OSPF検証班 appendix1.1
#RouterBOARD 勉強会 OSPF検証班 appendix1.1de foggge
 

La actualidad más candente (20)

AWSインスタンス設定手順書
AWSインスタンス設定手順書AWSインスタンス設定手順書
AWSインスタンス設定手順書
 
NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野
 
activerecord-turntable
activerecord-turntableactiverecord-turntable
activerecord-turntable
 
AppFormix勉強会資料
AppFormix勉強会資料AppFormix勉強会資料
AppFormix勉強会資料
 
ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術
 
Aerospike xdr (Cross Datacenter Replication)
Aerospike xdr (Cross Datacenter Replication)Aerospike xdr (Cross Datacenter Replication)
Aerospike xdr (Cross Datacenter Replication)
 
プレゼン インフラエンジニア、アプリ開発者集まれ!今注目のクラウド 「Bluemix」、「soft layer」をはじめよう!(OSC福岡2015)
プレゼン インフラエンジニア、アプリ開発者集まれ!今注目のクラウド 「Bluemix」、「soft layer」をはじめよう!(OSC福岡2015)プレゼン インフラエンジニア、アプリ開発者集まれ!今注目のクラウド 「Bluemix」、「soft layer」をはじめよう!(OSC福岡2015)
プレゼン インフラエンジニア、アプリ開発者集まれ!今注目のクラウド 「Bluemix」、「soft layer」をはじめよう!(OSC福岡2015)
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
 
httpbis WG IETF89レポート
httpbis WG IETF89レポートhttpbis WG IETF89レポート
httpbis WG IETF89レポート
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
 
HTTP/2 draft 14 preview and IETF90 httpbis WG Report
HTTP/2 draft 14 preview and IETF90 httpbis WG ReportHTTP/2 draft 14 preview and IETF90 httpbis WG Report
HTTP/2 draft 14 preview and IETF90 httpbis WG Report
 
GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介
 
ネットワーク構築訓練 入門
ネットワーク構築訓練 入門ネットワーク構築訓練 入門
ネットワーク構築訓練 入門
 
IETF90 IoT関連WG報告 #isocjp
IETF90 IoT関連WG報告 #isocjpIETF90 IoT関連WG報告 #isocjp
IETF90 IoT関連WG報告 #isocjp
 
クラウドを支える基盤技術の最新動向と今後の方向性
クラウドを支える基盤技術の最新動向と今後の方向性クラウドを支える基盤技術の最新動向と今後の方向性
クラウドを支える基盤技術の最新動向と今後の方向性
 
Windows Azure の中でも動いている InfiniBand って何?
Windows Azure の中でも動いている InfiniBand って何?Windows Azure の中でも動いている InfiniBand って何?
Windows Azure の中でも動いている InfiniBand って何?
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
 
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
 
#RouterBOARD 勉強会 OSPF検証班 appendix1.1
#RouterBOARD 勉強会 OSPF検証班 appendix1.1#RouterBOARD 勉強会 OSPF検証班 appendix1.1
#RouterBOARD 勉強会 OSPF検証班 appendix1.1
 

Similar a 第2回 ioDrive+MySQL勉強会 @外道父 ioDriveの世界へようこそ

人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記
人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記
人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記心 谷本
 
ニフティクラウドアップデート in クラウドごった煮@青森
ニフティクラウドアップデート in クラウドごった煮@青森ニフティクラウドアップデート in クラウドごった煮@青森
ニフティクラウドアップデート in クラウドごった煮@青森亮介 山口
 
Drソリューション(ナレッジコミュニケーション)
Drソリューション(ナレッジコミュニケーション)Drソリューション(ナレッジコミュニケーション)
Drソリューション(ナレッジコミュニケーション)nao-k
 
実はDatabase cloudだけで実現できる巷で噂の機械学習とは?
実はDatabase cloudだけで実現できる巷で噂の機械学習とは?実はDatabase cloudだけで実現できる巷で噂の機械学習とは?
実はDatabase cloudだけで実現できる巷で噂の機械学習とは?Kazuki Nakajima
 
Engine Yard - 商用マルチクラウドPaaS
Engine Yard - 商用マルチクラウドPaaSEngine Yard - 商用マルチクラウドPaaS
Engine Yard - 商用マルチクラウドPaaSTakahiro Imanaka
 
Netapp private storage for aws
Netapp private storage for awsNetapp private storage for aws
Netapp private storage for awsMasaru Hiroki
 
スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果Koichiro Sumi
 
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡心 谷本
 
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-Yuta Imai
 
[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...
[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...
[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...Insight Technology, Inc.
 
物理サーバとクラウドの運用管理の違い 2010 03 24 馬場
物理サーバとクラウドの運用管理の違い 2010 03 24 馬場物理サーバとクラウドの運用管理の違い 2010 03 24 馬場
物理サーバとクラウドの運用管理の違い 2010 03 24 馬場Toshiaki Baba
 
[db tech showcase Sapporo 2015] A12:DBAが知っておくべき最新テクノロジー: フラッシュ, ストレージ, クラウド b...
[db tech showcase Sapporo 2015] A12:DBAが知っておくべき最新テクノロジー: フラッシュ, ストレージ, クラウド b...[db tech showcase Sapporo 2015] A12:DBAが知っておくべき最新テクノロジー: フラッシュ, ストレージ, クラウド b...
[db tech showcase Sapporo 2015] A12:DBAが知っておくべき最新テクノロジー: フラッシュ, ストレージ, クラウド b...Insight Technology, Inc.
 
20140315 jawsdays i2 instance io performance
20140315 jawsdays i2 instance io performance20140315 jawsdays i2 instance io performance
20140315 jawsdays i2 instance io performanceMatsumoto Hiroki
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
商用VPSのここだけの話
商用VPSのここだけの話商用VPSのここだけの話
商用VPSのここだけの話joeswebhosting
 
#01-03 solaris11で深化するクラウド
#01-03 solaris11で深化するクラウド#01-03 solaris11で深化するクラウド
#01-03 solaris11で深化するクラウドSolarisJPNight
 
ちゃんとWeb会議
ちゃんとWeb会議ちゃんとWeb会議
ちゃんとWeb会議Masayuki Abe
 
[INSIGHT OUT 2011] c25 Super RACへの道 infinibandを使ったクラスターテクノロジー紹介
[INSIGHT OUT 2011] c25 Super RACへの道 infinibandを使ったクラスターテクノロジー紹介[INSIGHT OUT 2011] c25 Super RACへの道 infinibandを使ったクラスターテクノロジー紹介
[INSIGHT OUT 2011] c25 Super RACへの道 infinibandを使ったクラスターテクノロジー紹介Insight Technology, Inc.
 
オンプレからAuroraへの移行とその効果
オンプレからAuroraへの移行とその効果オンプレからAuroraへの移行とその効果
オンプレからAuroraへの移行とその効果Masato Kataoka
 

Similar a 第2回 ioDrive+MySQL勉強会 @外道父 ioDriveの世界へようこそ (20)

人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記
人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記
人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記
 
ニフティクラウドアップデート in クラウドごった煮@青森
ニフティクラウドアップデート in クラウドごった煮@青森ニフティクラウドアップデート in クラウドごった煮@青森
ニフティクラウドアップデート in クラウドごった煮@青森
 
Drソリューション(ナレッジコミュニケーション)
Drソリューション(ナレッジコミュニケーション)Drソリューション(ナレッジコミュニケーション)
Drソリューション(ナレッジコミュニケーション)
 
実はDatabase cloudだけで実現できる巷で噂の機械学習とは?
実はDatabase cloudだけで実現できる巷で噂の機械学習とは?実はDatabase cloudだけで実現できる巷で噂の機械学習とは?
実はDatabase cloudだけで実現できる巷で噂の機械学習とは?
 
ヤフーを支えるフラッシュストレージ
ヤフーを支えるフラッシュストレージヤフーを支えるフラッシュストレージ
ヤフーを支えるフラッシュストレージ
 
Engine Yard - 商用マルチクラウドPaaS
Engine Yard - 商用マルチクラウドPaaSEngine Yard - 商用マルチクラウドPaaS
Engine Yard - 商用マルチクラウドPaaS
 
Netapp private storage for aws
Netapp private storage for awsNetapp private storage for aws
Netapp private storage for aws
 
スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果
 
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
 
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
 
[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...
[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...
[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...
 
物理サーバとクラウドの運用管理の違い 2010 03 24 馬場
物理サーバとクラウドの運用管理の違い 2010 03 24 馬場物理サーバとクラウドの運用管理の違い 2010 03 24 馬場
物理サーバとクラウドの運用管理の違い 2010 03 24 馬場
 
[db tech showcase Sapporo 2015] A12:DBAが知っておくべき最新テクノロジー: フラッシュ, ストレージ, クラウド b...
[db tech showcase Sapporo 2015] A12:DBAが知っておくべき最新テクノロジー: フラッシュ, ストレージ, クラウド b...[db tech showcase Sapporo 2015] A12:DBAが知っておくべき最新テクノロジー: フラッシュ, ストレージ, クラウド b...
[db tech showcase Sapporo 2015] A12:DBAが知っておくべき最新テクノロジー: フラッシュ, ストレージ, クラウド b...
 
20140315 jawsdays i2 instance io performance
20140315 jawsdays i2 instance io performance20140315 jawsdays i2 instance io performance
20140315 jawsdays i2 instance io performance
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
商用VPSのここだけの話
商用VPSのここだけの話商用VPSのここだけの話
商用VPSのここだけの話
 
#01-03 solaris11で深化するクラウド
#01-03 solaris11で深化するクラウド#01-03 solaris11で深化するクラウド
#01-03 solaris11で深化するクラウド
 
ちゃんとWeb会議
ちゃんとWeb会議ちゃんとWeb会議
ちゃんとWeb会議
 
[INSIGHT OUT 2011] c25 Super RACへの道 infinibandを使ったクラスターテクノロジー紹介
[INSIGHT OUT 2011] c25 Super RACへの道 infinibandを使ったクラスターテクノロジー紹介[INSIGHT OUT 2011] c25 Super RACへの道 infinibandを使ったクラスターテクノロジー紹介
[INSIGHT OUT 2011] c25 Super RACへの道 infinibandを使ったクラスターテクノロジー紹介
 
オンプレからAuroraへの移行とその効果
オンプレからAuroraへの移行とその効果オンプレからAuroraへの移行とその効果
オンプレからAuroraへの移行とその効果
 

第2回 ioDrive+MySQL勉強会 @外道父 ioDriveの世界へようこそ

  • 1. ioDriveの 世界へようこそ 2012/08/27 第2回 ioDrive+MySQL勉強会 外道父@GedowFather Copyright © DRECOM Co., Ltd All Rights Reserved. 1
  • 2. 自己紹介 Copyright © DRECOM Co., Ltd All Rights Reserved. 2
  • 3. 自己紹介 ■私は 外道父@GedowFather ■所属 ドリコム ■職種 インフラエンジニア ■ブログ http://blog.father.gedow.net/ Copyright © DRECOM Co., Ltd All Rights Reserved. 3
  • 4. 目 次 Copyright © DRECOM Co., Ltd All Rights Reserved. 4
  • 5. 目次 1. ioDriveを使う理由 2. サーバ構成 3. キャパシティの計測 4. IOPSの次の敵 Copyright © DRECOM Co., Ltd All Rights Reserved. 5
  • 6. WARNING !! この資料にはioDriveを褒め称 える表現が多く含まれています 全て事実に基づくものであり、 ステマの類ではありません Copyright © DRECOM Co., Ltd All Rights Reserved. 6
  • 7. ioDriveを 使う理由 Copyright © DRECOM Co., Ltd All Rights Reserved. 7
  • 9. ioDriveのおさらい 200,000 IOPS Access Latency 26µs 速い めっちゃ 全っ然 write 数TB / Day 壊れない 性能の割に Warranty 数十年 高くない 100~300万円 Copyright © DRECOM Co., Ltd All Rights Reserved. 9
  • 10. IOPSが凄い! Copyright © DRECOM Co., Ltd All Rights Reserved. 10
  • 11. IOPSが凄い! 速い SAS 15,000 rpm × 6 RAID10 1,000 IOPS ioDrive 200,000 IOPS 以上 Copyright © DRECOM Co., Ltd All Rights Reserved. 11
  • 12. IOPSが凄い! 速い UPDATE1,000 QPS 1,000 IOPS 200,000 IOPS iowait 80% iowait 3% Copyright © DRECOM Co., Ltd All Rights Reserved. 12
  • 14. Access Latencyが凄い! Copyright © DRECOM Co., Ltd All Rights Reserved. 14
  • 15. Access Latencyが凄い! 速い 3ms その差100 倍 30µs Copyright © DRECOM Co., Ltd All Rights Reserved. 15
  • 16. Access Latencyが凄い! 速い 2,000 QPS 3ms 30µs iowait 15% iowait 2%以下 Copyright © DRECOM Co., Ltd All Rights Reserved. 16
  • 17. Access Latencyが凄い! 速い 圧倒的スピード CPUとの往復時間を 短くすることで 常時 iowaitを激減! Copyright © DRECOM Co., Ltd All Rights Reserved. 17
  • 18. 圧倒的パワー 圧倒的スピード ザ・ワールド 世 界 ioDriveの世界へ入門 クエリが 止まって見えるぜ Copyright © DRECOM Co., Ltd All Rights Reserved. 18
  • 19. 耐久年数が凄い! Copyright © DRECOM Co., Ltd All Rights Reserved. 19
  • 20. 壊れない 耐久年数が凄い! ioDrive 160GB SLC 書き込み平均 75PB まで write 10TB / Day ・・・? 耐久年数 20.5年 Copyright © DRECOM Co., Ltd All Rights Reserved. 20
  • 21. 壊れない 耐久年数が凄い! 参照 平均 3,000 QPS 更新 平均 300 QPS 書き込み平均 10 MB/秒 Copyright © DRECOM Co., Ltd All Rights Reserved. 21
  • 22. 壊れない 耐久年数が凄い! 書き込み平均 10MB × 86400秒 864GB / 日 耐久年数 75PB ÷ 864GB ÷ 365日 237年 ioDriveは砕けない Copyright © DRECOM Co., Ltd All Rights Reserved. 22
  • 23. 費用対効果が高い! Copyright © DRECOM Co., Ltd All Rights Reserved. 23
  • 24. 高くない 費用対効果が高い! SAS 15,000 rpm 300GB RAIDコントローラー 30~40万円 (1,000 IOPS) ioDrive 100~300万円 (200,000 IOPS以上) Copyright © DRECOM Co., Ltd All Rights Reserved. 24
  • 25. 高くない 費用対効果が高い! 30~40万円 価格差 100~300万円 4~5倍 1,000 IOPS IOPS差 200,000 IOPS 200倍以上 Copyright © DRECOM Co., Ltd All Rights Reserved. 25
  • 26. サーバ台数の削減 Copyright © DRECOM Co., Ltd All Rights Reserved. 26
  • 27. サーバ台数の削減 1,000 IOPS IOPS差 200,000 IOPS 200倍以上 といっても、 実際にはどのくらいの サーバ台数を削減できるのか? Copyright © DRECOM Co., Ltd All Rights Reserved. 27
  • 28. Before Max CPU : 1,600% Max IOPS : 1,000 1台当り CPU : 500% IOPS : 800 8台構成 合計 CPU : 4,000% IOPS : 6,400 Copyright © DRECOM Co., Ltd All Rights Reserved. 28
  • 29. After 必要合計スペック CPU : 4,000% IOPS : 6,400 Max CPU : 1,600% Max IOPS : 200,000 CPU視点で必要な台数 4000% ÷ 1600% 3台 削 IOPS視点で 減 6,400 ÷ 200,000 1台 Copyright © DRECOM Co., Ltd All Rights Reserved. 29
  • 30. After その他の要素 1台当り CPU : 1,300% 3台構成 IOPS : 2,100 CPUとIOPSをメインで考えるが、さらに  CPUがギリギリ  記憶デバイスの容量  メモリ容量  可用性/負荷分散 構成 などを元に数ヶ月後を見据えた台数にする Copyright © DRECOM Co., Ltd All Rights Reserved. 30
  • 31. サーバ構成 Copyright © DRECOM Co., Ltd All Rights Reserved. 31
  • 32. MySQLサーバ MySQL Community Server 5.5.x Percona Server with XtraDB 5.5.x Copyright © DRECOM Co., Ltd All Rights Reserved. 32
  • 33. Percona Server の特徴  MySQLのForkである  性能面/機能面で劣ることはない  マルチコアCPU・同時アクセスI/Oに配慮  効率的なバックアップ/その他周辺機能  本家に1~2ヶ月程度の遅れでリリース  マニュアルが整備されている  各種OS用のパッケージを配布 Copyright © DRECOM Co., Ltd All Rights Reserved. 33
  • 34. Percona Server Percona Server を 使わない理由がない Copyright © DRECOM Co., Ltd All Rights Reserved. 34
  • 35. 並列処理やI/Oの設定 ~ my.cnf ~ Copyright © DRECOM Co., Ltd All Rights Reserved. 35
  • 36. XtraDBです  default-storage-engine = InnoDB 表示上は今までどおり InnoDB ですが、 中身は XtraDB になっています。 mysql> SHOW ENGINES ¥G ********************** 9. row ********************** Engine : InnoDB Support : DEFAULT Comment : Percona-XtraDB, Supports transactions, row-level locking, and foreign keys Transactions : YES XA : YES Savepoints : YES  全テーブルをInnoDBにしてPerconaの恩恵を受けましょう  MyISAMがあるとバックアップでロックが入ってしまいます Copyright © DRECOM Co., Ltd All Rights Reserved. 36
  • 37. よく知られた設定  innodb_flush_method = O_DIRECT OSによるバッファリングを抑制し、MySQLとOSによるダ ブルバッファリング状態を防ぎ無駄を省きます  innodb_flush_log_at_trx_commit = 2  ログファイルへの書き出しをCOMMIT毎、データファイルへ の書き出しを毎秒にすることでフラッシュ効率を上げます  よほど安全にしたいなら 1ですが遅いです  0 はリスクが上がる割に効果が薄いので使いません Copyright © DRECOM Co., Ltd All Rights Reserved. 37
  • 38. Disk I/O  innodb_io_capacity = 40000  デバイスのIOPS上限を設定できます  実運用では 10,000台がせいぜいですが、上限を設ける理由 もないので、それ以上にします  innodb_read_io_threads = 8  innodb_write_io_threads = 16  読み書きの同時スレッド数  ioDriveの24+1チャネル に合わせたが…  デフォルトはどちらも 4 Copyright © DRECOM Co., Ltd All Rights Reserved. 38
  • 39. CPUスレッド  innodb_thread_concurrency = 0  並列処理するCPUのスレッド数です  0 は上限なしを意味します  1以上を指定するとそのスレッド数でしか動かないので、1ス レッドは空けておきたい、という時に使えなくもないです  thread_concurrency = 16  Solaris特有のもの  5.6.1で廃止される  innodb_thread_concurrency を使いましょう Copyright © DRECOM Co., Ltd All Rights Reserved. 39
  • 40. ディスクフラッシュ – チェックポイント  innodb_adaptive_flushing = true  innodb_adaptive_flushing_method = keep_average  従来のInnoDBの場合、ログファイルからのフラッシュ間隔が 結構長くなります  そのため、ある程度まとめてデータを書き込むため瞬間的に高 いIOPSを必要とし、それが原因でiowaitが高騰します  keep_average にすると、0.1秒間隔となり、緩やかな iowait になり、デメリットも見受けられません  主にSSDやioDrive用として追加されましたが、HDDでも使っ てみてよいと思います Copyright © DRECOM Co., Ltd All Rights Reserved. 40
  • 41. ディスクフラッシュ – 隣接ページ  innodb_flush_neighbor_pages = none  デフォルトのareaの場合、フラッシュしようとするページの 隣接したページもある程度まとめて書き込もうとします  HDDの場合は効率が上がる可能性があります  ランダムアクセスのコストが小さいioDriveでは余計な機能と なり、外したほうが効率が上がる可能性があります Copyright © DRECOM Co., Ltd All Rights Reserved. 41
  • 42. ログファイル  innodb_log_block_size = 4096  ioDriveを、MySQLにおいてパフォーマンスが良いとさ れる4Kbyteでフォーマットした場合、合わせることで 性能が若干向上します  ただし雀の涙程度なので、途中から変えるほどではなく、 最初からできるならしておこう、程度です Copyright © DRECOM Co., Ltd All Rights Reserved. 42
  • 43. Atomic Write Copyright © DRECOM Co., Ltd All Rights Reserved. 43
  • 44. Atomic Write  新機能  絶賛開発中  Double Write の代替  2度書き込む必要が無いようにioDrive側で保証する  アクセス速度の向上、ioDrive寿命が倍 (参考資料) Tuning For Speed: Percona Server and Fusion-io http://www.slideshare.net/fusionio/tuning-for-speed-percona-server-and-fusionio Copyright © DRECOM Co., Ltd All Rights Reserved. 44
  • 45. バックアップ Copyright © DRECOM Co., Ltd All Rights Reserved. 45
  • 46. XtraBackupでバックアップ  別途パッケージでインストール  クエリベースではなくデータファイル丸ごとの形 デメリット メリット  InnoDBのみの場合、  mysqldumpよりバッ ロックを必要としない クアップ容量が大きい  差分バックアップや  mysqldumpより取得 tarストリーミング出 に時間がかかる 力など多機能  リストアが速い Copyright © DRECOM Co., Ltd All Rights Reserved. 46
  • 47. レプリケーション Copyright © DRECOM Co., Ltd All Rights Reserved. 47
  • 48. Semi-Synchronous Replication SLAVEでの relay-log 保存を CLIENT 確定してからCOMMIT完了と する例のアレ ack MASTER SLAVE log 目的  信頼度の高いバックアップ  可用性担保のフェイルオーバー用 Copyright © DRECOM Co., Ltd All Rights Reserved. 48
  • 49. Semi-Syncが遅くなる理由  MASTER ⇔ SLAVE のネットワーク往復  SLAVEでのログ保存 Disk I/O  IO_THREAD と SQL_THREAD の非分離  非同期の場合は別スレッドで動作する  Semi-Syncの場合は1スレッドで両方動作する SLAVE I/O CPU SQL CPU 40% 100% 非同期 (Thread A) (Thread B) 30% 70% Semi-Sync (Thread A) (Thread A) Copyright © DRECOM Co., Ltd All Rights Reserved. 49
  • 50. Semi-Syncを採用できる理由 更新QPSは確実に低下するが・・・ ベンチマーク例 非同期 : 更新 12,000 QPS Semi-Sync : 更新 7,000 QPS  約40%の性能低下 は問題ではない  更新 7,000 QPS が足りていればOK Copyright © DRECOM Co., Ltd All Rights Reserved. 50
  • 51. クラスタ構成 Copyright © DRECOM Co., Ltd All Rights Reserved. 51
  • 52. turntable ① User01 User02 User03 Other01 ioDrive ioDrive ioDrive ・・・ SAS ・・・ Active MASTER MASTER MASTER ・・・ MASTER ・・・ ② Standby SLAVE SLAVE SLAVE ・・・ SLAVE ・・・ ③ 予備 ioDrive SAS ① 垂直/水平分割へ接続 ② MASTER障害時にSLAVEが自動昇格 ③ SLAVE不在時に自動的にSLAVE化 Copyright © DRECOM Co., Ltd All Rights Reserved. 52
  • 53. ① turntableで垂直/水平分割へ接続  Gussan  ドリコム所属  activerecord-turntable 製作者 (参考URL) Github https://github.com/drecom/activerecord-turntable SlideShare http://www.slideshare.net/drecom/activerecordturntable  Ruby on Rails の Active Record で利用できる Shardingプラグイン  テーブルの垂直分割だけでなく、行条件での水平分散 ができる Copyright © DRECOM Co., Ltd All Rights Reserved. 53
  • 54. ② MASTER障害時にSLAVEが自動昇格 VIP MASTER MASTER VIP SLAVE MASTER  MASTERのVIPに影響あるほどの障害  VIPが移動して接続先が  ローカル監視で障害と判断したら自動的 切り替わる にVIPを放棄  フェイルバックは抑制 Copyright © DRECOM Co., Ltd All Rights Reserved. 54
  • 55. ③ SLAVE不在時に自動的にSLAVE化 VIP VIP MASTER MASTER ioDrive SLAVE  MASTERが自身にSLAVEが無  予備機がバックアップファイル いことを確認する からリストアする  予備機に対してSLAVE化を要請  MASTER に START SLAVE ※1クラスタに1予備機は無駄なので、ioDrive/SASそれぞれ1台ずつ用意 Copyright © DRECOM Co., Ltd All Rights Reserved. 55
  • 56. その他の検討構成 Copyright © DRECOM Co., Ltd All Rights Reserved. 56
  • 57. その他の検討構成 MySQL SPIDER 要件によっては間違いなく便利だが、当時は効率を考えた時にいく つか不安になった  更新クエリのたびに全台にXAトランザクションが発行される  集約関数は一度行データを集めてから数えるので非効率 MySQL Cluster  期待した性能は出なかった  構築も運用も難しいため、エンジニア全員が 身に付けるには敷居が高い MySQL Proxy  自動MASTER昇格や正しい参照分散ができる LUAスクリプトを書いて楽しかった  小規模では有用だが・・・ Copyright © DRECOM Co., Ltd All Rights Reserved. 57
  • 58. キャパシティの計測 Copyright © DRECOM Co., Ltd All Rights Reserved. 58
  • 59. 計測条件 MySQLのベンチマークにおいて重要なこと  クエリの種類(参照/更新)  データの容量とメモリの容量  データの性質 4つの計測条件 参照クエリ データ容量 ≦ メモリ容量 更新クエリ データ容量 ≧ メモリ容量 本番データ/本番クエリだからとやみくもにベンチマークをとっても、 真のキャパシティは計測できません Copyright © DRECOM Co., Ltd All Rights Reserved. 59
  • 60. CPUとIOPS Copyright © DRECOM Co., Ltd All Rights Reserved. 60
  • 61. 参照/更新クエリの必要性能 データ容量 ≦ メモリ容量 全データがメモリに収まる状況において 参照クエリ : CPU 更新クエリ : IOPS  参照はIOPSを必要としない  更新はWEBアプリだと主キー更新 主体のためCPUは微量 Copyright © DRECOM Co., Ltd All Rights Reserved. 61
  • 62. 先行するボトルネックを見極める キャパシティ MAX My Limit CPU 1,600% 800% 増設納期を IOPS 1,000 500 考慮して半分 比較 現在値 ピークタイム あと何倍 CPU 200% 4倍 先に到達 IOPS 100 5倍  リクエストがあと4倍に増えたら増設手続きに 入るという判断  ioDriveの場合はIOPSの判断がほぼ不要になる Copyright © DRECOM Co., Ltd All Rights Reserved. 62
  • 63. メモリとデータ容量 Copyright © DRECOM Co., Ltd All Rights Reserved. 63
  • 64. メモリの重要性 innodb_buffer_pool_size write IOPS しか発生しない データ 100 GB メモリ 128 GB 参照 : 全てメモリから読み込まれる 更新 : フラッシュのみwrite IOPSが発生する 通常の write IOPS に加えて大量の read IOPS が発生 データ 200 GB メモリ 128 GB 72 GB 不足 参照 : 72GB分はread IOPSが発生する 更新 : 同上+フラッシュ時にwrite IOPS Copyright © DRECOM Co., Ltd All Rights Reserved. 64
  • 65. LRUによるバッファプール管理 innodb_buffer_pool_size よくアクセスするデータ メモリ破棄予備軍 YOUNG OLD 62% (5/8) 38% (3/8) アクセスされると戻る DISK 破棄 メモリになければ読み込まれ read IOPS が発生する Copyright © DRECOM Co., Ltd All Rights Reserved. 65
  • 66. メモリとデータ容量にみる read IOPS アクセス頻度が高いデータ アクセス頻度が低いデータ SAFE : 全データがメモリに格納されており read IOPS は発生しない young old disk data WARNING : デバイスに read IOPS が発生し始める young old disk data CRITICAL : デバイスに頻繁な read IOPS が発生し始める young old disk data Copyright © DRECOM Co., Ltd All Rights Reserved. 66
  • 67. データの性質とは アクセス頻度が高いデータ テーブルごとに考えてみる アクセス頻度が低いデータ User Item History 例)アイテム数カウント 例)履歴データ 何年経過しても全データが対象 最新数十件しか必要ない データ全体で考えてみる 頻繁に利用されるデータの割合が多いのか disk data 古い不要データによって総容量が増加しているだけなのか disk data 後者ならばメモリ不足が許容されるが、 この度合いを確実に知る術は無い Copyright © DRECOM Co., Ltd All Rights Reserved. 67
  • 68. メモリ管理とデバイスごとの対応 メモリからはみ出たデータの IOPS を 確実には読めなく、被害大の可能性がある メモリの増設やサーバ分割により 常にメモリに収めるのが確実 メモリからはみ出たデータへのアクセスも アプリに影響ない程度の速度で動作をする 場合が多い  それなりに放置しても大丈夫  メモリ管理の知識や緊張が薄くなる  酷いクエリ/インデックスでも動く 『ioDriveは甘え』の所以 Copyright © DRECOM Co., Ltd All Rights Reserved. 68
  • 69. 暖機運転 MySQLの起動直後はいっさいメモリに載っていないため メモリに載るまでレスポンスが遅くなる young old disk data 最初は全てdiskから HTTPを再開する前に 主要テーブルに全参照をかけて 暖機運転をする必要がある diskアクセスでもHTTPが許容範囲で 動作するほど速いため暖機運転は必要ない 『ioDriveの恩恵』でOK Copyright © DRECOM Co., Ltd All Rights Reserved. 69
  • 70. SQLの質 Copyright © DRECOM Co., Ltd All Rights Reserved. 70
  • 71. ioDriveは甘え  IOPS限界が無い  read I/O が発生しても致命傷にならない  スキーマの質 確実に全て下がる  インデックスの質  クエリの質 開発力の低下 必要  開発ルールの整備 堕  自動的な質のチェック 落 Copyright © DRECOM Co., Ltd All Rights Reserved. 71
  • 72. Generalistによる質の定量化  外道父が書いた1枚のPHPスクリプト  参照クエリ/更新クエリ/インデックスの 質を数値化  悪い順に並べたTSVデータ出力しエクセル で閲覧したり、snmpd用値を出力  1時間に1度実行しておく  general.log を採取  クエリのユニーク化  SHOW や EXPLAIN で色々取得  外道父ルールで勝手に質を数値化 Copyright © DRECOM Co., Ltd All Rights Reserved. 72
  • 73. Generalist の 参照クエリ診断  DQP(Dirty Query Points)が悪い順に解 決していけばOK  実際のクエリとEXPLAIN結果  悪いと評価した項目とその度合い Copyright © DRECOM Co., Ltd All Rights Reserved. 73
  • 74. Generalist の 更新クエリ診断  DUP(Dirty Update Points)が悪い順に 解決していけばOK  更新行数や更新カラムの対象となるイン デックス数などから診断 Copyright © DRECOM Co., Ltd All Rights Reserved. 74
  • 75. Generalist の インデックス診断  DIP(Dirty Index Points)が悪い順に 解決していけばOK  複合インデックスのCardinality効率など から診断 Copyright © DRECOM Co., Ltd All Rights Reserved. 75
  • 76. IOPSの次の敵 Copyright © DRECOM Co., Ltd All Rights Reserved. 76
  • 77. IOPSの次の問題は? IOPS ioDriveの出現による 新時代の幕開け CPU Network Software Copyright © DRECOM Co., Ltd All Rights Reserved. 77
  • 78. IPMI Copyright © DRECOM Co., Ltd All Rights Reserved. 78
  • 79. ioDriveは暴れん坊? ioDrive搭載サーバで、サーバ起動時から 何もしていないのにSystemCPUが50% 50% 新しく入れたioDriveを疑うのだ! ioDriveが悪いに決まってる!! Copyright © DRECOM Co., Ltd All Rights Reserved. 79
  • 80. 犯人はIPMIでした ipmitool パッケージの ipmiモジュールを 削除したら解決しました(テヘペロ ioDriveが悪いわけないじゃない まだまだ信心が足りないわ! Copyright © DRECOM Co., Ltd All Rights Reserved. 80
  • 81. NUMA Copyright © DRECOM Co., Ltd All Rights Reserved. 81
  • 82. ioDriveは気まぐれ屋? ioDrive搭載サーバで、iowaitが急増したり グラフが虫食いになるほどの状態になる 20~80% 新しく入れたioDriveを疑うのだ! ioDriveが悪いに決まってる!! Copyright © DRECOM Co., Ltd All Rights Reserved. 82
  • 83. あらゆる調査を行った aio vmstat io_schedule iostat strace pidstat mpstat top lsof netstat sysctl ipcs meminfo slabinfo sar ulimit nsswitch.conf resolv.conf nscd ldap ・・・問題発生時は Disk I/O だけでなくメモリも遅いぞ!? Copyright © DRECOM Co., Ltd All Rights Reserved. 83
  • 84. 犯人はNUMAでした NUMAを無効にしたら 全てが正常に動作しました(ゲッソリ sysctl -w vm.zone_reclaim_mode=0 NUMAとは 多量マルチプロセッサにおいて効率的なメモリアクセスを 試みるアーキテクチャ ※kenerl >= v2.6.29  iowait には Disk I/O だけじゃなく Memory I/O も含むのは常識よ!  せいぜいデュアルCPUのくせに NUMAが有効なんておこがましいわ! Copyright © DRECOM Co., Ltd All Rights Reserved. 84
  • 85. query_cache Copyright © DRECOM Co., Ltd All Rights Reserved. 85
  • 86. ioDriveの副作用? ioDrive入れたからベンチマークとってみたけど 全然性能でないし、なんかCPU詰まってる! キャパシティ : 1600% ベンチマーク : 350% まで 新しく入れたioDriveを疑うのだ! ioDriveが悪いに決まってる!! Copyright © DRECOM Co., Ltd All Rights Reserved. 86
  • 87. 犯人はquery_cacheでした query_cacheを無効にしたら 最大までCPUが稼働しました query_cache_type=0 ※query_cache_size=0 だけじゃダメ キャッシュONで高負荷をかけると mutex lock の増加に よって Software Interrupt や Context Switch が増加 してCPU利用率が上がらなくなる  キャッシュは効いてた方が良いなんて 人間の傲慢だわ  場合によりけりといってもOFFにし た方が安定稼働が望めるよ Copyright © DRECOM Co., Ltd All Rights Reserved. 87
  • 88. その他の注意点 Copyright © DRECOM Co., Ltd All Rights Reserved. 88
  • 89. 経験の少ない領域へ 何年も悩んできたIOPS周り あまりにその問題に注力してきたために ioDriveの導入によって 未経験の問題が襲い掛かることでしょう MySQL OS ハードウェア CPU my.cnf ファイル メモリ トランザクション メモリ データ容量 レプリケーション ネットワーク ネットワーク Copyright © DRECOM Co., Ltd All Rights Reserved. 89
  • 90. 導入後も ioDriveに甘えず 精進せよ! fin Copyright © DRECOM Co., Ltd All Rights Reserved. 90