C14:SQL Server ソーシャル ゲーム基盤を支える SQL Server ~モニター・分析して安定運用を目指す~ gloops, Inc. Takashi Inaba
C14:SQL Server ソーシャル ゲーム基盤を支える SQL Server ~モニター・分析して安定運用を目指す~
gloops, Inc. Takashi Inaba
はじめに ソーシャル ゲーム業界として「めずらしく」 Microsoft 製品を使用した基盤を使用しています。gloops で提供しているゲームのデータベースは SQL Server を使用しています。 ゲーム タイトルが増えれば、その分 SQL Server も増えます。 たくさんの SQL Server をどのようにしておもりしているのか、SQL Server を既に利用されている方はもちろん、これから SQL Server を使おうかと思っていらっしゃる方に少しでも役に立てられればと思います なお、ここで発表する内容の一部には、試行錯誤中のものも含まれます
db techshowcase 東京 2013 2
自己紹介 • 株式会社 gloops システム基盤部のエンジニア
• 主に SQL Server あたりをサポート • 2013年6月まで日本マイクロソフトで Premier Field Engineer として従事
• ひょんなことから現職
db techshowcase 東京 2013 3
突然ですが、質問です
SQL Server は使いやすいですか?
SQL Server に対する誤解 (?) • 大規模システムには耐えられないでしょ?
• いわゆるミッション クリティカルなシステム • いわゆる高トランザクション処理なシステム
• チューニングなしでとりあえず動くやつでしょ? • Oracle Enterprise Manager にあるパフォーマンス確認ツールみたいなものってないから、簡単に調査しにくそう などなど。。。
実際どうでしょうか? • 大規模システム
• 公共交通系、銀行勘定系、SAP のバック データベースに利用されている
• チューニングなしでは動くだけです • 最適な Index を設定して少ないリソースで素早く目的のデータを • ディスク アライメントも必要な場合も
• SQL Server Management Studio (SSMS) にあります • リソースの利用状況 モニターでCPU、メモリ、コストの高いクエリなどが確認可能
db techshowcase 東京 2013 7
gloops はどうか • ソーシャル ゲームはヒットすると、瞬く間にトラフィックが急増
• これを裁くためのインフラ基盤整備が重要 • データベースもしかり
• SQL Server 2008 R2 を採用した当初 • 思った以上に安定していた (そうです) • トラフィック急増で IO が頭打ち
• ストレージを強化 • Fusion IO 社 の ioDrive を採用
db techshowcase 東京 2013 8
ストレージを強化したら 確かにパフォーマンスはよくなりました
でも、それで終わりでしょうか?
db techshowcase 東京 2013 9
潜在的な問題点はないか? • 1つの大きな問題の解決が問題のはじまり • 機能追加やクエリ実行内容によって、問題点は見え隠れ
• そんな時こそ、定常的な情報収集を! • 結構、やれてないと思います (yo)
db techshowcase 東京 2013 10
普通採取するパフォーマンス データって何ですか?
• パフォーマンス カウンター ログで • CPU • メモリ • ディスク • など
• ディスク サブ システム内のパフォーマンス データ(?) • ネットワーク スイッチ
db techshowcase 東京 2013 11
でも本当は • SQL Server 関連のパフォーマンスも採取していただきたいです
• SQL Server: Buffer Manager オブジェクト • SQL Server: General Statistics オブジェクト • SQL Server: SQL Statistics オブジェクト • など
これら SQL Server 関連の情報を採取して、総合的に分析する必要あり!!
[参考] [SQL Troubleshooting] 第2回 : Tips -パフォーマンス ログの採取方法 (Windows Server 2003 ~ Windows Server 2008 R2) http://blogs.msdn.com/b/jpsql/archive/2012/04/20/tips-windows-server-2003-windows-server-2008-r2.aspx
db techshowcase 東京 2013 12
もっと詳しく分析したい • クエリ単位で処理時間・コストを知りたい
• SQL Server トレースでトレース採取 • クエリ1つ1つを確認できます • 実行プランも採取できます
db techshowcase 東京 2013 13
でも、本番環境で採取するときは、パフォーマンス ダウンに注意を!
情報採取するとしても SQL Server トレースとパフォーマンス データ別々に採るの? めんどくさいなー。。。
db techshowcase 東京 2013 14
大丈夫です! そんな面倒くさがりの方でも簡単に情報収集できます!
SQLdiag ユーティリティ • 以下の診断情報が収集可能
• Windows パフォーマンス カウンター ログ • Windows イベント ログ • SQL Server トレース • SQL Server ブロッキング情報 • SQL Server の構成情報
[参考] SQLdiag ユーティリティ
http://msdn.microsoft.com/ja-jp/library/ms162833.aspx
db techshowcase 東京 2013 15
でも。。。 SQLDiag ユーティリティって、どちらかというと問題発生時にしか使えないような。。。 もう少しライトウェイトな情報収集方法はないの?
動的管理ビューを使用して情報採取!!
動的管理ビュー (DMV) • msdn マガジン DMV のサンプルが紹介 例) 待ち時間の原因となっているリソースを探す SELECT TOP 10 [Wait type] = wait_type, [Wait time (s)] = wait_time_ms / 1000, [% waiting] = CONVERT(DECIMAL(12,2), wait_time_ms * 100.0 / SUM(wait_time_ms) OVER()) FROM sys.dm_os_wait_stats WHERE wait_type NOT LIKE '%SLEEP%' ORDER BY wait_time_ms DESC; [参考]隠れたデータを明らかにしてアプリケーションのパフォーマンスを最適化する http://msdn.microsoft.com/ja-jp/magazine/cc135978.aspx
db techshowcase 東京 2013 18
DMV も毎回収集しないといけないじゃないですか。。。
• もっと簡単な方法はないですか?
db techshowcase 東京 2013 19
データ コレクションを使ってみてはいかがですか!!
データ コレクション • SQL Server 2008 から搭載された機能 • 実稼働環境に合わせてデータ収集の範囲を調整可能 • 収集したデータは専用のデータウェア ハウスに格納
• 見た目は普通のユーザー データベース • 実環境とは別の管理系の SQL Server に格納したほうが良いです
• データ コレクター API を使って拡張できるそうです • 実践途中です (;´Д`)
• 既定で準備されているレポートでも十分かなと • ディスク使用量の概要レポート • クエリ統計の履歴 • サーバーの利用状況の履歴
[参考]データ コレクション http://msdn.microsoft.com/ja-jp/library/bb677179.aspx
db techshowcase 東京 2013 20
DEMO: データコレクションの設定とレポート表示
db techshowcase 東京 2013 21
これらのレポートで問題個所がわかったら • 実行プランを見ましょう
• SQL Server トレースで採取できましたね • データ コレクタのレポートでも確認できましたね
実行プランを見てチューニングをして、改善を試行!!
まとめ • SQL Server も収集する情報がわかれば、おもりは可能です • 標準ツールで必要な情報を一括採取できます • 手っ取り早くしたいならデータ コレクタを使いましょう
• でも、実行環境にデータ コレクタの DWH 作らないでください • 問題点がわかったら、対策を練りましょう
• まずは、実行プランを見てチューニングできるところを探してみる
db techshowcase 東京 2013 23
おわり
db techshowcase 東京 2013 24