はてな×DeNA 「Mobage 運用技術」勉強会
はてなさんよりお誘いを受けましたので、「Mobage 運用技術」という勉強会に参加してきました。
Mobageを支える技術 ~ソーシャルゲームの舞台裏~ (WEB+DB PRESS plus)
- 作者: DeNA
- 出版社/メーカー: 技術評論社
- 発売日: 2012/06/13
- メディア: 単行本(ソフトカバー)
- 購入: 31人 クリック: 737回
- この商品を含むブログを見る
場所は渋谷ヒカリエの新オフィスです。
[前半]運用技術Web編:Webサーバーの資源管理について
- CPUかメモリがネックになる。
- ソフトウェアではなくハードウエアがネックになる。
- 工夫しないとメモリ使用量がネックになる
- ワーカープロセスの空きを調べることが重要となる
- あと何%の余裕があるか、を知りたい
- スタックトレースを取り、すぐにデタッチする仕組みを作った。全プロセスのスタックトレースを一定周期で取得。リクエストを待っているプロセスが「空き」
- gdbを使ってスタックトレースを取っていたが、今はbulkdbgというのを作って利用している
- gdbでは、アタッチされたプロセスは、シンボルを解決するのに時間がかかる
- accept()でブロックしているワーカーの数が減ってきたら枯渇が近い。メールで警告
- Cのスタックトレースではなく、Perlのスタックトレースも見たい。
- 作った。
- OSページキャッシュ利用の効率化。ページキャッシュ利用の効率化。
- アプリのログを大量にはいている。ログファイルがOSキャッシュされてしまう。ログ回収のタイミングでSWAPしてしまう
[後半]運用技術DB編:Mobage MySQL運用
- MySQLはMasterとSlabeが非同期。
- CUDとクリティカルなものはMaster。それ以外はSlabe
- シャーディング(入りきらないものを別DBに出すこと)
- 最初は、テーブル単位で分割する。レプリーケーションでDBを分ける。
- JOINできなくなる。基本的にJOINしないように作るように指示している。
- 次はレコードベースで振り分ける。
- オートインクリメントの注意
- マルチインスタンス
- バックアップサーバー
- マスター1台でも、サーバーは2台になる。仕組み上はSlave
- ユーザーからのリクエストが来ないSlave
- Masterが落ちた時に、代わりにMasterになる。そして、MySQLDumpでダンプを取っている。
- MHA
- ツール。バックアップのMasterかを自動化。
- パージ
- 5.1より前。DELETEするしかない。レンジのWHERE句で消すはしない。IDを取っておいて、コツコツ消す。
- 5.1以降は、Partitionをドロップする。パーティションをドロップできるので、簡単
- ハイトラフィック
- 一貫性が大事。Memcahced
- DB更新を検知するトリガから、Memcachedを更新する必要がある。
- HandlerSocketPluginを使うほうが簡単
- 更新
- レプリケーション遅延
- バックアップサーバーの遅延がおきたら、
- Slaveでも遅延がおきる。(スペックの違い)
- クエリの数を減らさないといけない。
- SSD