SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
AmebaのMongoDB活用事例
Report
Akihiro Kuwano
Follow
Experienced server engineer, Solution Architect of cloud computing at Amazon Web Services Japan
Aug. 27, 2012
•
0 likes
•
7,640 views
1
of
81
AmebaのMongoDB活用事例
Aug. 27, 2012
•
0 likes
•
7,640 views
Download Now
Download to read offline
Report
Akihiro Kuwano
Follow
Experienced server engineer, Solution Architect of cloud computing at Amazon Web Services Japan
Recommended
がっつりMongoDB事例紹介
Tetsutaro Watanabe
23K views
•
36 slides
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
52.8K views
•
60 slides
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
34.4K views
•
46 slides
Redisの特徴と活用方法について
Yuji Otani
100.3K views
•
65 slides
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
12.7K views
•
35 slides
MongoDB〜その性質と利用場面〜
Naruhiko Ogasawara
65.1K views
•
61 slides
More Related Content
What's hot
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
52.3K views
•
21 slides
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
137.9K views
•
55 slides
Cassandraのしくみ データの読み書き編
Yuki Morishita
30.8K views
•
30 slides
爆速クエリエンジン”Presto”を使いたくなる話
Kentaro Yoshida
27.4K views
•
30 slides
AWS Glueを使った Serverless ETL の実装パターン
seiichi arai
574 views
•
83 slides
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
48.4K views
•
91 slides
What's hot
(20)
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
•
52.3K views
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
•
137.9K views
Cassandraのしくみ データの読み書き編
Yuki Morishita
•
30.8K views
爆速クエリエンジン”Presto”を使いたくなる話
Kentaro Yoshida
•
27.4K views
AWS Glueを使った Serverless ETL の実装パターン
seiichi arai
•
574 views
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
•
48.4K views
MongoDBのはじめての運用テキスト
Akihiro Kuwano
•
8.3K views
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
•
8K views
事例で学ぶApache Cassandra
Yuki Morishita
•
6.1K views
RDF Semantic Graph「RDF 超入門」
オラクルエンジニア通信
•
9.9K views
Vacuum徹底解説
Masahiko Sawada
•
4.9K views
Dockerからcontainerdへの移行
Kohei Tokunaga
•
16.2K views
Apache Atlasの現状とデータガバナンス事例 #hadoopreading
Yahoo!デベロッパーネットワーク
•
6.2K views
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Amazon Web Services Japan
•
57.3K views
Where狙いのキー、order by狙いのキー
yoku0825
•
39K views
PostgreSQLバックアップの基本
Uptime Technologies LLC (JP)
•
23.9K views
分散トレーシングAWS:X-Rayとの上手い付き合い方
Recruit Lifestyle Co., Ltd.
•
3.1K views
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
•
30K views
DBスキーマもバージョン管理したい!
kwatch
•
57.5K views
AWSのログ管理ベストプラクティス
Akihiro Kuwano
•
76.7K views
Viewers also liked
CyberAgentにおけるMongoDB
Akihiro Kuwano
17.7K views
•
94 slides
ログ管理のベストプラクティス
Akihiro Kuwano
23.2K views
•
81 slides
18 a-6 ameba pigg backend practice 20110217
Akihiro Kuwano
3.5K views
•
75 slides
勉強会コミュニティがぼくの エンジニア人生にもたらした事。 あと、NoSQLとの付き合い方。
Akihiro Kuwano
2.6K views
•
82 slides
後悔しないもんごもんごの使い方 〜サーバ編〜
Akihiro Kuwano
8.2K views
•
81 slides
やさぐれギンガさんのアーキテクチャ入門(ためしてガッテン)(仮)
Akihiro Kuwano
2K views
•
48 slides
Viewers also liked
(20)
CyberAgentにおけるMongoDB
Akihiro Kuwano
•
17.7K views
ログ管理のベストプラクティス
Akihiro Kuwano
•
23.2K views
18 a-6 ameba pigg backend practice 20110217
Akihiro Kuwano
•
3.5K views
勉強会コミュニティがぼくの エンジニア人生にもたらした事。 あと、NoSQLとの付き合い方。
Akihiro Kuwano
•
2.6K views
後悔しないもんごもんごの使い方 〜サーバ編〜
Akihiro Kuwano
•
8.2K views
やさぐれギンガさんのアーキテクチャ入門(ためしてガッテン)(仮)
Akihiro Kuwano
•
2K views
MongoDBの可能性の話
Akihiro Kuwano
•
2.9K views
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
Akihiro Kuwano
•
13.2K views
Chef環境の闇
Akihiro Kuwano
•
6.6K views
WiredTigerストレージエンジン楽しい
Akihiro Kuwano
•
11.1K views
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
Akihiro Kuwano
•
2.8K views
MongoDBのアレをアレする
Akihiro Kuwano
•
14.5K views
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
•
4K views
アメーバピグにおける自作サーバ運用それからどうなった
Akihiro Kuwano
•
11.1K views
qpstudy 〜初心者にやさしいインフラ勉強会〜 の紹介
Akihiro Kuwano
•
1.5K views
実環境にTerraform導入したら驚いた
Akihiro Kuwano
•
28.3K views
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
Akihiro Kuwano
•
16K views
インフラエンジニアってなんでしたっけ(仮)
Akihiro Kuwano
•
102.5K views
Back end-of-innovation-6-2013-brochure
Liberteks
•
2K views
カジュアルにMongo dbのbackup機能説明
Masakazu Matsushita
•
12.4K views
Similar to AmebaのMongoDB活用事例
[大図解]ピグライフはこう動いている
Akihiro Kuwano
12.3K views
•
35 slides
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
Takahiro Inoue
43.2K views
•
89 slides
LINEのMySQL運用について
LINE Corporation
3.1K views
•
63 slides
PHP開発者のためのNoSQL入門
じゅん なかざ
6.3K views
•
66 slides
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
Couchbase Japan KK
2K views
•
35 slides
データベース屋がHyperledger Fabricを検証してみた
Hyperleger Tokyo Meetup
10.2K views
•
31 slides
Similar to AmebaのMongoDB活用事例
(20)
[大図解]ピグライフはこう動いている
Akihiro Kuwano
•
12.3K views
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
Takahiro Inoue
•
43.2K views
LINEのMySQL運用について
LINE Corporation
•
3.1K views
PHP開発者のためのNoSQL入門
じゅん なかざ
•
6.3K views
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
Couchbase Japan KK
•
2K views
データベース屋がHyperledger Fabricを検証してみた
Hyperleger Tokyo Meetup
•
10.2K views
ビッグデータ活用支援フォーラム
Recruit Technologies
•
3.4K views
20120831 mongoid
Takeshi AKIMA
•
1.9K views
WebDB Forum 2012 基調講演資料
Recruit Technologies
•
4.3K views
既存システムへの新技術活用法 ~fluntd/MongoDB~
じゅん なかざ
•
2K views
AWS re:Invent2017で見た AWSの強さとは
NTT Communications Technology Development
•
1.3K views
Web Operations and Perl kansai.pm#14
Masahiro Nagano
•
2.1K views
Mongo db world 2018
Creationline,inc.
•
102 views
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Yahoo!デベロッパーネットワーク
•
22.7K views
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
Hadoop / Spark Conference Japan
•
2.4K views
AWSのNoSQL入門
Akihiro Kuwano
•
13.1K views
ビッグデータ&データマネジメント展
Recruit Technologies
•
6.5K views
081108huge_data.ppt
Naoya Ito
•
2.8K views
NoSQLとビックデータ入門編Update版
Koichiro Nishijima
•
4.1K views
Windows Server 2019 の Hyper-Converged Infrastructure (HCI)
Hiroshi Matsumoto
•
2.7K views
More from Akihiro Kuwano
今日はMongoDBの話はしない
Akihiro Kuwano
1.8K views
•
27 slides
銀河レベルのLT(とは)
Akihiro Kuwano
6.1K views
•
37 slides
ビックデータ最適解とAWSにおける新しい武器
Akihiro Kuwano
4.8K views
•
52 slides
DevOpsのはじめの一歩 〜監視の変遷〜
Akihiro Kuwano
2.2K views
•
25 slides
ザ・ドキュメント~うまくいかないNoSQL~
Akihiro Kuwano
27.4K views
•
21 slides
Fusion io
Akihiro Kuwano
2.4K views
•
16 slides
More from Akihiro Kuwano
(8)
今日はMongoDBの話はしない
Akihiro Kuwano
•
1.8K views
銀河レベルのLT(とは)
Akihiro Kuwano
•
6.1K views
ビックデータ最適解とAWSにおける新しい武器
Akihiro Kuwano
•
4.8K views
DevOpsのはじめの一歩 〜監視の変遷〜
Akihiro Kuwano
•
2.2K views
ザ・ドキュメント~うまくいかないNoSQL~
Akihiro Kuwano
•
27.4K views
Fusion io
Akihiro Kuwano
•
2.4K views
IOAについて
Akihiro Kuwano
•
1.3K views
Mon, Muninによる楽々監視生活
Akihiro Kuwano
•
36.4K views
AmebaのMongoDB活用事例
1.
AmebaのMongoDB
活用事例 株式会社サイバーエージェント アメーバ事業本部ピグディヴィジョン 桑野 章弘 12年8月24日金曜日
2.
アジェンダ
n Amebaのサービス n サービス環境の変遷 n サービスを支えるMongoDB n 困ったことなど n 運用について n まとめ 12年8月24日金曜日
3.
自己紹介
n 桑野章弘 l サイバーエージェント l Ameba を運営しています。 l ピグソーシャルゲームの運用/構築を担当 l Twitter l @kuwa_tw l Blog l http://d.hatena.ne.jp/akuwano/ 12年8月24日金曜日
4.
ピグライフ 12年8月24日金曜日
5.
ピグライフ
n サービス情報 l 2011/05/31オープン l 会員数360万人(2012/01現在) l サービス開始3週間で100万人突破 l 接続数:20万同時接続 12年8月24日金曜日
6.
ピグアイランド 12年8月24日金曜日
7.
ピグアイランド
n サービス情報 l 2012/05/22オープン l サービス開始5日で100万人突破 l 接続数:約10万同時接続 12年8月24日金曜日
8.
ピグカフェ 12年8月24日金曜日
9.
ピグカフェ
n サービス情報 l 2012/08/21オープン 12年8月24日金曜日
10.
様々なサービスをピグ
プラットフォームで 展開中 12年8月24日金曜日
11.
これらのサービスは全
てMongoDBを使っ ています 12年8月24日金曜日
12.
サービス環境の変遷 12年8月24日金曜日
13.
n まずは弊社サービスの成長の変遷について説明し
ます 12年8月24日金曜日
14.
アーキテクチャ
n アプリケーションサーバ l Node.js l Nginx n データストアサーバ l MongoDB 12年8月24日金曜日
15.
アーキテクチャ
BackEnd FrontEnd ユーザ/エリア等の状態 データ staticサーバ Node.jsサーバ Socketサーバ mongodbサーバ Flashデータ 必要なデータの取得 →リクエスト/取得 HTTP WebSocket接続 ・ユーザ情報 ・チャットデータ →リクエスト/取得 ユーザ (ブラウザ:Flash) 12年8月24日金曜日
16.
[ピグライフ]の変遷 12年8月24日金曜日
17.
ピグライフ
n リリースから現在 l βテスト時代 l リリース後 l 現在 12年8月24日金曜日
18.
ピグライフ
n リリースから現在 l βテスト時代 l リリース後 l 現在 どんなフェーズを経たか 12年8月24日金曜日
19.
ピグライフ:βテスト時代
n 4/26∼5/31 l テストユーザ数5000∼30000 l 毎日リリース、機能追加、インフラ構成変更 l サーバも最小限を用意 12年8月24日金曜日
20.
ピグライフ:βテスト時代
βテスト時に実 装 6 mongos 行動ログの保存 Staticサーバ Node.jsサーバ MongoDB Log MongoDB 12年8月24日金曜日
21.
ピグライフ:リリース後
n 問題点洗い出しのフェーズ l Node.jsのサーバや、mongodbも、パフォーマン スが出ていなかったため増設 l Swfファイルをnode.jsのサーバから静的ファイル専 用のサーバへと切り出す 12年8月24日金曜日
22.
ピグライフ:リリース後
n 5/31 ∼ l ピグライフ、正式リリース l 人気が爆発、予想以上の伸び l 開始3週間(6/22)で100万人突破 l とにかく増設の時期 12年8月24日金曜日
23.
リリース時構成
大量追加 3 44 mongos 行動ログの保存 サーバにも取得 Staticサーバ Node.jsサーバ MongoDB Log 1シャード追加 (合計4シャー ド) MongoDB 12年8月24日金曜日
24.
ピグライフ:リリース後
n パフォーマンス確保のフェーズ l ボトルネック調査 l 状況を見つつサーバ台数、リソースの確保 12年8月24日金曜日
25.
ピグライフ:現在
n 9/1 ∼ l 順調な成長 l 開始3ヶ月弱(8/22)で200万人突破 12年8月24日金曜日
26.
現在時構成
リリース時切替 高スペックサー バにリプレイス 5 5 10 10 Node.jsサーバ_B系 mongos mongos Staticサーバ_A系 Staticサーバ_B系 Node.jsサーバ_A系 行動ログの保存 DB統合 23シャード追 加(合計27 ・・・・・ シャード=81 台) MongoDB 12年8月24日金曜日
27.
ピグライフ:現在
n 運用改善のフェーズ l メンテ時間短縮のため稼働グループを分割 l A系、B系での切替 l 構成はシンプルにしていく l CDNなどの導入検討 (CDNを入れられるように仕様変更) 12年8月24日金曜日
28.
ピグライフ:成長速度
n 成長速度 l リリースから3ヶ月程度で、サーバ規模としては8倍 に。それにともなって、トラフィック(1.3Gbps)、 総コネクション数(18万)も増加。 l その期間は3ヶ月余り。3週間の伸びは単位にすれば 30倍 サービスの予想以上の成長 12年8月24日金曜日
29.
サービスを支える
MongoDB 12年8月24日金曜日
30.
この成長速度を支えた
MongoDBの基本的 な機能 12年8月24日金曜日
31.
MongoDBの構成 アプリケーションサー
バ mongos Mongod[ShardA] Mongod[ShardB] mongoc Mongod[ShardC] 12年8月24日金曜日
32.
アーキテクチャについて
n システムアーキテクチャ l スキーマレス l 冗長化 l ReplicaSets l スケーラビリティ l Sharding 12年8月24日金曜日
33.
アーキテクチャの課題
n スキーマレスなデータ構造による柔軟なデータ管 理 l ユーザ情報なども柔軟に持つことができるので、機能 追加時等が比較的楽 l 次ページ例 12年8月24日金曜日
34.
アーキテクチャの課題
n スキーマレスなデータ構造 l ユーザーコレクションに趣味を追加したい場合 { "_id" : "1234567889", "userid" : "akuwano", "username" : "Akihiro Kuwano" } { "_id" : "1234567889", "userid" : "akuwano", "hobby" : Movie , "username" : "Akihiro Kuwano" } 12年8月24日金曜日
35.
アーキテクチャの課題
n ReplicaSets l 相互死活監視&投票により冗長性を保つ。最小単位は 3台。 プライマリ セカンダリ セカンダリ 12年8月24日金曜日
36.
アーキテクチャの課題
n ReplicaSets l 相互死活監視&投票により冗長性を保つ。最小単位は 3台。 生きているサー プライマリ バで投票が行わ れ新しいプライ マリが選ばれる セカンダリ セカンダリ → プライマリ 12年8月24日金曜日
37.
アーキテクチャの課題
n Sharding l データをChunkの細かい粒度に分割する。 各mongodに分散して渡すことで各サーバの負荷を 分散します 12年8月24日金曜日
38.
MongoDBの構成
Sharding アプリケーションサー ReplicaSetsに データをChunk バ よりサーバの冗長 の単位に分ける 性を確保 DATA mongos Mongod[ShardA] Mongod[ShardB] mongoc Mongod[ShardC] 12年8月24日金曜日
39.
MongoDBの構成
Sharding アプリケーションサー ReplicaSetsに データをChunk バ よりサーバの冗長 の単位に分ける 性を確保 ChunkA ChunkB ChunkC mongos mongocは Mongod[ShardA] シャーディング情 報を持つ Mongod[ShardB] mongoc ChunkA -> ShardA ChunkB -> ShardB Mongod[ShardC] ChunkC -> ShardC 12年8月24日金曜日
40.
MongoDBの構成 アプリケーションサー
ReplicaSetsに バ よりサーバの冗長 Sharding データをChunk 性を確保 の単位に分ける mongos mongocは ChunkA Mongod[ShardA] シャーディング情 報を持つ ChunkB Mongod[ShardB] mongoc ChunkA -> ShardA ChunkB -> ShardB ChunkC Mongod[ShardC] ChunkC -> ShardC 12年8月24日金曜日
41.
アーキテクチャの課題
n MongoDBのこれらの基本機能により、アプリ 側の実装コストは軽くなります。 n 前述した、9台→100台への変更においても、ア プリ側のDB接続部分の変更点は殆どありませ ん。 n スケーラビリティを保ったまま、シンプルなサー ビス構築を行うことができています。 12年8月24日金曜日
42.
使いどころ 12年8月24日金曜日
43.
まとめ
n データ量が大き過ぎない n 書き込みが多過ぎない n 単位時間あたりの処理データが各シャードのメモ リ量を超えない処理は得意 l 現在のピグ系のリアルタイム処理には合っている n ホットデータが無い様なデータの使い方は苦手 12年8月24日金曜日
44.
困ったことについて 12年8月24日金曜日
45.
運用中に困ったことに
ついて 12年8月24日金曜日
46.
n クラスターのスローダウン
l 必要なデータを一気にデータをインポートした場合 l oplogデータ量範囲を超えてレプリケーションが停止 l 一度に入れたため、PrimaryShardにChunkが溜 まってしまいI/Oバウンドに l 負荷が高いのでBalancerは動かないためクラスタの スローダウン →Oplogの容量を増やすことができるのでそれらで対 応 12年8月24日金曜日
47.
n シャード設定のスローダウン
l ほんとに突然パフォーマンスダウンする 「10分前は動いてたけど、、、」 l PrimaryShardはリソースを潤沢な状態にする l 各シャードのmmapの容量が実メモリを超えてきた ら注意する →シャード設定は定期的に確認&シャードの設定を自 動化 12年8月24日金曜日
48.
n データ肥大
l 運用していくに連れてデータの肥大化が起きます l 定期的なデータのコンパクションが必要です l repairコマンドは、データ容量と同容量のスペース を利用するので注意 l データ容量が小容量かつ、一時的にMongoDBのク ラスタを止められるなら、データdrop→データ resoreの方が簡単です。 12年8月24日金曜日
49.
n ドライバ関連
l Node.jsのドライバのバージョンによってデータの持 ち方などが異なる場合があった(現在は解消)ので、 バージョンアップは慎重に行ないましょう 12年8月24日金曜日
50.
日々の運用 12年8月24日金曜日
51.
ここからは実際の運用
でやっていること 12年8月24日金曜日
52.
n MongoDBに使用するハードウェア
l CPU l (現在は)CPUはあまり負荷が来ないためそれほど良い物で なくて良い l そのかわりノードを増やすことになるのであればラックの効 率を上げるため消費電力の少ないものを選択する 12年8月24日金曜日
53.
n MongoDBに使用するハードウェア
l メモリ l 積めば積むほどキャッシュが効くのでできるだけ積む l 現在は1ノード32GBのサーバを用意 12年8月24日金曜日
54.
n MongoDBに使用するハードウェア
l DISK l こちらも書き込み、読み込みが早いに越したことは無い l 今までは、SAS * 4 RAID10 -> SSD * 2 RAID0となっ ている。 l 現在はSSDはSASの3倍のiopsが出ています。 l FileSystemはxfs or ext4(高速なfallocate()がサ ポートされている必要があるため) 12年8月24日金曜日
55.
n MongoDBに使用するハードウェア
l DISK l ioDriveでの検証に関しては、現状では8000opsを超えた 位でReplicaSetsのoplogの転送が止まる事を確認してい ます。 l 速度は3倍以上出ていたので、単体で使用するようなデータに は使えるかもしれません。(試してないです) l 2.2以降では改善されている可能性があるので再検証予定 12年8月24日金曜日
56.
n バックアップ
l mongodump l ReplicaSetsのDelay 12年8月24日金曜日
57.
n バックアップ
l mongodump l mongosに対してmongodump実行するのはバックアッ プとしては一番簡単です。 l 稼働中にかけると完全なポイントイン・タイムのバックアッ プにはなりません 12年8月24日金曜日
58.
n バックアップ
l 稼働中にスナップショットバックアップを取得 l 1,mongos経由でAutoBalancingをOff l 2,各レプリカセットにfsync lockをかける l 3,各mongodからデータを取得する(AWSなら Snapshotがいいですね) l 4,各レプリカセットにfsync unlock l 5,mongos経由でAutoBalancingをOn 12年8月24日金曜日
59.
バックアップの構成
1、Chunkが アプリケーションサー 2,fsync lock バックアップ中に バ をかけることで更 移動させない 新を止める mongos Mongod[ShardA] 3,各シャードか らデータを取得 Mongod[ShardB] mongoc Mongod[ShardC] 12年8月24日金曜日
60.
n バックアップ
l ReplicasetsのDelay l バックアップと言うよりはオペミスの防止 l 常に最新の状態よりも一定期間古い状態となる、 Replicasetsを追加します 12年8月24日金曜日
61.
RS Delayの構成 アプリケーションサー
この Replica バ Sets のみ、他の RSよりも3時間 前のデータを持つ mongos Mongod[ShardA] Mongod[ShardB] mongoc Mongod[ShardC] 12年8月24日金曜日
62.
n Index
l indexが効いているかはexplain()で確認 l できるだけPK=_id で検索する実装にする replSetTest1001:PRIMARY> db.User.find({'Field01': 'test'}).explain() { "cursor" : "BtreeCursor testIndex_1", "nscanned" : 1, "nscannedObjects" : 1, "n" : 1, "millis" : 7, "nYields" : 0, 12年8月24日金曜日
63.
n ロック
l 同じサーバ上に異常に書き込みの多いコレクションが あるとクラスタ全体のアクセスに影響するため、コレ クションを分ける l アプリ実装はコレクション間を疎結合で作る l 2.2系でDBレベルロックが実装されるとDBを分けれ ばよいのでこの様な手順は要らない 12年8月24日金曜日
64.
n ロック
Collection A Collection B Collection C 12年8月24日金曜日
65.
n ロック
Collection A Collection C Collection B 12年8月24日金曜日
66.
n ロック
Collection A Collection C Collection B 12年8月24日金曜日
67.
n 運用効率化
l どうしても台数が多くなる傾向にあります。 l そのため「標準のコマンドだと表示が多すぎて見づら い」「今のマスターの一覧が簡単に出したい」等の不 満がでます。 l これらはスクリプト作成等で対応しています、このあ たりもJSONで各種データを取ってこれるために管理 ツールなどは作りやすいです。 12年8月24日金曜日
68.
n 運用効率化 :運用スクリプトの内容
l ロックタイムの取得 l シャードに入っているmongod一覧のリスト出力 l レプリカセットのマスター検索 l レプリカセットのpriority検索 l printShardingStatusの整形 l レプリカセット一括作成/設定変更(現在のRSに Delayホスト追加するなど) 12年8月24日金曜日
69.
n 各種コマンド、ステータスなど
l トレンドが見たい l 現状が把握したい 12年8月24日金曜日
70.
n 各種コマンド、ステータスなど
l mongostat l mongotop l mongosniff 12年8月24日金曜日
71.
n mongostat
l クエリや、プロセスの現状を確認するコマンド $ ./mongostat --host 192.168.8.41:27018,192.168.8.62:27018 insert query update delete getmore command flushes mapped vsize res faults locked % idx miss % qr¦qw ar¦aw netIn netOut conn set repl time 192.168.8.41:27018 0 361 132 0 209 437 0 36.1g 76.2g 14.3g 1 2.2 0 0¦0 2¦0 85k 698k 3056 RSTest1001 M 11:16:57 192.168.8.62:27018 0 384 164 0 245 480 0 30.1g 63.9g 15.6g 0 2 0 0¦0 2¦0 96k 652k 2587 RSTest1002 M 11:16:57 12年8月24日金曜日
72.
n mongostat -
見るべき項目 l faults - 1秒当りのページフォールト数 l Locked % - グローバルライトロックの時間割合 l idx miss % - indexのヒット率の時間割合 l qr¦qw - 読み込みキュー¦書き込みキュー の大きさ 12年8月24日金曜日
73.
n mongostat -
見るべき項目 l faults が多い場合 キャッシュメモリ溢れの可能性があるので、メモリ、 もしくはサーバを増設 l Locked % が高い場合 書き込みのクエリを見直す or クラスタ分割。 l qr¦qw が高い場合 サーバ負荷が低ければ、ロックの可能性を疑う。負荷 が高ければ単純なクエリ増による高負荷を疑う。 12年8月24日金曜日
74.
n mongotop
l 現在重いmongodのどのcollectionへアクセスがか かっているかを確認したりとかできまする。 l 障害の時がメイン $ /usr/local/mongodb2_1/bin/mongotop --host mongos_ip --port 27018 connected to: mongos_ip ns total read write writeに時間 2012-05-23T02:14:12 がかかってい local.oplog.rs 1929ms 1929ms 0ms life_prd_main.TestOnline 0ms 500ms 10ms life_prd_main.Test2Soil 8ms 0ms 8ms 12年8月24日金曜日
75.
n mongosniff
l 最後はパケットキャプチャですので、何か会った際の アクセス状況の確認が可能 l mongosのアクセス状況とか、複雑なクエリを見た い場合はこれで見るのが良い # mongosniff --source NET eth0 27017 # 以下にパケットがズラズラっと並ぶ 127.0.0.1:55858 -->> 127.0.0.1:27017 testdatabase.TestCol1 89 bytes id:kjkjkjkj 14086840 query: { _id: "1234567891234567" } ntoreturn: -1 ntoskip: 0 127.0.0.1:27017 <<-- 127.0.0.1:55858 205 bytes id:77383268 2000171624 - 14086840 12年8月24日金曜日
76.
n ステータス確認・変更
l profiling l loglevel変更 l db.adminCommand("connPoolStats") l db.serverStatus() l db.currentOp() l db.collection.stat() l db.stats() 12年8月24日金曜日
77.
まとめ 12年8月24日金曜日
78.
まとめ
n まだ各所に未熟な点はありますが、運用を安定さ せる事で、綺麗な構成でスケーラビリティを確保 したサービスを構築することができるプロダクト になる可能性がMongoDBにはあると考えてい ます。 12年8月24日金曜日
79.
まとめ
n 今後のアップデートなども様々な物が控えてお り、現在の問題点も徐々に改善されると考えてお ります。 12年8月24日金曜日
80.
まとめ
n ただ、NoSQLは適材適所、という言葉もあり、 徐々に使って慣れていくのが大事だと思います。 スモールスタートでまずは使ってみてはどうで しょうか。 12年8月24日金曜日
81.
ご清聴ありがとう
ございました 12年8月24日金曜日