SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
MongoDB:
Case Study for AMN
小山哲志@アジャイルメディア・ネットワーク
        @koyhoge
about me

‣ 小山哲志 - koyhoge
‣ アジャイルメディア・ネットワーク社員
‣ 合同会社ほげ技研 代表社員
‣ PHPユーザ会スタッフ
‣ 日本UNIXユーザ会幹事
‣ その他いろいろ
about AMN

‣ アジャイルメディア・ネットワーク株式会社
 ‣ http://agilemedia.jp/
‣ 2007年2月設立
‣ ソーシャルメディアマーケティング / キャンペー
 ン、イベント運営等
‣ 広告配信もやってます。今日はその話。
AMNパートナーブロガー

‣ 2007年に6ブログからスタート
‣ 2011年11月現在で91ブログ
‣ 他に Tweet アドネットワークが 16媒体
配信規模

‣ ブログアドネットワーク
 ‣ 月間 2000万 imps (公式)
‣ Tweetアドネットワーク
 ‣ 月間 2500万 imps (公式)
‣ 通常は 20∼120 req/s、ピーク時で 300
 req/s くらい
サーバ構成

‣ フロントWebサーバ2台
 ‣ Apache + PHP 5.3 + memcached
 ‣ フレームワークなし
‣ 静的ファイル配信用Webサーバ1台
 ‣ nginx
‣ DBサーバ2台(マスター/レプリケーション)
 ‣ PostgreSQL 9.0
Log! Log! Log!

‣ 広告配信なので表示数の記録はたいへん重要
‣ 以前は配信ログも PostgreSQL に記録していた
 ‣ AM 4:00 に集計バッチ処理が走る
‣ 2011年4月のサーバ構成変更時にログDBもマ
 スター/レプリケーションにしたところ、負荷に
 負け始める
PostgreSQLとの闘い

‣ パラメータチューニング
‣ 起動直後は安定して処理をさばく
‣ 数分∼数十分後(不定)に処理に負け始め、接続数
 不足に陥る
‣ cronで5分おきに再起動を仕掛ける回避策
‣ そうして逃げてる間に抜本的な解決策を探る
Key Value Store

‣ シンプルなデータを大量に保存するので、KVS
 向きだった
 ‣ ただし集計用に group by 機能が欲しい
‣ まずは AWS SimpleDB を試してみる
 ‣ すいません、クラウドサービス使いたかったん
  ですw
Amazon SimpleDB

‣ http://aws.amazon.com/jp/simpledb/
‣ AWSサービス群のひとつ
‣ PHP用の公式 AWS SDK があるのでそれを使う
‣ 使い方はすごく簡単
‣ SQLのような select 構文が使える
SimpleDBの結果?

‣ インサートが遅かった
‣ バッチ挿入も試したが少しましな程度
‣ 複数台に分散してインサートすると良い?
‣ ということでキュー (Queue) に入れることにし
 てみる
Amazon SQS + SDB

‣ Simple Queue Service
‣ REST APIでキュー/デキューできる
‣ 処理の流れ
 ‣ WebサーバからSQSにデータを突っ込む
 ‣ SQSから取り出してSDBに入れるワーカーを
  EC2でつくる
‣ ワーカーを増やせばスケールするんじゃね?
SQS+SDB?

‣ インサート速度は申し分なし
‣ PHPで書いたワーカーも無事に動作した
‣ 本番サービスにテスト的に追加
 ‣ PostgreSQL と同時に SQS にもログ保存
‣ 一日運用したコストが$130
 ‣ かなりお高いです...
いよいよMongoDB
‣ SaaS な KVS は諦め、ソフトウェアを探す
‣ MongoDB良さそうだったので、開発用の仮想
 マシンサーバ上にテスト環境を構築
 ‣ ReplSet 3 x Sharding 3 = 9台
 ‣ バージョンは当時の安定版 1.8.1
‣ Mongo用のPHPドライバも無事動作
‣ インサートすごく速い
‣ 負荷めちゃ軽い
MongoDBをEC2で

‣ AWS EC2上にMongoDBのテストベッド構築
‣ Microインスタンス3台で ReplSet
 ‣ ただしそれぞれのリージョンは分ける
 ‣ 東京A, 東京B, シンガポールA
‣ Shardingもやろうとしたけどうまく動かなかっ
 た
‣ ストレージは EBS 1TB
EC2テストベッド続き

‣ データ入力部分が出来たところで、本番データを
 流し始める
‣ Microインスタンスでも問題なく処理可能
‣ その環境をターゲットにバッチ処理部分の開発を
 進める
EC2 Smallの限界?

‣ ある程度バッチ処理の開発ができてきた
‣ Mongoに対しても、日時の集計処理を走らせる
 ようにcron設定
‣ 翌日集計は完了していたが、ReplSetの
 Primary が東京A → 東京B に変わっていた。
‣ さらに翌日には、Primary が東京Aに戻ってい
 た。
Primaryピンポン
‣ バッチ処理が走る
 ‣ groupを呼び出す比較的重い処理が複数
‣ Primaryが過負荷になってSecondaryの要求に
 応えなくなる
‣ S「Primary落ちてるんじゃね?」
‣ S「わーい投票投票」
‣ S(東京B)「俺近いし次プライマリーやるわ」
‣ P(東京A)「仕事をしていたらいつの間にかプラ
 イマリーではなくなっていた...」
