Upgrade to Pro — share decks privately, control downloads, hide ads and more …

監視・解析ツールから読み解く!トラブル対応&負荷対策

Cygames
February 24, 2017

 監視・解析ツールから読み解く!トラブル対応&負荷対策

2017/02/16 Developers Summit 2017

Cygames

February 24, 2017
Tweet

More Decks by Cygames

Other Decks in Technology

Transcript

  1. © Cygames, Inc. 1 / 87

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  4. © Cygames, Inc. 4 / 87

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    15 / 87

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  26. © 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  31. © Cygames, Inc.
    ■Kibana
    31 / 87

    View full-size slide

  32. © Cygames, Inc.
    ■Kibana
    32 / 87

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  36. © Cygames, Inc.
    ■New Relic
    36 / 87

    View full-size slide

  37. © Cygames, Inc.
    ■New Relic
    37 / 87

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    40 / 87

    View full-size slide

  41. © Cygames, Inc.
    ■Mackerel
    41 / 87

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  46. © Cygames, Inc.
    ■XHProf
    46 / 87

    View full-size slide

  47. © Cygames, Inc.
    ■XHProf
    47 / 87

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide