• mysqlパフォーマンス改善への道(その1、現状の確認)

    パワー不足のmysqlをチューニングしてみます。

    こんばんわ。プラットフォーム担当の宮下です。

    今回は、バックアップ兼集計用に稼働しているmysqlのレプリケーションンサーバの
    パフォーマンス改善していきたいと思います。
    これまでにもいくつか対策はしてきましたが、まずは環境をおさらいします。

    ◇稼働してる環境は、AWSのEC2でlargeインスタンスを使用しています。
     サービスは、OpenPNEを使用したSNSのサービスとなります。対象のMysqlはバックアップとデータ集計が目的で稼働しています。
     (本番サービスでは使用していません)

    ◇mysqlのバージョンはちょっと古くて「5.0.77」になっています。multiで起動させていていて
     この他に開発環境用のmysqlも稼働していたりします。  ちなみに今の遅延秒数は、「1512561 秒」でまだ増加中です。

    ◇これまでに変更した点ですが、
     「innodb_buffer_pool_size」を512Mから2028Mまで増加、
     「innodb_flush_log_at_trx_commit」を2から0に変更、
     (リカバリの精度よりもスループットを優先)
     「key_buffer_size」を32Mから300Mに変更、
     「query_cache_size = 0」にして無効化しました。
     効果は、DISKのI/Oが半分くらい減りましたが、遅延解消とまではいってません。

    ◇最後にmuninで取得しているデータを確認します。

    delay0527

    遅延が日々増えています。たまに減る事もありますが要因は分かりません。

    io0527

    常にDISKのread I/Oが大量に発生しています。

    原因ははっきりしていて、DBデータに画像や動画データが格納されている為となります。
     buffer pool sizeでは収まり切らないデータサイズなので常にDISKのread/writeが発生しています。
     またMyISAMとInnodbが混在していてリソースが効率的に利用出来ていない事や、
     OpenPNEが「delete aaa filename LIKE ‘%bbb%’」というクエリを大量に発行している事
     などが解決すべき課題がたくさんあります。

    現状を整理した事で、次回からは一つずつ改善対策を実施していきたいと思います。

    ...