CasualなMongoDB
             のサービス運用Tips

               GCREST, Inc.
              瀬賀 直樹(@nsega)
12年7月6日金曜日
About me
             • 瀬賀 直樹(Twitter: @nsega)
             • 株式会社ジークレスト
             • @games(アットゲームズ)
               アバターコミュニティポータルサイト
               http://www.atgames.jp/
             • Webエンジニア(主にサーバサイド)
12年7月6日金曜日
Agenda

             • MongoDB、サービスで満1年間運用
             • そのときの運用Tipsを紹介
             • 惜しまずだしますm(__)m


12年7月6日金曜日
Use Case
             SNS 機能の更新頻度が高いデータの
             データストアにMongoDBを利用

             • イイネ!などのボタンアクション履歴
             • 足あと 履歴
             • つぶやきコメント
12年7月6日金曜日
sharding (3 shards)
 MongoDB Server
   9 Servers           config1 mongod        mongod [1]primary

  (Version 2.0.2)      config2 mongod         mongod [2]primary


                       config3 mongod         mongod [3]primary

    mongos router
     mongos router
      mongos router

 Web Server           mongod [1]secondary    mongod [1] arbitor
  14 servers
                      mongod [2]secondary    mongod [2] arbitor




   Auto Sharding      mongod [3]secondary    mongod [3] arbitor

         OFF
12年7月6日金曜日
Tips 1


             定期的な計測
    (なにを計測するか?)

12年7月6日金曜日
Tips 1
             • Collection/Document 数の増減
              ex) >db.usercollection. find. count()
                 >db.usercollection. stats()
             • Sharding の偏り
              ex) > printShardingSize()
             • Disk 使用状況の把握
              ex) $ df -hT 、もしくは、
                  $du -sh ${MONGODB_HOME}
12年7月6日金曜日
Tips 2

             定期的な
             バックアップ

12年7月6日金曜日
Tips 2

         • MongoDB プロセスを丸々止めることが
             可能な場合
             =>データファイルをコピー(OSコマンド)す
             れば、OK!!
             (コールドバックアップ)



12年7月6日金曜日
Tips 2
             • プロセスを止めることができない場合
              =>MongoDBのツールである mongodump
              利用する(よく使っている)
              =>ReplicaSetのsecondary(参照させない)
              からとればサービス稼働中でも取得可
              http://www.mongodb.org/display/DOCS/
              Backups

12年7月6日金曜日
Tips 3

              定期的な
             データ最適化

12年7月6日金曜日
Tips 3

             • 定期的にRepairDatabaseコマンド実施
              ex) mongod --repair
              --repairオプション指定でプロセス起動

              ex) > db.repairDatabase()
              mongoシェルにて上のコマンド実行


12年7月6日金曜日
Tips 3
         Advantages
             • Diskサイズ(データファイル) 縮小
               => Insert/Delete だけのCollectionの場
               合、実はMongoのDocumentの中身は歯
               抜けで使用効率がわるくなりやすい。

             • Index の最適化( Rebuild )
               =>Casualなんだから、わかるよね?
12年7月6日金曜日
Tips 3
         Disadvantages
             • 時間かかる。全データが対象だから
             • サーバにその時点のデータファイルサ
              イズ以上の空きがないとエラーになる

             • 話している内容がCasualか甚だ疑問。
              ※異論は認める
12年7月6日金曜日
Tips 3

             • v2系より、コレクション単位で最適化
              可能。Indexもrebuildしてくれる
              ex) db.collection.compact()

              ※Diskサイズは減らない。
              http://www.mongodb.org/display/DOCS/
              compact+Command

12年7月6日金曜日
Tips 4

              定期的な
             バージョンアップ

12年7月6日金曜日
Tips 4

             • v.1.8系(v1.8.2) => v.2.0系(v.2.0.2)
               バージョンアップを実施。

               方法はこの資料にまとめてみました
               http://www.slideshare.net/n-sega/from-
               mongodb-v182-to-v202


12年7月6日金曜日
Tips 4
             • 性能、機能改善
               Index サイズ Down
               Performance Up
               Journaling による 耐障害性 Up

             • バグfix (Global write lock まわり)
               ※v1系に比べての話。


12年7月6日金曜日
Tips 4
             • 例のGlobal write lock問題もv2系になっ
              たことでだいぶ解消
              ※v1系に比べて。

             • v.2.2系ではglobal write lockが発生しなく
              なるとか。
              http://blog.serverdensity.com/2012/05/23/
              goodbye-global-lock-mongodb-2-0-vs-2-2/
12年7月6日金曜日
Conclusion

12年7月6日金曜日
Conclusion

             • 運用を想定したデータストアの設計す
              れば、サービスで安定稼働実現可能な
              プロダクト。

             • 愛用者には、人柱多し。ノウハウ・実
              績はかなり豊富。


12年7月6日金曜日
\(・ω・)/Let's MongoDB!!




12年7月6日金曜日
ご静聴ありがとう
             ございました!!


