Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
監視・解析ツールから読み解く!トラブル対応&負荷対策
Search
Cygames
February 24, 2017
Technology
3
5.8k
監視・解析ツールから読み解く!トラブル対応&負荷対策
2017/02/16 Developers Summit 2017
Cygames
February 24, 2017
Tweet
Share
More Decks by Cygames
See All by Cygames
『グランブルーファンタジー』100万行を超える大規模なシステム再構築~10周年のその先へ~
cygames
8
24k
グラブルミュージアム蒼の追想 MX4Dシアターのサウンド制作事例〜ゲームの世界観とアトラクション体験の両立に必要なこと〜
cygames
0
980
AIによる自然言語処理・音声解析を用いたゲーム内会話パートの感情分析への取り組み
cygames
0
1.4k
最大100倍高速化!PHPからJavaへのFFIを実現する、JNIを用いた高速なサーバAPIの実装方法
cygames
0
250
AIによる自然言語処理を活用したゲームシナリオの誤字検出への取り組み
cygames
0
200
ツール保守コスト大幅削減!テクニカルアーティストによるツールログサービスの開発と運用事例
cygames
0
200
C#によるクライアント/サーバーの開発言語統一がもたらす高効率な開発体制 ~プリコネ!グランドマスターズ開発事例~
cygames
24
20k
「最高のコンテンツ」を支える、Cygamesのデータベース技術の今までとこれから 〜次世代データベース「TiDB」の検証を開始したCygamesの取り組み〜
cygames
0
5.2k
ウマ娘 プリティーダービーのコンテ制作事例 ~コンテ制作専任チームの誕生とキャラクターを輝かせるコンテ術~
cygames
2
8.5k
Other Decks in Technology
See All in Technology
The CloudCompare project by Dr. Daniel Girardeau-Montaut
kentaitakura
0
510
Oracle Cloud Infrastructure:2024年4月度サービス・アップデート
oracle4engineer
PRO
1
110
株式会社EventHub・エンジニア採用資料
eventhub
0
1.9k
スタートアップの技術顧問を3年間続けて発生した事と気付き
biwakonbu
0
160
Databricks におけるデータエンジニアリング
databricksjapan
0
380
Tableau事例紹介 / Tableau Case Study of Eureka
kazuya_araki_tokyo
1
170
Discord とビルダー&チャットボットの使い方 / How to use Discord and Builder & Chatbots
ks91
PRO
0
130
最近たまに見かけるTiDBってなんだ? - Findy
pingcap0315
2
600
複雑な構成要素を持つUIとの向き合い方 〜新・支出グラフでの実例〜 / B43 TECH TALK
nakamuuu
0
100
社内勉強会運営のコツ
senoo
6
1.1k
「ふりかえりのふりかえり」をふりかえり、実のあるふりかえりにする
naitosatoshi
0
220
元インフラエンジニアに成る / Human Resources to Human Relations
bobtani
3
810
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1355
200k
The Invisible Side of Design
smashingmag
294
49k
Optimising Largest Contentful Paint
csswizardry
7
2.3k
Atom: Resistance is Futile
akmur
258
25k
Practical Orchestrator
shlominoach
181
9.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
354
18k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
1
1.3k
The Language of Interfaces
destraynor
151
23k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.6k
Building a Modern Day E-commerce SEO Strategy
aleyda
16
6.4k
Building Applications with DynamoDB
mza
88
5.6k
Typedesign – Prime Four
hannesfritz
36
2.1k
Transcript
© Cygames, Inc. 1 / 87
© Cygames, Inc. 2 / 87 ▪アジェンダ • 自己紹介 •
この講演で伝えたいこと • 負荷対策やトラブル対応 • ツール使用事例 • まとめ
© Cygames, Inc. ▪アジェンダ • 自己紹介 • この講演で伝えたいこと • 負荷対策やトラブル対応
• ツール使用事例 • まとめ 3 / 87
© Cygames, Inc. 4 / 87
© Cygames, Inc. ▪アジェンダ • 自己紹介 • この講演で伝えたいこと • 負荷対策やトラブル対応
• ツール使用事例 • まとめ 5 / 87
© Cygames, Inc. ▪この講演で伝えたいこと • トラブル対応と負荷対策の考え方 • ツールを使ったトラブル対応 • ツールを使った負荷対策
6 / 87
© Cygames, Inc. ▪トラブル対応と負荷対策 • トラブル対策でやりたいこと 不具合に気がつく 不具合対応速度を上げる • 負荷対策でやりたいこと
レスポンス速度を速める web、DB、キャッシュの負荷を下げる 安定運用 7 / 87
© Cygames, Inc. ▪トラブル対応でやりたいこと • いち早く気がつきたい 長く放置するといいことがない • 障害の切り分けをしたい 機器故障、プログラムの不具合
対応がぜんぜん違う • ある程度自動化したい ログを手動で探すのは時間がかかる… 8 / 87
© Cygames, Inc. ▪負荷対策でやりたいこと • レスポンス速度を速くしたい • ボトルネックの調査 プログラム、キャッシュ、DBなどなど どれが原因か切り分けたい
• 原因からの解決方法 9 / 87
© Cygames, Inc. ▪やりたいことをふまえて トラブル対応 負荷対策 踏み込みやすくするためのツールの使い方を説明し ていきます! 10 /
87
© Cygames, Inc. ▪アジェンダ • 自己紹介 • この講演で伝えたいこと • 負荷対策やトラブル対応
• ツール使用事例 • まとめ 11 / 87
© Cygames, Inc. ▪負荷対策・トラブル対応の必要性 Cygamesが掲げているもの • 最高のコンテンツを作る レスポンスなども最高のものにしたい • CS最優先
ユーザーのことを最優先に考え 不具合対応を素早く行う 12 / 87
© Cygames, Inc. ▪負荷対策・トラブル対応によくある事例 • リリースによる不具合 • 動作を早くしたい • 特定の動作だけ重い
他にも • もともと起きてる不具合が発覚 • リリースしたことによって重くなった など 13 / 87
© Cygames, Inc. ▪負荷対策・トラブル対応によくある事例 Cygamesで一般的に使っているサーバー系ツール • Munin • Kibana •
New Relic • Mackerel • XHProf 14 / 87
© Cygames, Inc. ▪Munin Munin Web、DB、cache 様々なサーバーの項目 がグラフィカルに見れ る 15
/ 87
© Cygames, Inc. ▪Kibana Kibana ログを収集して ログを解析するために様々な表示が出来る 16 / 87
© Cygames, Inc. ▪New Relic New Relic サーバーの処理時間などを 項目別に分析が出来る 17
/ 87
© Cygames, Inc. ▪Mackerel Mackerel 対象サーバー(複数)の項目を一覧で見ることが出来る 18 / 87
© Cygames, Inc. ▪XHProf XHProf PHPをAPIごとに詳細に分析する ことができる 各関数ごとの解析も可能 19 /
87
© Cygames, Inc. ▪負荷対策・トラブル対策によくある事例 • リリースによる不具合 Munin、Kibana、Mackerel • 潜在的な不具合が発覚 Kibana、Mackerel
20 / 87
© Cygames, Inc. ▪負荷対策・トラブル対策によくある事例 • リリースしたことによって重くなった Munin、Kibana、Mackerel、New Relic • 動作を速くしたい
New Relic、XHProf • 特定の動作だけ重い New Relic、XHProf 21 / 87
© Cygames, Inc. ▪アジェンダ • 自己紹介 • この講演で伝えたいこと • 負荷対策やトラブル対応
• ツール使用事例 • まとめ 22 / 87
© Cygames, Inc. ▪ツール一覧 ・Munin ・Kibana ・New Relic ・Mackerel ・XHProf
23 / 87
© Cygames, Inc. ▪ツール一覧 ・Munin ・Kibana ・New Relic ・Mackerel ・XHProf
24 / 87
© Cygames, Inc. ▪Munin サーバーの状態をまとめてみることができるツール いろいろな項目があり、ざっと見る分には便利。 更新までに時間がちょっとかかるので、詳細にみる ためには別なツールを使うことも。 25 /
87
© Cygames, Inc. ▪Munin よく見る項目 Apache accesses Load average CPU
usage Memory usage Load average MySQL Connections MySQL queries MySQL throughput Evictions Hit and misses Cached items web DB Memcache 26 / 87
© Cygames, Inc. ▪Munin 見た目はこんな感じ Day、week month、year などの表示期間を変えられ るので、日常と違う異常は 発見しやすい
27 / 87
© Cygames, Inc. ▪Munin メリット サーバーごとにグラフが見れる グラフで表示のため、異常に気が付きやすい デメリット 一台ずつの表示なので全台みるのが大変 グラフは5分毎にあがってるので瞬間的なグラフは丸まることがある
28 / 87
© Cygames, Inc. ▪ツール一覧 ・Munin ・Kibana ・New Relic ・Mackerel ・XHProf
29 / 87
© Cygames, Inc. ▪Kibana ログ収集ツール 設定したものを設定したように表示してくれる ・アクセスログ ・エラーログ ・Nodeのログ など収集している
30 / 87
© Cygames, Inc. ▪Kibana 31 / 87
© Cygames, Inc. ▪Kibana 32 / 87
© Cygames, Inc. ▪Kibana メリット いろんな項目を見たいようにカスタマイズできる テキストログなど、収集設定をすればある程度リアルタイムで見れる デメリット ログの取り込み設定をしないといけない 活用できるログを吐き出すように考えてプログラムする必要がある
33 / 87
© Cygames, Inc. ▪ツール一覧 ・Munin ・Kibana ・New Relic ・Mackerel ・XHProf
34 / 87
© Cygames, Inc. ▪New Relic サーバー単位での処理の解析ができる APIごとの処理時間の総数やスループット。 関数内でかかってる処理の詳細など調べられること ができる また
遅いAPIはトレースすることができる 35 / 87
© Cygames, Inc. ▪New Relic 36 / 87
© Cygames, Inc. ▪New Relic 37 / 87
© Cygames, Inc. ▪New Relic メリット サーバー単位で処理の比率が見ることができる クエリごとの重さも見ることができる デメリット ピックアップされた重い処理に関してはトレースできるが、全部の処理
にたいして細かくはやれない 38 / 87
© Cygames, Inc. ▪ツール一覧 ・Munin ・Kibana ・New Relic ・Mackerel ・XHProf
39 / 87
© Cygames, Inc. ▪Mackerel サーバーの状態がまとめてみれる すべてが一つのグラフで見れたりするので、一台だ け問題があるときなど、グラフが異常が発見しやす い 40 /
87
© Cygames, Inc. ▪Mackerel 41 / 87
© Cygames, Inc. ▪Mackerel メリット 各項目について全台チェックできる デメリット 対象台数が多ければ多いほど表示が重い 42 /
87
© Cygames, Inc. ▪ツール一覧 ・Munin ・Kibana ・New Relic ・Mackerel ・XHProf
43 / 87
© Cygames, Inc. ▪XHProf PHPコードが詳細に解析できる 関数の呼び出し回数、その関数の処理時間など。 メモリも見れるので、改善結果などの比較も容易。 44 / 87
© Cygames, Inc. ▪XHProf APIリストが並んでいる ※time usememは chrome extentionとして 自作して導入している。
45 / 87
© Cygames, Inc. ▪XHProf 46 / 87
© Cygames, Inc. ▪XHProf 47 / 87
© Cygames, Inc. ▪XHProf メリット APIを全部チェックできる 各関数を細かくチェックできるので、改修箇所を探すのが楽 デメリット 使うためにソースコードに手を入れる必要がある APIが全部上がってくるので、問題のAPIを探すのが大変
48 / 87
© Cygames, Inc. ▪事例のおさらい • リリースによる不具合 • 動作を早くしたい • 特定の動作だけ重い
49 / 87
© Cygames, Inc. ▪事例のおさらい • リリースによる不具合 • 動作を早くしたい • 特定の動作だけ重い
50 / 87
© Cygames, Inc. ▪リリースによる不具合 リリースによる不具合ってどんなの? プログラムのバグ 例)単純にプログラムがバグってる 機器トラブル 例)DBサーバーのコネクションがつまった 負荷トラブル
例)アクセス過多によりwebの処理速度低下 51 / 87
© Cygames, Inc. ▪リリースによる不具合 使うツール Munin Kibana Mackerel 52 /
87
© Cygames, Inc. ▪リリースによる不具合 前提条件 トラブルが起きていることに 気がつく! 一番はじめにやりたいこと 原因箇所の切り分け! 53
/ 87
© Cygames, Inc. ▪リリースによる不具合 どうやってツール使う? Munin Kibana Mackerel 54 /
87
© Cygames, Inc. ▪リリースによる不具合 どうやってツール使う? Munin Kibana Mackerel 55 /
87
© Cygames, Inc. ▪リリースによる不具合 意識してやっていること 日頃から各種数値をみる Apache access、LA Cpu、memory Mysql
queries、slow queries connectionsなどなど 日頃のグラフとは極端に違うグラフがでれば 何か起きている!! 56 / 87
© Cygames, Inc. ▪サーバーの状態のグラフ 一週間の推移図 どのあたりまで上がる とか、ルールがわかる。 例)リリース直後で急 にグラフが伸びると何 かまずいものがリリー
スされた(もしくは ユーザーがいっぱいア クセスしてる)など推 測できる。 57 / 87
© Cygames, Inc. ▪リリースによる不具合 どうやってツール使う? Munin Kibana Mackerel 58 /
87
© Cygames, Inc. ▪リリースによる不具合 意識してやっていること プログラムでログを残す DBにログを残す場合もあるが エラーログとしてテキストデータを出力している。 プログラムの不具合があるならば エラーログが吐かれているはずなので
いち早くそれを検知する! 59 / 87
© Cygames, Inc. ▪エラーログのキャッチ Dashboardで設定すれ ば、いろんなものがひと 目で見れる。 単純にapacheのエラー カウントやサーバーのエ ラーカウント、エラーロ
グを表示すれば今現在ど んなものが出ているかす ぐわかる 60 / 87
© Cygames, Inc. ▪リリースによる不具合 どうやってツール使う? Munin Kibana Mackerel 61 /
87
© Cygames, Inc. ▪リリースによる不具合 意識してやっていること サーバーの状態をちゃんと把握すること cpuやworkerの状態が把握できる 機器故障があればグラフですぐわかる! 62 /
87
© Cygames, Inc. ▪サーバーの状態 上記はcpuのグラフ いろいろな項目が設定しているサーバーを一覧でだせるので 何かトラブルがあればグラフに如実にでる 63 / 87
© Cygames, Inc. ▪リリースによる不具合 まとめ 異常を感じ取ることが大事 異常を判断できるようになる必要がある そのためには日頃グラフ等を見ておく 異常を感じ取れるように情報を増やしたい なので
ツールを使うと便利かつ早い! 64 / 87
© Cygames, Inc. ▪事例のおさらい • リリースによる不具合 • 動作を早くしたい • 特定の動作だけ重い
65 / 87
© Cygames, Inc. ▪負荷対策 理想 必要最小限のデータで 必要最小限の適切なコードで 処理をする 66 /
87
© Cygames, Inc. ▪負荷対策 あたりまえのことをやるだけ 67 / 87
© Cygames, Inc. ▪動作を早くしたい 重い処理をなくせば早くなる ボトルネックをちゃんと把握すること 処理が多い関数を把握する 回数が多いところを直せば 費用対効果が大きい! 68
/ 87
© Cygames, Inc. ▪動作を早くしたい どうやってツール使う? New Relic XHProf 69 /
87
© Cygames, Inc. ▪動作を早くしたい どうやってツール使う? New Relic XHProf 70 /
87
© Cygames, Inc. ▪New Relic 左下に関数ごとに時間 がかかってるリストが 出ている 多く時間を占めている ものほど費用対効果が
でかい 71 / 87
© Cygames, Inc. ▪動作を早くしたい どうやってツール使う? New Relic XHProf 72 /
87
© Cygames, Inc. ▪XHProf 各関数における処理時 間、使用メモリが追え るのでここから改修す る箇所を探す Incl.WallTimeと Excl.WallTimeを駆使す
ると関数内の処理が重 いのか その関数自体 の処理が重いのかもわ かる 73 / 87
© Cygames, Inc. ▪XHProf 上記のようにIncl.WallTimeを押せば重い順番にソートしてくれるので ポイントが見つけやすい 74 / 87
© Cygames, Inc. ▪XHProf 関数をクリックすれば、その関数が呼ばれている箇所 また、その関数内になんの関数があるかなど、詳細にデータが出てくる 気になる関数を調べることで 一個ずつ解析することができる 75 /
87
© Cygames, Inc. ▪動作を早くしたい まとめ New Relicでなおしたい関数を探す XHProfでなおす箇所を探す コードの直し方は色々あるけど、基本的には 必要最小限のデータで
必要最小限の適切なコードで処理 上記で問題ない 76 / 87
© Cygames, Inc. ▪事例のおさらい • リリースによる不具合 • 動作を早くしたい • 特定の動作だけ重い
77 / 87
© Cygames, Inc. ▪特定の動作だけ重い どうやってツール使う? New Relic XHProf 78 /
87
© Cygames, Inc. ▪New Relic Transactions項目 を開くと右下に重 かった処理が表示 される これをクリックす
ると詳細な表示に なる 79 / 87
© Cygames, Inc. ▪New Relic Popupの中のtrace details項目を開く と左のようなリスト が表示される 表示されてるリスト
の中で直したいとこ ろを探す 80 / 87
© Cygames, Inc. ▪特定の動作だけ重い どうやってツール使う? New Relic XHProf 81 /
87
© Cygames, Inc. ▪XHProf 動作を早くしたときのXHProfの使用方法と同じ 基本的に直したいAPIを表示させてから中身を分析 後はひたすら表示内容とソースを見比べて 無駄な処理を省く 82 /
87
© Cygames, Inc. ▪特定の動作だけ重い まとめ APIが決まっているなら、XHProfで対象のAPIを解 析する 重いAPIがあったところから直していくなら New Relicで重かったAPIを分析するといい
直したい箇所が先か 重かったところを直したいか でツールを使い分ける! 83 / 87
© Cygames, Inc. ▪注意事項 ツールの使い方はあくまで一例 もっと別な使い方もあると思われる。 また場合によっては使わなくてもいい場面もある。 利用用途に応じたツールの使い方をしてください! 84 /
87
© Cygames, Inc. アジェンダ • 自己紹介 • この講演で伝えたいこと • 負荷対策やトラブル対応
• ツール使用事例 • まとめ 85 / 87
© Cygames, Inc. まとめ ツールを使えばなんでも出来るわけではない ツールを使うと時間が短縮できる ツール自体は目的によってしっかり使い分ける なぜツールを使うのか? 便利であり、楽だから! 空いた時間でまた改良をしていって
最高のコンテンツを作りあげていく! 86 / 87
© Cygames, Inc. ご清聴ありがとうございました! 87 / 87