Slide 1

Slide 1 text

© Cygames, Inc. 1 / 87

Slide 2

Slide 2 text

© Cygames, Inc. 2 / 87 ■アジェンダ • 自己紹介 • この講演で伝えたいこと • 負荷対策やトラブル対応 • ツール使用事例 • まとめ

Slide 3

Slide 3 text

© Cygames, Inc. ■アジェンダ • 自己紹介 • この講演で伝えたいこと • 負荷対策やトラブル対応 • ツール使用事例 • まとめ 3 / 87

Slide 4

Slide 4 text

© Cygames, Inc. 4 / 87

Slide 5

Slide 5 text

© Cygames, Inc. ■アジェンダ • 自己紹介 • この講演で伝えたいこと • 負荷対策やトラブル対応 • ツール使用事例 • まとめ 5 / 87

Slide 6

Slide 6 text

© Cygames, Inc. ■この講演で伝えたいこと • トラブル対応と負荷対策の考え方 • ツールを使ったトラブル対応 • ツールを使った負荷対策 6 / 87

Slide 7

Slide 7 text

© Cygames, Inc. ■トラブル対応と負荷対策 • トラブル対策でやりたいこと 不具合に気がつく 不具合対応速度を上げる • 負荷対策でやりたいこと レスポンス速度を速める web、DB、キャッシュの負荷を下げる 安定運用 7 / 87

Slide 8

Slide 8 text

© Cygames, Inc. ■トラブル対応でやりたいこと • いち早く気がつきたい 長く放置するといいことがない • 障害の切り分けをしたい 機器故障、プログラムの不具合 対応がぜんぜん違う • ある程度自動化したい ログを手動で探すのは時間がかかる… 8 / 87

Slide 9

Slide 9 text

© Cygames, Inc. ■負荷対策でやりたいこと • レスポンス速度を速くしたい • ボトルネックの調査 プログラム、キャッシュ、DBなどなど どれが原因か切り分けたい • 原因からの解決方法 9 / 87

Slide 10

Slide 10 text

© Cygames, Inc. ■やりたいことをふまえて トラブル対応 負荷対策 踏み込みやすくするためのツールの使い方を説明し ていきます! 10 / 87

Slide 11

Slide 11 text

© Cygames, Inc. ■アジェンダ • 自己紹介 • この講演で伝えたいこと • 負荷対策やトラブル対応 • ツール使用事例 • まとめ 11 / 87

Slide 12

Slide 12 text

© Cygames, Inc. ■負荷対策・トラブル対応の必要性 Cygamesが掲げているもの • 最高のコンテンツを作る レスポンスなども最高のものにしたい • CS最優先 ユーザーのことを最優先に考え 不具合対応を素早く行う 12 / 87

Slide 13

Slide 13 text

© Cygames, Inc. ■負荷対策・トラブル対応によくある事例 • リリースによる不具合 • 動作を早くしたい • 特定の動作だけ重い 他にも • もともと起きてる不具合が発覚 • リリースしたことによって重くなった など 13 / 87

Slide 14

Slide 14 text

© Cygames, Inc. ■負荷対策・トラブル対応によくある事例 Cygamesで一般的に使っているサーバー系ツール • Munin • Kibana • New Relic • Mackerel • XHProf 14 / 87

Slide 15

Slide 15 text

© Cygames, Inc. ■Munin Munin Web、DB、cache 様々なサーバーの項目 がグラフィカルに見れ る 15 / 87

Slide 16

Slide 16 text

© Cygames, Inc. ■Kibana Kibana ログを収集して ログを解析するために様々な表示が出来る 16 / 87

Slide 17

Slide 17 text

© Cygames, Inc. ■New Relic New Relic サーバーの処理時間などを 項目別に分析が出来る 17 / 87

Slide 18

Slide 18 text

© Cygames, Inc. ■Mackerel Mackerel 対象サーバー(複数)の項目を一覧で見ることが出来る 18 / 87

Slide 19

Slide 19 text

© Cygames, Inc. ■XHProf XHProf PHPをAPIごとに詳細に分析する ことができる 各関数ごとの解析も可能 19 / 87

Slide 20

Slide 20 text

© Cygames, Inc. ■負荷対策・トラブル対策によくある事例 • リリースによる不具合 Munin、Kibana、Mackerel • 潜在的な不具合が発覚 Kibana、Mackerel 20 / 87

Slide 21

Slide 21 text

© Cygames, Inc. ■負荷対策・トラブル対策によくある事例 • リリースしたことによって重くなった Munin、Kibana、Mackerel、New Relic • 動作を速くしたい New Relic、XHProf • 特定の動作だけ重い New Relic、XHProf 21 / 87

