[c14] ソーシャル ゲーム基盤を支える sql server by takashi inaba

23
C14:SQL Server ソーシャル ゲーム基盤を支える SQL Server ~モニター・分析して安定運用を目指す~ gloops, Inc. Takashi Inaba

Upload: insight-technology-inc

Post on 30-Jun-2015

477 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

C14:SQL Server ソーシャル ゲーム基盤を支える SQL Server ~モニター・分析して安定運用を目指す~

gloops, Inc. Takashi Inaba

Page 2: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

はじめに ソーシャル ゲーム業界として「めずらしく」 Microsoft 製品を使用した基盤を使用しています。gloops で提供しているゲームのデータベースは SQL Server を使用しています。 ゲーム タイトルが増えれば、その分 SQL Server も増えます。 たくさんの SQL Server をどのようにしておもりしているのか、SQL Server を既に利用されている方はもちろん、これから SQL Server を使おうかと思っていらっしゃる方に少しでも役に立てられればと思います なお、ここで発表する内容の一部には、試行錯誤中のものも含まれます

db techshowcase 東京 2013 2

Page 3: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

自己紹介 • 株式会社 gloops システム基盤部のエンジニア

• 主に SQL Server あたりをサポート • 2013年6月まで日本マイクロソフトで Premier Field Engineer として従事

• ひょんなことから現職

db techshowcase 東京 2013 3

Page 4: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

突然ですが、質問です

Page 5: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

SQL Server は使いやすいですか?

Page 6: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

SQL Server に対する誤解 (?) • 大規模システムには耐えられないでしょ?

• いわゆるミッション クリティカルなシステム • いわゆる高トランザクション処理なシステム

• チューニングなしでとりあえず動くやつでしょ? • Oracle Enterprise Manager にあるパフォーマンス確認ツールみたいなものってないから、簡単に調査しにくそう などなど。。。

Page 7: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

実際どうでしょうか? • 大規模システム

• 公共交通系、銀行勘定系、SAP のバック データベースに利用されている

• チューニングなしでは動くだけです • 最適な Index を設定して少ないリソースで素早く目的のデータを • ディスク アライメントも必要な場合も

• SQL Server Management Studio (SSMS) にあります • リソースの利用状況 モニターでCPU、メモリ、コストの高いクエリなどが確認可能

db techshowcase 東京 2013 7

Page 8: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

gloops はどうか • ソーシャル ゲームはヒットすると、瞬く間にトラフィックが急増

• これを裁くためのインフラ基盤整備が重要 • データベースもしかり

• SQL Server 2008 R2 を採用した当初 • 思った以上に安定していた (そうです) • トラフィック急増で IO が頭打ち

• ストレージを強化 • Fusion IO 社 の ioDrive を採用

db techshowcase 東京 2013 8

Page 9: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

ストレージを強化したら 確かにパフォーマンスはよくなりました

でも、それで終わりでしょうか?

db techshowcase 東京 2013 9

Page 10: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

潜在的な問題点はないか? • 1つの大きな問題の解決が問題のはじまり • 機能追加やクエリ実行内容によって、問題点は見え隠れ

• そんな時こそ、定常的な情報収集を! • 結構、やれてないと思います (yo)

db techshowcase 東京 2013 10

Page 11: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

普通採取するパフォーマンス データって何ですか?

• パフォーマンス カウンター ログで • CPU • メモリ • ディスク • など

• ディスク サブ システム内のパフォーマンス データ(?) • ネットワーク スイッチ

db techshowcase 東京 2013 11

Page 12: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

でも本当は • 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

Page 13: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

もっと詳しく分析したい • クエリ単位で処理時間・コストを知りたい

• SQL Server トレースでトレース採取 • クエリ1つ1つを確認できます • 実行プランも採取できます

db techshowcase 東京 2013 13

でも、本番環境で採取するときは、パフォーマンス ダウンに注意を!

Page 14: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

情報採取するとしても SQL Server トレースとパフォーマンス データ別々に採るの? めんどくさいなー。。。

db techshowcase 東京 2013 14

大丈夫です! そんな面倒くさがりの方でも簡単に情報収集できます!

Page 15: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

SQLdiag ユーティリティ • 以下の診断情報が収集可能

• Windows パフォーマンス カウンター ログ • Windows イベント ログ • SQL Server トレース • SQL Server ブロッキング情報 • SQL Server の構成情報

[参考] SQLdiag ユーティリティ

http://msdn.microsoft.com/ja-jp/library/ms162833.aspx

db techshowcase 東京 2013 15

Page 16: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

でも。。。 SQLDiag ユーティリティって、どちらかというと問題発生時にしか使えないような。。。 もう少しライトウェイトな情報収集方法はないの?

動的管理ビューを使用して情報採取!!

Page 17: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

動的管理ビュー (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

Page 18: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

DMV も毎回収集しないといけないじゃないですか。。。

• もっと簡単な方法はないですか?

db techshowcase 東京 2013 19

データ コレクションを使ってみてはいかがですか!!

Page 19: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

データ コレクション • SQL Server 2008 から搭載された機能 • 実稼働環境に合わせてデータ収集の範囲を調整可能 • 収集したデータは専用のデータウェア ハウスに格納

• 見た目は普通のユーザー データベース • 実環境とは別の管理系の SQL Server に格納したほうが良いです

• データ コレクター API を使って拡張できるそうです • 実践途中です (;´Д`)

• 既定で準備されているレポートでも十分かなと • ディスク使用量の概要レポート • クエリ統計の履歴 • サーバーの利用状況の履歴

[参考]データ コレクション http://msdn.microsoft.com/ja-jp/library/bb677179.aspx

db techshowcase 東京 2013 20

Page 20: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

DEMO: データコレクションの設定とレポート表示

db techshowcase 東京 2013 21

Page 21: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

これらのレポートで問題個所がわかったら • 実行プランを見ましょう

• SQL Server トレースで採取できましたね • データ コレクタのレポートでも確認できましたね

実行プランを見てチューニングをして、改善を試行!!

Page 22: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

まとめ • SQL Server も収集する情報がわかれば、おもりは可能です • 標準ツールで必要な情報を一括採取できます • 手っ取り早くしたいならデータ コレクタを使いましょう

• でも、実行環境にデータ コレクタの DWH 作らないでください • 問題点がわかったら、対策を練りましょう

• まずは、実行プランを見てチューニングできるところを探してみる

db techshowcase 東京 2013 23

Page 23: [C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba

おわり

db techshowcase 東京 2013 24