More Related Content
PPTX
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料) PDF
PDF
Elasticsearchを使うときの注意点 公開用スライド PDF
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App... PPTX
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料) PDF
PPTX
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料) PPTX
What's hot
PDF
アーキテクチャから理解するPostgreSQLのレプリケーション PDF
PDF
PDF
PPTX
PPTX
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料) PDF
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発 PDF
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス PDF
PDF
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern PDF
PPTX
PDF
ログ解析基盤におけるストリーム処理パイプラインについて PPTX
PDF
PDF
PDF
PPTX
「DNS浸透いうな」と言うけれど… (#ssmjp 2018/07) PDF
これからLDAPを始めるなら 「389-ds」を使ってみよう Similar to CyberAgentにおけるMongoDB
PDF
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編) PDF
データベース勉強会 In 広島 mongodb PDF
PPT
PDF
PDF
PDF
PDF
CasualなMongoDBのサービス運用Tips PPT
PDF
PPTX
MongoDB on EC2 #mongodbcasual PDF
PPT
KEY
ソーシャルゲームログ解析基盤のMongoDB活用事例 DOC
DOC
PDF
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land PDF
PDF
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜 PDF
PHPで大規模ブラウザゲームを開発してわかったこと More from Akihiro Kuwano
PDF
PDF
PDF
PDF
PDF
PDF
PPTX
PDF
PDF
PDF
PDF
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴 PDF
PDF
アメーバピグにおける自作サーバ運用それからどうなった PDF
PDF
勉強会コミュニティがぼくの エンジニア人生にもたらした事。 あと、NoSQLとの付き合い方。 PDF
やさぐれギンガさんのアーキテクチャ入門(ためしてガッテン)(仮) PDF
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。 PDF
泥臭い運用から、プログラマブルインフラ構築(に行きたい) ODP
qpstudy 〜初心者にやさしいインフラ勉強会〜 の紹介 PDF
CyberAgentにおけるMongoDB
- 1.
- 2.
- 3.
自己紹介
n 桑野章弘
l サイバーエージェント
lAmeba を運営しています。
l ピグソーシャルゲームの運用/構築を担当
l Twitter
l @kuwa_tw
l Blog
l http://d.hatena.ne.jp/akuwano/
13年12月12日木曜日
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
n データ肥大
l 運用していくに連れてデータの肥大化する
l定期的なデータのコンパクションが必要です
l repairコマンドは、データ容量と同容量のスペース
を利用するので注意
l データ容量が小容量かつ、一時的にMongoDBを止
められる場合、データdrop→データresoreの方が
簡単です。
l RS組んでいるならローリングコンパクション
13年12月12日木曜日
- 60.
- 61.
- 62.
- 63.
- 64.
n MongoDBに使用するハードウェア
l DISK
lこちらも書き込み、読み込みが早いに越したことは無い
l 今までは、SAS * 4 RAID10 -> SSD * 2 RAID0
l 現在はSSDはSASの3倍のiops
l FileSystemはxfs or ext4
- 高速なfallocate()がサポートが必要
13年12月12日木曜日
- 65.
n MongoDBに使用するハードウェア
l DISK
lioDriveでの検証は、現状では8000opsを超えた位で
ReplicaSetsのoplogの転送が止まる事を確認していた
l が バージョン2.4ではこの現象はない=ioDrive 等を上手く
活用することでサーバ台数を減らすことができる
13年12月12日木曜日
- 66.
- 67.
n バックアップ
l mongodump
lmongosに対してmongodump実行するのはバックアッ
プとしては一番簡単
- 稼働中ではポイントイン・タイムバックアップではない
l mongodumpはmongodが起動していなくてもデータフ
ァイルに直接かけてBSONファイルを取得できるので、これ
を利用してポイントイン・タイムのバックアップを実装して
います
13年12月12日木曜日
- 68.
n バックアップ
l 稼働中にスナップショットバックアップを取得
lRSメンバとしてarbiterとnovoteのプロセスを起動
l 1,mongos経由でAutoBalancingをOff
l 2,各レプリカセットのnovoteプロセスをダウン
l 3,各mongodからmongodumpでデータ取得
l 4 , mongos経由でAutoBalancingをOn
l 5 ,各Dumpデータの収集
l
13年12月12日木曜日
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
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,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
13年12月12日木曜日
- 75.
n Index
l 詳しいオプティマイザの実行結果が欲しい場合
は.explain(true)
replSetTest1001:PRIMARY> db.User.find({'_id': 'test'}).explain(true)
"allPlans" : [
{
"cursor" : "BtreeCursor _id_",
"n" : 1,
"nscannedObjects" : 1,
"nscanned" : 1,
"indexBounds" : {
"start" : {
"_id" : "test"
},
13年12月12日木曜日
- 76.
- 77.
- 78.
- 79.
- 80.
n 運用効率化 :運用スクリプトの内容
lロックタイムの取得
l シャードに入っているmongod一覧のリスト出力
l レプリカセットのマスター検索
l レプリカセットのpriority検索
l printShardingStatusの整形
l レプリカセット一括作成/設定変更(現在のRSに
Delayホスト追加するなど)
13年12月12日木曜日
- 81.
- 82.
- 83.
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
13年12月12日木曜日
- 84.
n mongostat -見るべき項目
l faults - 1秒当りのページフォールト数
l Locked % - グローバルライトロックの時間割合
l idx miss % - indexのヒット率の時間割合
l qr¦qw - 読み込みキュー¦書き込みキュー の大きさ
13年12月12日木曜日
- 85.
n mongostat -見るべき項目
l faults が多い場合
キャッシュメモリ溢れの可能性があるので、メモリ、
もしくはサーバを増設
l Locked % が高い場合
書き込みのクエリを見直す or クラスタ分割。
l qr¦qw が高い場合
サーバ負荷が低ければ、ロックの可能性を疑う。負荷
が高ければ単純なクエリ増による高負荷を疑う。
13年12月12日木曜日
- 86.
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
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
13年12月12日木曜日
writeに時間
がかかってい
- 87.
n mongosniff
l 最後はパケットキャプチャですので、何か会った際の
アクセス状況の確認が可能
lmongosのアクセス状況とか、複雑なクエリを見た
い場合はこれで見るのが良い
# 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
13年12月12日木曜日
- 88.
n ステータス確認・変更
l profiling
lloglevel変更
l Working Set Analyzer
l db.adminCommand("connPoolStats")
l db.serverStatus()
l db.currentOp()
l db.collection.stat()
l db.stats()
13年12月12日木曜日
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.