Submit Search
Upload
MongoDB: Case Study for AMN
•
14 likes
•
3,882 views
Tetsuji Koyama
Follow
2011/11/15 に開催された「第7回 MongoDB 勉強会」で発表したプレゼンテーションです。
Read less
Read more
Technology
Education
Report
Share
Report
Share
1 of 25
Download now
Download to read offline
Recommended
オープンソースで作る動画配信サイト OSC2013名古屋
オープンソースで作る動画配信サイト OSC2013名古屋
Masaki Goto
今時のLinuxにおけるGPUエンコード事情
今時のLinuxにおけるGPUエンコード事情
zgock
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Masahiro Nagano
インターネット生放送を支える技術としくみ2015年版
インターネット生放送を支える技術としくみ2015年版
Yusei Yamanaka
Ctfのためのpython入門
Ctfのためのpython入門
shiracamus
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
kikuchan98
「今、ヨーロッパのオープンソースがアツい!」クラウドの構成管理を自動化する基盤CMDBuild
「今、ヨーロッパのオープンソースがアツい!」クラウドの構成管理を自動化する基盤CMDBuild
OSSラボ株式会社
FuelPHP で DynamoDB
FuelPHP で DynamoDB
Tetsuji Koyama
Recommended
オープンソースで作る動画配信サイト OSC2013名古屋
オープンソースで作る動画配信サイト OSC2013名古屋
Masaki Goto
今時のLinuxにおけるGPUエンコード事情
今時のLinuxにおけるGPUエンコード事情
zgock
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Masahiro Nagano
インターネット生放送を支える技術としくみ2015年版
インターネット生放送を支える技術としくみ2015年版
Yusei Yamanaka
Ctfのためのpython入門
Ctfのためのpython入門
shiracamus
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
kikuchan98
「今、ヨーロッパのオープンソースがアツい!」クラウドの構成管理を自動化する基盤CMDBuild
「今、ヨーロッパのオープンソースがアツい!」クラウドの構成管理を自動化する基盤CMDBuild
OSSラボ株式会社
FuelPHP で DynamoDB
FuelPHP で DynamoDB
Tetsuji Koyama
まつりとTシャツと私
まつりとTシャツと私
Tetsuji Koyama
LLまつりに行こう!
LLまつりに行こう!
Tetsuji Koyama
FuelPHPを3ヶ月使ってみて
FuelPHPを3ヶ月使ってみて
Tetsuji Koyama
the History of LL events
the History of LL events
Tetsuji Koyama
the Histrory of LT and ドラ娘
the Histrory of LT and ドラ娘
Tetsuji Koyama
IPv6の闇とPHP
IPv6の闇とPHP
Tetsuji Koyama
PHP Frameworks with IPv6
PHP Frameworks with IPv6
Tetsuji Koyama
LL Planets告知
LL Planets告知
Tetsuji Koyama
Keires_DBリリースのご案内
Keires_DBリリースのご案内
Tetsuji Koyama
開発ライセンスとプログラマーの自由
開発ライセンスとプログラマーの自由
Tetsuji Koyama
PHPで使うIPv6の実際
PHPで使うIPv6の実際
Tetsuji Koyama
PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際
Tetsuji Koyama
日本は世界一のITコミュニティ天国
日本は世界一のITコミュニティ天国
Tetsuji Koyama
Traitsについて
Traitsについて
Tetsuji Koyama
ランダム文字ぽいものをつくる
ランダム文字ぽいものをつくる
Tetsuji Koyama
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
More Related Content
More from Tetsuji Koyama
まつりとTシャツと私
まつりとTシャツと私
Tetsuji Koyama
LLまつりに行こう!
LLまつりに行こう!
Tetsuji Koyama
FuelPHPを3ヶ月使ってみて
FuelPHPを3ヶ月使ってみて
Tetsuji Koyama
the History of LL events
the History of LL events
Tetsuji Koyama
the Histrory of LT and ドラ娘
the Histrory of LT and ドラ娘
Tetsuji Koyama
IPv6の闇とPHP
IPv6の闇とPHP
Tetsuji Koyama
PHP Frameworks with IPv6
PHP Frameworks with IPv6
Tetsuji Koyama
LL Planets告知
LL Planets告知
Tetsuji Koyama
Keires_DBリリースのご案内
Keires_DBリリースのご案内
Tetsuji Koyama
開発ライセンスとプログラマーの自由
開発ライセンスとプログラマーの自由
Tetsuji Koyama
PHPで使うIPv6の実際
PHPで使うIPv6の実際
Tetsuji Koyama
PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際
Tetsuji Koyama
日本は世界一のITコミュニティ天国
日本は世界一のITコミュニティ天国
Tetsuji Koyama
Traitsについて
Traitsについて
Tetsuji Koyama
ランダム文字ぽいものをつくる
ランダム文字ぽいものをつくる
Tetsuji Koyama
More from Tetsuji Koyama
(15)
まつりとTシャツと私
まつりとTシャツと私
LLまつりに行こう!
LLまつりに行こう!
FuelPHPを3ヶ月使ってみて
FuelPHPを3ヶ月使ってみて
the History of LL events
the History of LL events
the Histrory of LT and ドラ娘
the Histrory of LT and ドラ娘
IPv6の闇とPHP
IPv6の闇とPHP
PHP Frameworks with IPv6
PHP Frameworks with IPv6
LL Planets告知
LL Planets告知
Keires_DBリリースのご案内
Keires_DBリリースのご案内
開発ライセンスとプログラマーの自由
開発ライセンスとプログラマーの自由
PHPで使うIPv6の実際
PHPで使うIPv6の実際
PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際
日本は世界一のITコミュニティ天国
日本は世界一のITコミュニティ天国
Traitsについて
Traitsについて
ランダム文字ぽいものをつくる
ランダム文字ぽいものをつくる
Recently uploaded
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
Recently uploaded
(11)
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
MongoDB: Case Study for AMN
1.
MongoDB: Case Study for
AMN 小山哲志@アジャイルメディア・ネットワーク @koyhoge
2.
about me ‣ 小山哲志
- koyhoge ‣ アジャイルメディア・ネットワーク社員 ‣ 合同会社ほげ技研 代表社員 ‣ PHPユーザ会スタッフ ‣ 日本UNIXユーザ会幹事 ‣ その他いろいろ
3.
about AMN ‣ アジャイルメディア・ネットワーク株式会社
‣ http://agilemedia.jp/ ‣ 2007年2月設立 ‣ ソーシャルメディアマーケティング / キャンペー ン、イベント運営等 ‣ 広告配信もやってます。今日はその話。
4.
5.
AMNパートナーブロガー ‣ 2007年に6ブログからスタート ‣ 2011年11月現在で91ブログ ‣
他に Tweet アドネットワークが 16媒体
6.
配信規模 ‣ ブログアドネットワーク ‣
月間 2000万 imps (公式) ‣ Tweetアドネットワーク ‣ 月間 2500万 imps (公式) ‣ 通常は 20∼120 req/s、ピーク時で 300 req/s くらい
7.
サーバ構成 ‣ フロントWebサーバ2台 ‣
Apache + PHP 5.3 + memcached ‣ フレームワークなし ‣ 静的ファイル配信用Webサーバ1台 ‣ nginx ‣ DBサーバ2台(マスター/レプリケーション) ‣ PostgreSQL 9.0
8.
Log! Log! Log! ‣
広告配信なので表示数の記録はたいへん重要 ‣ 以前は配信ログも PostgreSQL に記録していた ‣ AM 4:00 に集計バッチ処理が走る ‣ 2011年4月のサーバ構成変更時にログDBもマ スター/レプリケーションにしたところ、負荷に 負け始める
9.
PostgreSQLとの闘い ‣ パラメータチューニング ‣ 起動直後は安定して処理をさばく ‣
数分∼数十分後(不定)に処理に負け始め、接続数 不足に陥る ‣ cronで5分おきに再起動を仕掛ける回避策 ‣ そうして逃げてる間に抜本的な解決策を探る
10.
Key Value Store ‣
シンプルなデータを大量に保存するので、KVS 向きだった ‣ ただし集計用に group by 機能が欲しい ‣ まずは AWS SimpleDB を試してみる ‣ すいません、クラウドサービス使いたかったん ですw
11.
Amazon SimpleDB ‣ http://aws.amazon.com/jp/simpledb/ ‣
AWSサービス群のひとつ ‣ PHP用の公式 AWS SDK があるのでそれを使う ‣ 使い方はすごく簡単 ‣ SQLのような select 構文が使える
12.
SimpleDBの結果? ‣ インサートが遅かった ‣ バッチ挿入も試したが少しましな程度 ‣
複数台に分散してインサートすると良い? ‣ ということでキュー (Queue) に入れることにし てみる
13.
Amazon SQS +
SDB ‣ Simple Queue Service ‣ REST APIでキュー/デキューできる ‣ 処理の流れ ‣ WebサーバからSQSにデータを突っ込む ‣ SQSから取り出してSDBに入れるワーカーを EC2でつくる ‣ ワーカーを増やせばスケールするんじゃね?
14.
SQS+SDB? ‣ インサート速度は申し分なし ‣ PHPで書いたワーカーも無事に動作した ‣
本番サービスにテスト的に追加 ‣ PostgreSQL と同時に SQS にもログ保存 ‣ 一日運用したコストが$130 ‣ かなりお高いです...
15.
いよいよMongoDB ‣ SaaS な
KVS は諦め、ソフトウェアを探す ‣ MongoDB良さそうだったので、開発用の仮想 マシンサーバ上にテスト環境を構築 ‣ ReplSet 3 x Sharding 3 = 9台 ‣ バージョンは当時の安定版 1.8.1 ‣ Mongo用のPHPドライバも無事動作 ‣ インサートすごく速い ‣ 負荷めちゃ軽い
16.
MongoDBをEC2で ‣ AWS EC2上にMongoDBのテストベッド構築 ‣
Microインスタンス3台で ReplSet ‣ ただしそれぞれのリージョンは分ける ‣ 東京A, 東京B, シンガポールA ‣ Shardingもやろうとしたけどうまく動かなかっ た ‣ ストレージは EBS 1TB
17.
EC2テストベッド続き ‣ データ入力部分が出来たところで、本番データを 流し始める ‣
Microインスタンスでも問題なく処理可能 ‣ その環境をターゲットにバッチ処理部分の開発を 進める
18.
EC2 Smallの限界? ‣ ある程度バッチ処理の開発ができてきた ‣
Mongoに対しても、日時の集計処理を走らせる ようにcron設定 ‣ 翌日集計は完了していたが、ReplSetの Primary が東京A → 東京B に変わっていた。 ‣ さらに翌日には、Primary が東京Aに戻ってい た。
19.
Primaryピンポン ‣ バッチ処理が走る ‣
groupを呼び出す比較的重い処理が複数 ‣ Primaryが過負荷になってSecondaryの要求に 応えなくなる ‣ S「Primary落ちてるんじゃね?」 ‣ S「わーい投票投票」 ‣ S(東京B)「俺近いし次プライマリーやるわ」 ‣ P(東京A)「仕事をしていたらいつの間にかプラ イマリーではなくなっていた...」
20.
本番環境はLargeに ‣ 御存知の通りMongoDBは 32bit
Linux では実 用にならない。 ‣ EC2 Small インスタンスでは 64bit Linux は 使えない。 ‣ 自動的に Large 3台構成に ‣ 配置は Micro の時と同じ ‣ Large だとさすがにピンポンは起きませんでし たw
21.
ある日のプライマリーさん
22.
知見 ‣ Shardingなしでも十分速い ‣ 大規模障害対策として、AWS
東京+シンガポー ルは使える ‣ シンガポールのSecondaryを見ても、ほとん ど遅れなく同期している ‣ JSスキーにとってはMongoかわいい
23.
EC2使用料 ‣ Large x
3 ‣ CloudWatch (Monitoring) ‣ Reserved Instances ‣ 月額 $800 くらい
24.
まとめ ‣ MongoDB のおかげで急激なトラフィックにも
恐れること無く、枕を高くして眠ることができま す。 ‣ doryokujinさんいつもありがとうございます。 ‣ Fluent 使いたいです! ‣ Aggregation Mongo 使いたいです!!
25.
提供 アジャイルメディア・ネットワーク株式会社
Download now