Slide 22

Slide 22 text

© Cygames, Inc. ■アジェンダ • 自己紹介 • この講演で伝えたいこと • 負荷対策やトラブル対応 • ツール使用事例 • まとめ 22 / 87

Slide 23

Slide 23 text

© Cygames, Inc. ■ツール一覧 ・Munin ・Kibana ・New Relic ・Mackerel ・XHProf 23 / 87

Slide 24

Slide 24 text

© Cygames, Inc. ■ツール一覧 ・Munin ・Kibana ・New Relic ・Mackerel ・XHProf 24 / 87

Slide 25

Slide 25 text

© Cygames, Inc. ■Munin サーバーの状態をまとめてみることができるツール いろいろな項目があり、ざっと見る分には便利。 更新までに時間がちょっとかかるので、詳細にみる ためには別なツールを使うことも。 25 / 87

Slide 26

Slide 26 text

© 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

Slide 27

Slide 27 text

© Cygames, Inc. ■Munin 見た目はこんな感じ Day、week month、year などの表示期間を変えられ るので、日常と違う異常は 発見しやすい 27 / 87

Slide 28

Slide 28 text

© Cygames, Inc. ■Munin メリット サーバーごとにグラフが見れる グラフで表示のため、異常に気が付きやすい デメリット 一台ずつの表示なので全台みるのが大変 グラフは5分毎にあがってるので瞬間的なグラフは丸まることがある 28 / 87

Slide 29

Slide 29 text

© Cygames, Inc. ■ツール一覧 ・Munin ・Kibana ・New Relic ・Mackerel ・XHProf 29 / 87

Slide 30

Slide 30 text

© Cygames, Inc. ■Kibana ログ収集ツール 設定したものを設定したように表示してくれる ・アクセスログ ・エラーログ ・Nodeのログ など収集している 30 / 87

Slide 31

Slide 31 text

© Cygames, Inc. ■Kibana 31 / 87

Slide 32

Slide 32 text

© Cygames, Inc. ■Kibana 32 / 87

Slide 33

Slide 33 text

© Cygames, Inc. ■Kibana メリット いろんな項目を見たいようにカスタマイズできる テキストログなど、収集設定をすればある程度リアルタイムで見れる デメリット ログの取り込み設定をしないといけない 活用できるログを吐き出すように考えてプログラムする必要がある 33 / 87

Slide 34

Slide 34 text

© Cygames, Inc. ■ツール一覧 ・Munin ・Kibana ・New Relic ・Mackerel ・XHProf 34 / 87

Slide 35

Slide 35 text

© Cygames, Inc. ■New Relic サーバー単位での処理の解析ができる APIごとの処理時間の総数やスループット。 関数内でかかってる処理の詳細など調べられること ができる また 遅いAPIはトレースすることができる 35 / 87

Slide 36

Slide 36 text

© Cygames, Inc. ■New Relic 36 / 87

Slide 37

Slide 37 text

© Cygames, Inc. ■New Relic 37 / 87

Slide 38

Slide 38 text

© Cygames, Inc. ■New Relic メリット サーバー単位で処理の比率が見ることができる クエリごとの重さも見ることができる デメリット ピックアップされた重い処理に関してはトレースできるが、全部の処理 にたいして細かくはやれない 38 / 87

Slide 39

Slide 39 text

© Cygames, Inc. ■ツール一覧 ・Munin ・Kibana ・New Relic ・Mackerel ・XHProf 39 / 87

Slide 40

Slide 40 text

© Cygames, Inc. ■Mackerel サーバーの状態がまとめてみれる すべてが一つのグラフで見れたりするので、一台だ け問題があるときなど、グラフが異常が発見しやす い 40 / 87

Slide 41

Slide 41 text

© Cygames, Inc. ■Mackerel 41 / 87

Slide 42

Slide 42 text

© Cygames, Inc. ■Mackerel メリット 各項目について全台チェックできる デメリット 対象台数が多ければ多いほど表示が重い 42 / 87

Slide 43

Slide 43 text

© Cygames, Inc. ■ツール一覧 ・Munin ・Kibana ・New Relic ・Mackerel ・XHProf 43 / 87

Slide 44

Slide 44 text

© Cygames, Inc. ■XHProf PHPコードが詳細に解析できる 関数の呼び出し回数、その関数の処理時間など。 メモリも見れるので、改善結果などの比較も容易。 44 / 87

Slide 45

Slide 45 text

© Cygames, Inc. ■XHProf APIリストが並んでいる ※time usememは chrome extentionとして 自作して導入している。 45 / 87

Slide 46

Slide 46 text

