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
6k
監視・解析ツールから読み解く!トラブル対応&負荷対策
2017/02/16 Developers Summit 2017
Cygames
February 24, 2017
Tweet
Share
More Decks by Cygames
See All by Cygames
『GRANBLUE FANTASY Relink』キャラクターの魅力を支えるリグ・シミュレーション制作事例
cygames
0
410
『GRANBLUE FANTASY: Relink』最高の「没入感」を実現するカットシーン制作手法とそれを支える技術
cygames
1
320
『GRANBLUE FANTASY Relink』ソフトウェアラスタライザによる実践的なオクルージョンカリング
cygames
0
320
高品質なフォトグラメトリデータを取得するためのハードウェア&ソフトウェア開発
cygames
0
1.1k
AIを活用した柔軟かつ効率的な社内リソース検索への取り組み
cygames
0
990
『GRANBLUE FANTASY: Relink』開発からリリースまでを支えたCI/CDの取り組み
cygames
0
250
『GRANBLUE FANTASY: Relink』専任エンジニアチームで回す大規模開発QAサイクル
cygames
0
260
『GRANBLUE FANTASY: Relink』クオリティと物量の両立に挑戦したフェイシャルアニメーション事例 ~カットシーンからランタイムまで~
cygames
0
280
『GRANBLUE FANTASY: Relink』キャラクターの個性にlinkした効果音表現
cygames
0
130
Other Decks in Technology
See All in Technology
Engineer Career Talk
lycorp_recruit_jp
0
180
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
250
SSMRunbook作成の勘所_20241120
koichiotomo
2
150
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
2
610
AWS Media Services 最新サービスアップデート 2024
eijikominami
0
200
[CV勉強会@関東 ECCV2024 読み会] オンラインマッピング x トラッキング MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping (Chen+, ECCV24)
abemii
0
220
信頼性に挑む中で拡張できる・得られる1人のスキルセットとは?
ken5scal
2
540
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
8
870
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
520
ドメイン名の終活について - JPAAWG 7th -
mikit
33
20k
社内で最大の技術的負債のリファクタリングに取り組んだお話し
kidooonn
1
550
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.8k
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
136
6.6k
GitHub's CSS Performance
jonrohan
1030
460k
The Invisible Side of Design
smashingmag
298
50k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
720
Music & Morning Musume
bryan
46
6.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
Practical Orchestrator
shlominoach
186
10k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Typedesign – Prime Four
hannesfritz
40
2.4k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
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