preload
「PHP×携帯サイト-デベロッパーズバイブル」は、PHPerでなくともオススメ around_filter で reset_session するとメモリリーク(memory leak)する
10月 31

@東京ステーションコンファレンス。本日1日目は諸事情あり十分な聴講時間がとれなかったこと&明日2日目は行けそうにない事から、今日聞けた中で一番面白かった Ameba(アメブロ) の話のメモをとりあえずポストしておきます。スピーカーはサイバーエージェントの岡田さん、大黒さん。


セッションのメモは以下に転記しますが、講演の内容は、2006 年以降アメブロで行われた Oracle => MySQL 移行の苦労話や、増大する PV (月間50億PV!) による負荷対策の取り組み、各種ストレージエンジン x ファイルシステムの組み合わせでのパフォーマンス検証結果、自作サーバによる各種ディスク構成でのパフォーマンス検証結果などなど、といったところでした。


率直な感想としては、けっこう生々しくて濃いセッションでした。サイバーエージェントさんが社内の研究開発で、ここまで面白そうな事をやられてるとは存じ上げなかったので、そちらも驚きました。プレゼン資料や動画については、後日公開されると伺いましたので、興味のある方は、サイバーエージェントさんサイトとか、このプレスリリース周辺をウォッチしておくと良いかも知れません。


以下、メモ。

  • 組織の話
    • 「新規開発局」以下の組織体系。プロデュース、フロントクリエイティブ、システムクリエイティブ、インフラテクノロジーの 4 区分
    • インフラチームは、更に、インフラの統括的なところと、ネットワーク、DB の 3 区分
    • DB チームの業務は DB に関わる部分全般。監視やら、パフォーマンス改善、研究開発や DC でのラックマウント作業も
  • Oracle からの移行の話
    • 2006 年 9 月時点では Oracle x 2 での Active/Stanby – 月間 4 億 PV
    • 2008 年現在は Oracle x 4, MySQL シングルマスタ x 1 + レプリケーション 41 台。Oracle で管理していたブログ記事や、コメント、トラックバックのレコードを MySQL に移行
    • MySQL への移行前(中?)も、ページの一部(サイドバーとか)へのキャッシュ導入、WebLogic から Apache + tomcat への移行、NFS マウントから WebDAV への移行などのチューニングは、いろいろやっていた
    • MySQL へ移行するにあたって、レコード数の多いデータ(ブログ記事とか 80 百万レコードくらいあったとか)は –replicate-do-table しつつサーバ/テーブルを分割。最終的に月間 50 億 PV 捌けるようになったとか
    • Oracle からのデータ移行は、ダンプしたやつを scp とかで運んで LOAD DATA INFILE するのが速い。
    • 移行ツールが一見ラクそうだが、やってみるとアプリ側の処理がボトルネックになってるようだった。LOAD DATA INFILE で 2 億件ほどのレコードを 4 時間で移行できた
    • DB を変えるにあたって、DB に適したシステム設計にできるよう、UI 側のデザイン見直しにも積極的に関与したとか。ブログ管理画面に年月タブを表示したり
    • INDEX の見直し、クエリの見直し、explain での確認を丁寧にやった
    • 最終的に、一画面表示の際の、参照系のクエリ発行回数は増加したが、ディスクの I/O はかなり軽減し、スケールアウトしやすい構成にできた
    • 現在の構成で 35000-40000 クエリ/分くらいだが、60000 クエリくらいまでは行けそう
  • ストレージエンジン x ファイルシステムの比較検証の話
    • 開発では CentOS 4 系、ファイルシステムに ext3、DB に MySQL 4.1 系 MyISAM 利用がスタンダードになっていた。
    • サイバーエージェントでは MyISAM が好まれている。テーブルロックはテーブル分割で回避できているし、InnoDB は運用時の扱いにくさもあるので避けられているとか
    • 一部 MySQL 5.1 を採用したサービスもあるが、もっといい組み合わせが無いかと、いろいろ試してみた
    • ext3, xfs, zfs の比較。OS が異なるため厳密な比較はできなかったが、ext3 < xfs で xfs のスループットが 1 割ほど良い結果が得られた。zfs はチューニング次第で ext3 レベルまで持っていけるかも
    • xfs は journal log 周りにチューニングの余地があり、まだ伸びしろがありそう
    • MyISAM, InnoDB, Maria の比較。InnoDB は想定ほど悪くはなかった
    • 組み合わせ的には xfs + MyISAM がもっともよさそう
  • 自作サーバの話
    • 自身で機器選定してサーバ構築&パフォーマンス検証。ハードウェア構成検証、スキルアップ、コスト削減のための取り組み
    • HW-RAID, SW-RAID, SSD によるディスク構成比較
    • HW-RAID なかなかよい。SW-RAID は I/O が増大してくると不安定に。SSD は読み込みは抜群に高性能だが、書込みパフォーマンスが悪い

ブログアプリってことで、参照系アクセスが多いんでしょうね。50 億 PV でも、シングルマスタ& MyISAM テーブル分割で回避できちゃうんだなあ。いや、もちろん、言うほど簡単じゃないんだろうけど。しかし 41 台レプリケーションで LAN 内ネットワークトラフィックは問題にならないんだろうかとか思ってたら、その辺の議論も質疑で交わされてて、そちらも参考になりました。いまんとこ、ネットワーク側はそんなに問題になってないとか。うんー、勉強になりましたです。


なお、上記メモ後半部分の、サイバーエージェントさん社内研究成果については、コンファレンス会場の展示会場ブースで見せてもらう事ができます。他のテーマも含め、いろんなネタがファイルされていたのですが、こういう研究活動のアウトプットがしっかりまとめられているという体制/仕組みもすばらしいなあと思ったのでした。


以上です。一部理解が追いつかなかったところもあり、正確にメモできてるかは微妙です。すみません。なんかオカシイんじゃねえかとおもうところとか、訂正とか指摘いただける方は、コメントとかで教えてください。


ちなみに、明日はニフティさんココログの PostgreSQL => MySQL マイグレーション事例紹介セッションがあるそうです。こちらも聞いてみたいのですが、行けそうにないので、誰かレポートしてくれるとうれしいです。


関連していそうなエントリ:

One Response to “MySQLユーザコンファレンス2008(1日目)でアメブロの裏側の話を聞いてきた”

  1. twk @ ふらっと Says:

    MySQLユーザコンファレンス2008報告と感想

    予告通り、去年に続いてMySQLユーザコンファレンス行って来ました。
    もうすでにいくつか報告があがっておりだいぶ遅れを取っています。
    気になる方ははてなブックマークの注目エントリ

Leave a Reply