© Cygames, Inc. ■XHProf 46 / 87

Slide 47

Slide 47 text

© Cygames, Inc. ■XHProf 47 / 87

Slide 48

Slide 48 text

© Cygames, Inc. ■XHProf メリット APIを全部チェックできる 各関数を細かくチェックできるので、改修箇所を探すのが楽 デメリット 使うためにソースコードに手を入れる必要がある APIが全部上がってくるので、問題のAPIを探すのが大変 48 / 87

Slide 49

Slide 49 text

© Cygames, Inc. ■事例のおさらい • リリースによる不具合 • 動作を早くしたい • 特定の動作だけ重い 49 / 87

Slide 50

Slide 50 text

© Cygames, Inc. ■事例のおさらい • リリースによる不具合 • 動作を早くしたい • 特定の動作だけ重い 50 / 87

Slide 51

Slide 51 text

© Cygames, Inc. ■リリースによる不具合 リリースによる不具合ってどんなの? プログラムのバグ 例)単純にプログラムがバグってる 機器トラブル 例)DBサーバーのコネクションがつまった 負荷トラブル 例)アクセス過多によりwebの処理速度低下 51 / 87

Slide 52

Slide 52 text

© Cygames, Inc. ■リリースによる不具合 使うツール Munin Kibana Mackerel 52 / 87

Slide 53

Slide 53 text

© Cygames, Inc. ■リリースによる不具合 前提条件 トラブルが起きていることに 気がつく! 一番はじめにやりたいこと 原因箇所の切り分け! 53 / 87

Slide 54

Slide 54 text

© Cygames, Inc. ■リリースによる不具合 どうやってツール使う? Munin Kibana Mackerel 54 / 87

Slide 55

Slide 55 text

© Cygames, Inc. ■リリースによる不具合 どうやってツール使う? Munin Kibana Mackerel 55 / 87

Slide 56

Slide 56 text

© Cygames, Inc. ■リリースによる不具合 意識してやっていること 日頃から各種数値をみる Apache access、LA Cpu、memory Mysql queries、slow queries connectionsなどなど 日頃のグラフとは極端に違うグラフがでれば 何か起きている!! 56 / 87

Slide 57

Slide 57 text

© Cygames, Inc. ■サーバーの状態のグラフ 一週間の推移図 どのあたりまで上がる とか、ルールがわかる。 例)リリース直後で急 にグラフが伸びると何 かまずいものがリリー スされた(もしくは ユーザーがいっぱいア クセスしてる)など推 測できる。 57 / 87

Slide 58

Slide 58 text

© Cygames, Inc. ■リリースによる不具合 どうやってツール使う? Munin Kibana Mackerel 58 / 87

Slide 59

Slide 59 text

© Cygames, Inc. ■リリースによる不具合 意識してやっていること プログラムでログを残す DBにログを残す場合もあるが エラーログとしてテキストデータを出力している。 プログラムの不具合があるならば エラーログが吐かれているはずなので いち早くそれを検知する! 59 / 87

Slide 60

Slide 60 text

© Cygames, Inc. ■エラーログのキャッチ Dashboardで設定すれ ば、いろんなものがひと 目で見れる。 単純にapacheのエラー カウントやサーバーのエ ラーカウント、エラーロ グを表示すれば今現在ど んなものが出ているかす ぐわかる 60 / 87

Slide 61

Slide 61 text

© Cygames, Inc. ■リリースによる不具合 どうやってツール使う? Munin Kibana Mackerel 61 / 87

Slide 62

Slide 62 text

© Cygames, Inc. ■リリースによる不具合 意識してやっていること サーバーの状態をちゃんと把握すること cpuやworkerの状態が把握できる 機器故障があればグラフですぐわかる! 62 / 87

Slide 63

Slide 63 text

© Cygames, Inc. ■サーバーの状態 上記はcpuのグラフ いろいろな項目が設定しているサーバーを一覧でだせるので 何かトラブルがあればグラフに如実にでる 63 / 87

Slide 64

Slide 64 text

© Cygames, Inc. ■リリースによる不具合 まとめ 異常を感じ取ることが大事 異常を判断できるようになる必要がある そのためには日頃グラフ等を見ておく 異常を感じ取れるように情報を増やしたい なので ツールを使うと便利かつ早い! 64 / 87

Slide 65

Slide 65 text

© Cygames, Inc. ■事例のおさらい • リリースによる不具合 • 動作を早くしたい • 特定の動作だけ重い 65 / 87

Slide 66

Slide 66 text

© Cygames, Inc. ■負荷対策 理想 必要最小限のデータで 必要最小限の適切なコードで 処理をする 66 / 87

