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
6.1k
監視・解析ツールから読み解く!トラブル対応&負荷対策
2017/02/16 Developers Summit 2017
Cygames
February 24, 2017
Tweet
Share
More Decks by Cygames
See All by Cygames
最高のアートワークを発信する『Cygames展 Artworks』企画制作事例
cygames
0
51
社内にバーチャルスタッフ!?「スイちゃん」のキャラクターデザインと施策の広げ方の秘訣
cygames
1
130
全高3m超のバハムート像がスマホを通して躍動する! ~『Cygames展 Artworks』ARコンテンツの開発プロセスと実装~
cygames
0
44
最高の資料を目指すために!社内フリーイラスト制作チームの取り組みについて
cygames
1
140
「生きているモーション」を作り出すCygamesのモーションキャプチャー
cygames
0
99
『Cygames展 Artworks』におけるShadowverseデジタルサイネージ制作事例
cygames
0
42
『GRANBLUE FANTASY: Relink』 原作の世界観に没入するステージの絵作り
cygames
0
890
『GRANBLUE FANTASY: Relink』イラストを再現する為のキャラクターモデル制作事例
cygames
0
160
『GRANBLUE FANTASY: Relink』キャラクターの魅力を支えるリグ制作事例
cygames
0
97
Other Decks in Technology
See All in Technology
RayでPHPのデバッグをちょっと快適にする
muno92
PRO
0
190
Share my, our lessons from the road to re:Invent
naospon
0
150
わたしがEMとして入社した「最初の100日」の過ごし方 / EMConfJp2025
daiksy
14
5.1k
AIエージェント元年@日本生成AIユーザ会
shukob
1
220
Fraxinus00tw assembly manual
fukumay
0
110
JavaにおけるNull非許容性
skrb
2
2.6k
依存パッケージの更新はコツコツが勝つコツ! / phpcon_nagoya2025
blue_goheimochi
3
220
php-conference-nagoya-2025
fuwasegu
0
150
OPENLOGI Company Profile
hr01
0
60k
AWSではじめる Web APIテスト実践ガイド / A practical guide to testing Web APIs on AWS
yokawasa
8
720
Pwned Labsのすゝめ
ken5scal
2
450
役員・マネージャー・著者・エンジニアそれぞれの立場から見たAWS認定資格
nrinetcom
PRO
4
6.1k
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.1k
Making Projects Easy
brettharned
116
6k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
Unsuck your backbone
ammeep
669
57k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
Fireside Chat
paigeccino
34
3.2k
Java REST API Framework Comparison - PWX 2021
mraible
29
8.4k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
Bash Introduction
62gerente
611
210k
Mobile First: as difficult as doing things right
swwweet
223
9.4k
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