12年7月6日金曜日

CasualなMongoDBのサービス運用Tips

  • 1.
    CasualなMongoDB のサービス運用Tips GCREST, Inc. 瀬賀 直樹(@nsega) 12年7月6日金曜日
  • 2.
    About me • 瀬賀 直樹(Twitter: @nsega) • 株式会社ジークレスト • @games(アットゲームズ) アバターコミュニティポータルサイト http://www.atgames.jp/ • Webエンジニア(主にサーバサイド) 12年7月6日金曜日
  • 3.
    Agenda • MongoDB、サービスで満1年間運用 • そのときの運用Tipsを紹介 • 惜しまずだしますm(__)m 12年7月6日金曜日
  • 4.
    Use Case SNS 機能の更新頻度が高いデータの データストアにMongoDBを利用 • イイネ!などのボタンアクション履歴 • 足あと 履歴 • つぶやきコメント 12年7月6日金曜日
  • 5.
    sharding (3 shards) MongoDB Server 9 Servers config1 mongod mongod [1]primary (Version 2.0.2) config2 mongod mongod [2]primary config3 mongod mongod [3]primary mongos router mongos router mongos router Web Server mongod [1]secondary mongod [1] arbitor 14 servers mongod [2]secondary mongod [2] arbitor Auto Sharding mongod [3]secondary mongod [3] arbitor OFF 12年7月6日金曜日
  • 6.
    Tips 1 定期的な計測 (なにを計測するか?) 12年7月6日金曜日
  • 7.
    Tips 1 • Collection/Document 数の増減 ex) >db.usercollection. find. count() >db.usercollection. stats() • Sharding の偏り ex) > printShardingSize() • Disk 使用状況の把握 ex) $ df -hT 、もしくは、 $du -sh ${MONGODB_HOME} 12年7月6日金曜日
  • 8.
    Tips 2 定期的な バックアップ 12年7月6日金曜日
  • 9.
    Tips 2 • MongoDB プロセスを丸々止めることが 可能な場合 =>データファイルをコピー(OSコマンド)す れば、OK!! (コールドバックアップ) 12年7月6日金曜日
  • 10.
    Tips 2 • プロセスを止めることができない場合 =>MongoDBのツールである mongodump 利用する(よく使っている) =>ReplicaSetのsecondary(参照させない) からとればサービス稼働中でも取得可 http://www.mongodb.org/display/DOCS/ Backups 12年7月6日金曜日
  • 11.
    Tips 3 定期的な データ最適化 12年7月6日金曜日
  • 12.
    Tips 3 • 定期的にRepairDatabaseコマンド実施 ex) mongod --repair --repairオプション指定でプロセス起動 ex) > db.repairDatabase() mongoシェルにて上のコマンド実行 12年7月6日金曜日
  • 13.
    Tips 3 Advantages • Diskサイズ(データファイル) 縮小 => Insert/Delete だけのCollectionの場 合、実はMongoのDocumentの中身は歯 抜けで使用効率がわるくなりやすい。 • Index の最適化( Rebuild ) =>Casualなんだから、わかるよね? 12年7月6日金曜日
  • 14.
    Tips 3 Disadvantages • 時間かかる。全データが対象だから • サーバにその時点のデータファイルサ イズ以上の空きがないとエラーになる • 話している内容がCasualか甚だ疑問。 ※異論は認める 12年7月6日金曜日
  • 15.
    Tips 3 • v2系より、コレクション単位で最適化 可能。Indexもrebuildしてくれる ex) db.collection.compact() ※Diskサイズは減らない。 http://www.mongodb.org/display/DOCS/ compact+Command 12年7月6日金曜日
  • 16.
    Tips 4 定期的な バージョンアップ 12年7月6日金曜日
  • 17.
    Tips 4 • v.1.8系(v1.8.2) => v.2.0系(v.2.0.2) バージョンアップを実施。 方法はこの資料にまとめてみました http://www.slideshare.net/n-sega/from- mongodb-v182-to-v202 12年7月6日金曜日
  • 18.
    Tips 4 • 性能、機能改善 Index サイズ Down Performance Up Journaling による 耐障害性 Up • バグfix (Global write lock まわり) ※v1系に比べての話。 12年7月6日金曜日
  • 19.
    Tips 4 • 例のGlobal write lock問題もv2系になっ たことでだいぶ解消 ※v1系に比べて。 • v.2.2系ではglobal write lockが発生しなく なるとか。 http://blog.serverdensity.com/2012/05/23/ goodbye-global-lock-mongodb-2-0-vs-2-2/ 12年7月6日金曜日
  • 20.
  • 21.
    Conclusion • 運用を想定したデータストアの設計す れば、サービスで安定稼働実現可能な プロダクト。 • 愛用者には、人柱多し。ノウハウ・実 績はかなり豊富。 12年7月6日金曜日
  • 22.
  • 23.
    ご静聴ありがとう ございました!! 12年7月6日金曜日