Slide 67

Slide 67 text

© Cygames, Inc. ■負荷対策 あたりまえのことをやるだけ 67 / 87

Slide 68

Slide 68 text

© Cygames, Inc. ■動作を早くしたい 重い処理をなくせば早くなる ボトルネックをちゃんと把握すること 処理が多い関数を把握する 回数が多いところを直せば 費用対効果が大きい! 68 / 87

Slide 69

Slide 69 text

© Cygames, Inc. ■動作を早くしたい どうやってツール使う? New Relic XHProf 69 / 87

Slide 70

Slide 70 text

© Cygames, Inc. ■動作を早くしたい どうやってツール使う? New Relic XHProf 70 / 87

Slide 71

Slide 71 text

© Cygames, Inc. ■New Relic 左下に関数ごとに時間 がかかってるリストが 出ている 多く時間を占めている ものほど費用対効果が でかい 71 / 87

Slide 72

Slide 72 text

© Cygames, Inc. ■動作を早くしたい どうやってツール使う? New Relic XHProf 72 / 87

Slide 73

Slide 73 text

© Cygames, Inc. ■XHProf 各関数における処理時 間、使用メモリが追え るのでここから改修す る箇所を探す Incl.WallTimeと Excl.WallTimeを駆使す ると関数内の処理が重 いのか その関数自体 の処理が重いのかもわ かる 73 / 87

Slide 74

Slide 74 text

© Cygames, Inc. ■XHProf 上記のようにIncl.WallTimeを押せば重い順番にソートしてくれるので ポイントが見つけやすい 74 / 87

Slide 75

Slide 75 text

© Cygames, Inc. ■XHProf 関数をクリックすれば、その関数が呼ばれている箇所 また、その関数内になんの関数があるかなど、詳細にデータが出てくる 気になる関数を調べることで 一個ずつ解析することができる 75 / 87

Slide 76

Slide 76 text

© Cygames, Inc. ■動作を早くしたい まとめ New Relicでなおしたい関数を探す XHProfでなおす箇所を探す コードの直し方は色々あるけど、基本的には 必要最小限のデータで 必要最小限の適切なコードで処理 上記で問題ない 76 / 87

Slide 77

Slide 77 text

© Cygames, Inc. ■事例のおさらい • リリースによる不具合 • 動作を早くしたい • 特定の動作だけ重い 77 / 87

Slide 78

Slide 78 text

© Cygames, Inc. ■特定の動作だけ重い どうやってツール使う? New Relic XHProf 78 / 87

Slide 79

Slide 79 text

© Cygames, Inc. ■New Relic Transactions項目 を開くと右下に重 かった処理が表示 される これをクリックす ると詳細な表示に なる 79 / 87

Slide 80

Slide 80 text

© Cygames, Inc. ■New Relic Popupの中のtrace details項目を開く と左のようなリスト が表示される 表示されてるリスト の中で直したいとこ ろを探す 80 / 87

Slide 81

Slide 81 text

© Cygames, Inc. ■特定の動作だけ重い どうやってツール使う? New Relic XHProf 81 / 87

Slide 82

Slide 82 text

© Cygames, Inc. ■XHProf 動作を早くしたときのXHProfの使用方法と同じ 基本的に直したいAPIを表示させてから中身を分析 後はひたすら表示内容とソースを見比べて 無駄な処理を省く 82 / 87

Slide 83

Slide 83 text

© Cygames, Inc. ■特定の動作だけ重い まとめ APIが決まっているなら、XHProfで対象のAPIを解 析する 重いAPIがあったところから直していくなら New Relicで重かったAPIを分析するといい 直したい箇所が先か 重かったところを直したいか でツールを使い分ける! 83 / 87

Slide 84

Slide 84 text

© Cygames, Inc. ■注意事項 ツールの使い方はあくまで一例 もっと別な使い方もあると思われる。 また場合によっては使わなくてもいい場面もある。 利用用途に応じたツールの使い方をしてください! 84 / 87

Slide 85

Slide 85 text

© Cygames, Inc. アジェンダ • 自己紹介 • この講演で伝えたいこと • 負荷対策やトラブル対応 • ツール使用事例 • まとめ 85 / 87

Slide 86

Slide 86 text

© Cygames, Inc. まとめ ツールを使えばなんでも出来るわけではない ツールを使うと時間が短縮できる ツール自体は目的によってしっかり使い分ける なぜツールを使うのか? 便利であり、楽だから! 空いた時間でまた改良をしていって 最高のコンテンツを作りあげていく! 86 / 87

Slide 87

Slide 87 text

© Cygames, Inc. ご清聴ありがとうございました! 87 / 87