本番環境はLargeに

‣ 御存知の通りMongoDBは 32bit Linux では実
 用にならない。
‣ EC2 Small インスタンスでは 64bit Linux は
 使えない。
‣ 自動的に Large 3台構成に
 ‣ 配置は Micro の時と同じ
‣ Large だとさすがにピンポンは起きませんでし
 たw
ある日のプライマリーさん
知見

‣ Shardingなしでも十分速い
‣ 大規模障害対策として、AWS 東京+シンガポー
 ルは使える
‣ シンガポールのSecondaryを見ても、ほとん
  ど遅れなく同期している
‣ JSスキーにとってはMongoかわいい
EC2使用料

‣ Large x 3
‣ CloudWatch (Monitoring)
‣ Reserved Instances
‣ 月額 $800 くらい
まとめ

‣ MongoDB のおかげで急激なトラフィックにも
 恐れること無く、枕を高くして眠ることができま
 す。
‣ doryokujinさんいつもありがとうございます。
‣ Fluent 使いたいです!
‣ Aggregation Mongo 使いたいです!!
提供
アジャイルメディア・ネットワーク株式会社

Weitere ähnliche Inhalte

Mehr von Tetsuji Koyama

まつりとTシャツと私
まつりとTシャツと私まつりとTシャツと私
まつりとTシャツと私Tetsuji Koyama
 
LLまつりに行こう!
LLまつりに行こう!LLまつりに行こう!
LLまつりに行こう!Tetsuji Koyama
 
FuelPHPを3ヶ月使ってみて
FuelPHPを3ヶ月使ってみてFuelPHPを3ヶ月使ってみて
FuelPHPを3ヶ月使ってみてTetsuji Koyama
 
the History of LL events
the History of LL eventsthe History of LL events
the History of LL eventsTetsuji Koyama
 
the Histrory of LT and ドラ娘
the Histrory of LT and ドラ娘the Histrory of LT and ドラ娘
the Histrory of LT and ドラ娘Tetsuji Koyama
 
PHP Frameworks with IPv6
PHP Frameworks with IPv6PHP Frameworks with IPv6
PHP Frameworks with IPv6Tetsuji Koyama
 
Keires_DBリリースのご案内
Keires_DBリリースのご案内Keires_DBリリースのご案内
Keires_DBリリースのご案内Tetsuji Koyama
 
開発ライセンスとプログラマーの自由
開発ライセンスとプログラマーの自由開発ライセンスとプログラマーの自由
開発ライセンスとプログラマーの自由Tetsuji Koyama
 
PHPで使うIPv6の実際
PHPで使うIPv6の実際PHPで使うIPv6の実際
PHPで使うIPv6の実際Tetsuji Koyama
 
PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際Tetsuji Koyama
 
日本は世界一のITコミュニティ天国
日本は世界一のITコミュニティ天国日本は世界一のITコミュニティ天国
日本は世界一のITコミュニティ天国Tetsuji Koyama
 
ランダム文字ぽいものをつくる
ランダム文字ぽいものをつくるランダム文字ぽいものをつくる
ランダム文字ぽいものをつくるTetsuji Koyama
 

Mehr von Tetsuji Koyama (15)

まつりとTシャツと私
まつりとTシャツと私まつりとTシャツと私
まつりとTシャツと私
 
LLまつりに行こう!
LLまつりに行こう!LLまつりに行こう!
LLまつりに行こう!
 
FuelPHPを3ヶ月使ってみて
FuelPHPを3ヶ月使ってみてFuelPHPを3ヶ月使ってみて
FuelPHPを3ヶ月使ってみて
 
the History of LL events
the History of LL eventsthe History of LL events
the History of LL events
 
the Histrory of LT and ドラ娘
the Histrory of LT and ドラ娘the Histrory of LT and ドラ娘
the Histrory of LT and ドラ娘
 
IPv6の闇とPHP
IPv6の闇とPHPIPv6の闇とPHP
IPv6の闇とPHP
 
PHP Frameworks with IPv6
PHP Frameworks with IPv6PHP Frameworks with IPv6
PHP Frameworks with IPv6
 
LL Planets告知
LL Planets告知LL Planets告知
LL Planets告知
 
Keires_DBリリースのご案内
Keires_DBリリースのご案内Keires_DBリリースのご案内
Keires_DBリリースのご案内
 
開発ライセンスとプログラマーの自由
開発ライセンスとプログラマーの自由開発ライセンスとプログラマーの自由
開発ライセンスとプログラマーの自由
 
PHPで使うIPv6の実際
PHPで使うIPv6の実際PHPで使うIPv6の実際
PHPで使うIPv6の実際
 
PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際
 
日本は世界一のITコミュニティ天国
日本は世界一のITコミュニティ天国日本は世界一のITコミュニティ天国
日本は世界一のITコミュニティ天国
 
Traitsについて
TraitsについてTraitsについて
Traitsについて
 
ランダム文字ぽいものをつくる
ランダム文字ぽいものをつくるランダム文字ぽいものをつくる
ランダム文字ぽいものをつくる
 

Kürzlich hochgeladen

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Kürzlich hochgeladen (9)

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

MongoDB: Case Study for AMN