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
PRO
February 24, 2017
Technology
3
6.3k
監視・解析ツールから読み解く!トラブル対応&負荷対策
2017/02/16 Developers Summit 2017
Cygames
PRO
February 24, 2017
Tweet
Share
More Decks by Cygames
See All by Cygames
【CEDEC2025】大規模言語モデルを活用したゲーム内会話パートのスクリプト作成支援への取り組み
cygames
PRO
1
310
【CEDEC2025】現場を理解して実現!ゲーム開発を効率化するWebサービスの開発と、利用促進のための継続的な改善
cygames
PRO
0
360
【CEDEC2025】ブランド力アップのためのコンテンツマーケティング~ゲーム会社における情報資産の活かし方~
cygames
PRO
0
9
【CEDEC2025】『ウマ娘 プリティーダービー』における映像制作のさらなる高品質化へ!~ 豊富な素材出力と制作フローの改善を実現するツールについて~
cygames
PRO
0
10
【CEDEC2025】LLMを活用したゲーム開発支援と、生成AIの利活用を進める組織的な取り組み
cygames
PRO
1
1.6k
【TiDB GAME DAY 2025】Shadowverse: Worlds Beyond にみる TiDB 活用術
cygames
PRO
0
1.7k
雲だけじゃない!『GRANBLUE FANTASY: Relink』の世界に奥行きを出す半透明スプライト活用術
cygames
PRO
0
920
最高のアートワークを発信する『Cygames展 Artworks』企画制作事例
cygames
PRO
0
130
社内にバーチャルスタッフ!?「スイちゃん」のキャラクターデザインと施策の広げ方の秘訣
cygames
PRO
1
330
Other Decks in Technology
See All in Technology
公開初日に個人環境で試した Gemini CLI 体験記など / Gemini CLI実験レポート
you
PRO
3
600
マルチモーダル基盤モデルに基づく動画と音の解析技術
lycorptech_jp
PRO
2
250
完璧を目指さない小さく始める信頼性向上
kakehashi
PRO
0
110
AIに全任せしないコーディングとマネジメント思考
kikuchikakeru
0
270
Expertise as a Service via MCP
yodakeisuke
1
160
OpenTelemetry の Log を使いこなそう
biwashi
5
1.1k
Turn Your Community into a Fundraising Catalyst for Black Philanthropy Month
auctria
PRO
0
190
自分がLinc’wellで提供しているプロダクトを理解するためにやったこと
murabayashi
1
170
With Devin -AIの自律とメンバーの自立
kotanin0
2
770
SAE J1939シミュレーション環境構築
daikiokazaki
1
190
Bliki (ja), and the Cathedral, and the Bazaar
koic
8
1.5k
Vision Language Modelと自動運転AIの最前線_20250730
yuyamaguchi
1
430
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1370
200k
Writing Fast Ruby
sferik
628
62k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Gamification - CAS2011
davidbonilla
81
5.4k
Building Adaptive Systems
keathley
43
2.7k
Unsuck your backbone
ammeep
671
58k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Scaling GitHub
holman
461
140k
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