Top Banner
トラブルシューティングのあれこれ Oct.28.2017 Kamata Yoshihiko EC Incubation Development Dept. Rakuten, Inc.
59

トラブルシューティングのあれこれ Yoshihiko kamata

Jan 21, 2018

Download

Technology

Rakuten, Inc
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: トラブルシューティングのあれこれ Yoshihiko kamata

トラブルシューティングのあれこれ

Oct.28.2017

Kamata Yoshihiko

EC Incubation Development Dept.

Rakuten, Inc.

Page 2: トラブルシューティングのあれこれ Yoshihiko kamata
Page 3: トラブルシューティングのあれこれ Yoshihiko kamata

3

担当業務

• 管理サーバー/サービスの保守・運用

• 品質保証:なんでもレビュー

• サービス巻取りの先行部隊

• 圧縮

• 仕組み化

• トラブルシューティング∠( ゚д゚)/

• その他

Page 4: トラブルシューティングのあれこれ Yoshihiko kamata

4

問題意識

Page 5: トラブルシューティングのあれこれ Yoshihiko kamata

5

問題意識

• 急ぎのタスク、急ぎの調査依頼が、集中する。

• 育成に時間をかける余裕がない。

• 急ぎの(省略)

• やりたいことが出来ない。。。

Page 6: トラブルシューティングのあれこれ Yoshihiko kamata

6

管理ではなく、開発者目線でお話したいと思います。

Page 7: トラブルシューティングのあれこれ Yoshihiko kamata

7

トラブル

障害に限定せず、イレギュラーに発生して工数を奪っていくもの、とします。

Page 8: トラブルシューティングのあれこれ Yoshihiko kamata

8

まずは事例をいくつか。。。

Page 9: トラブルシューティングのあれこれ Yoshihiko kamata

9

状況

何十台かあるWEBサーバーのLogから情報を抽出して、fluentdを利用してDBにINSERT。

事象

全台でfluentdを起動してまもなくDBへ接続しにくい状況が発生。

Page 10: トラブルシューティングのあれこれ Yoshihiko kamata

10

状況

リダイレクタを提供している。

URLの管理は、専用の管理画面を用意している。

事象

転送先を更新したが、スマホからアクセスすると、更新前のURLにリダイレクトされる。という利用者からの問合せ。

Page 11: トラブルシューティングのあれこれ Yoshihiko kamata

11

状況

ファイルストアサービスを提供している。このサービスは、API経由で、ファイルを登録できる。

事象

提供しているAPIで、特定のファイルだけがTimeoutになりアップロードできない、という問合せ。

Page 12: トラブルシューティングのあれこれ Yoshihiko kamata
Page 13: トラブルシューティングのあれこれ Yoshihiko kamata

13

質問

トラブルシューティングの得意なメンバーはいますか?

Page 14: トラブルシューティングのあれこれ Yoshihiko kamata

14

インフラ?

設計?仕様?

実装?

Page 15: トラブルシューティングのあれこれ Yoshihiko kamata

15

苦手意識 障壁

Page 16: トラブルシューティングのあれこれ Yoshihiko kamata

16

知識不足

• インフラ / システム構成

• 仕様 / 設計 / 実装 / データ

• 基礎技術

経験不足

• 考え方

• オペレーション

ストレス

• 失敗 / 間違い

• 催促

誤解

• INPUT エラー

• OUTPUT エラー

責任境界

• 権限

• 他者(社)サービス依存

Page 17: トラブルシューティングのあれこれ Yoshihiko kamata

17

トラブルシューティングとは?

Page 18: トラブルシューティングのあれこれ Yoshihiko kamata

18

“Troubleshooting”. techopedia. https://www.techopedia.com/definition/5574/troubleshooting, (参照 2017-

10-24).

Page 19: トラブルシューティングのあれこれ Yoshihiko kamata

19

体系化された技術だっけ?

Page 20: トラブルシューティングのあれこれ Yoshihiko kamata

20

体系化されたものはないが、おおよそセオリーと呼べそうなものはありそう。

• 事象の確認/情報収集

• 問題の切り分け

• 仮説を立てる 状況によっては、並列で動くことも

• 仮説の検証

• 対処

• 振り返り

• 落ち着いた状態で、見落としや、勘違いがないか考え直してみる。

Page 21: トラブルシューティングのあれこれ Yoshihiko kamata

21

一般的な進め方は?

Page 22: トラブルシューティングのあれこれ Yoshihiko kamata

22

一般的・・・は、分からないので、私が担当する場合の進め方

Page 23: トラブルシューティングのあれこれ Yoshihiko kamata

23

全体像

一次情報の確認 仮説を立てる 仮説を検証

因果関係の逆転

原因推測可能 裏付けを取る

特定

Page 24: トラブルシューティングのあれこれ Yoshihiko kamata

24

簡単な場合

例えば・・・

• Permission error

• ディスク容量不足

• Validateエラー

• File Not Found

他にも、過去に経験しているものなど

一次情報の確認

原因推測可能 裏付けを取る

特定

Page 25: トラブルシューティングのあれこれ Yoshihiko kamata

25

ちょっと考える場合

一次情報の確認 仮説を立てる 仮説を検証 特定

Page 26: トラブルシューティングのあれこれ Yoshihiko kamata

26

仮説が立たない!?

入手可能な情報は全て集めた。

結果から推測できる原因が考え付かない。。。

一次情報の確認 仮説を立てる 仮説を検証

因果関係の逆転

特定

何を原因と仮定すれば、この結果を導けるのか?

どうすれば、この事象が引き起こせるのか?

という発想で、仮説を立ててみる。

Page 27: トラブルシューティングのあれこれ Yoshihiko kamata

27

得意な人とそうでない人の差って何?

Page 28: トラブルシューティングのあれこれ Yoshihiko kamata

良くない例

Page 29: トラブルシューティングのあれこれ Yoshihiko kamata

29

問合せ受領問合せ内容を元

に調査分からない 困る

Page 30: トラブルシューティングのあれこれ Yoshihiko kamata

さらに良くない例

Page 31: トラブルシューティングのあれこれ Yoshihiko kamata

31

問合せ受領問合せ内容を元

に調査外部に問合せ

回答受領

再調査

Page 32: トラブルシューティングのあれこれ Yoshihiko kamata
Page 33: トラブルシューティングのあれこれ Yoshihiko kamata

33

問合せ受領問合せ内容を元

に調査外部に問合せ

回答受領

再調査

Page 34: トラブルシューティングのあれこれ Yoshihiko kamata

34

確認

• 客観性はあるか?

• 専門性はあるか?

問合せ受領問合せ内容を元

に調査外部に問合せ

回答受領

再調査

Page 35: トラブルシューティングのあれこれ Yoshihiko kamata

35

その他

• LOGを見ない。(LOGがないケースも。。)

• その事象だけを考えている。

• ネット(blog等)の情報を過信する。

• 始めから一つの可能性しか考えない。

• コミュニケーションミス

など

Page 36: トラブルシューティングのあれこれ Yoshihiko kamata

36

鉄則

Page 37: トラブルシューティングのあれこれ Yoshihiko kamata

37

• 受け取った情報を疑う。

• 客観性はあるか?専門性はあるか?

• LOGを先ず確認する。得られる情報をかき集める。

• 一次情報を確認する癖を付ける。

• 情報の保全も重要。

• 点ではなく、線で考える。視野を広く持つ。

• どういう状況で起きているのか考える。

• トリガーは?

• 規則性はあるのか?

• ホウレンソウにあたっては、事実を伝えるように心がける。

Page 38: トラブルシューティングのあれこれ Yoshihiko kamata

38

教訓

Page 39: トラブルシューティングのあれこれ Yoshihiko kamata

39

• 情報

• 相手が上司でも疑う。

• 担当部署からの回答であっても疑う。

• 情報ソースの確認を怠らない。

• コミュニケーション

• 自分の言いたいことではなく、事実を伝える。

• 思っていることを事実であるかのように言わない。

• 心理状態

• 相手に無駄なプレッシャーをかけない。

• 冷静さを欠いてる時は手を止める。

Page 40: トラブルシューティングのあれこれ Yoshihiko kamata

40

スキルアップするには?

Page 41: トラブルシューティングのあれこれ Yoshihiko kamata

41

• 経験 ⇒ 同じ事象への対応力

• 場数 ⇒ 類似事象への対応力

• 過去の経験、あるいは事例の記憶 ⇒ スピードアップ

• 蓄積された情報へのアクセス手段 ⇒ 底上げに期待

• 過去事例とどう結び付けるか?

• 事例共有だけでは、トラブルシューティングのスキルは身に付かない。

• 同じ事象であっても、原因は様々。原因に至るプロセスまで含めて共有しなければ意味がない。

Page 42: トラブルシューティングのあれこれ Yoshihiko kamata

42

• 良いものを知る。 ⇒ 未知の事象への対応力

※設計者の視点で考えられるようにする。

• プロダクトの設計情報を読む。

• そのプロダクトが何故作られたのか?他と何が違うのか?

• どういう点が工夫されているのか?

• 特徴として書かれていることは、どう実現されているのか?

重要なのは、アーキテクチャを理解すること。

• ソースコードを読む。

• クラスやメソッドがどう設計されているか読み取る。

Page 43: トラブルシューティングのあれこれ Yoshihiko kamata

43

• テキスト操作技術 ⇒ 情報収集の精度・スピード

• 最終的にスピードを左右するのは、知識量

• Application

• 仕様理解

• 背景・経緯の理解

• アーキテクチャの理解

• 設計の理解

• 依存関係の理解

• データ(DB/File/Cache)構成ライフサイクルの理解

• ソースコードの把握

• Server

• 基礎知識

• OS / コマンド / 言語

• ネットワーク

• 周辺知識

• Dir/File構成

• Logの場所/出力内容

• 負荷調査スキル

Page 44: トラブルシューティングのあれこれ Yoshihiko kamata

44

Page 45: トラブルシューティングのあれこれ Yoshihiko kamata
Page 46: トラブルシューティングのあれこれ Yoshihiko kamata

46

状況

何十台かあるWEBサーバーのLogから情報を抽出して、fluentdを利用してDBにINSERT。

事象

全台でfluentdを起動してまもなくDBへ接続しにくい状況が発生。

Page 47: トラブルシューティングのあれこれ Yoshihiko kamata

47

状況

何十台かあるWEBサーバーのLogから情報を抽出して、fluentdを利用してDBにINSERT。

事象

全台でfluentdを起動してまもなくDBへ接続しにくい状況が発生。

対応

fluentdのlog

⇒ error="Too many connections“

DBの”max connections”及び、現在の接続数を確認

一次情報の確認

Page 48: トラブルシューティングのあれこれ Yoshihiko kamata

48

状況

何十台かあるWEBサーバーのLogから情報を抽出して、fluentdを利用してDBにINSERT。

事象

全台でfluentdを起動してまもなくDBへ接続しにくい状況が発生。

対応

1.fluentdがDBに書き込む度に新しいConnectionを張って、Closeしてない?

2.低レイヤーでのBug?

3.仕様によるものなので、DB側の閾値を上げるべき?

仮説を立てる

Page 49: トラブルシューティングのあれこれ Yoshihiko kamata

49

状況

何十台かあるWEBサーバーのLogから情報を抽出して、fluentdを利用してDBにINSERT。

事象

全台でfluentdを起動してまもなくDBへ接続しにくい状況が発生。

対応

閾値を上げる案に対しては、Connectionの増加スピードが不明だったため見送った。原因が分からないまま、閾値を上げても追いつく可能性もある。

DB登録を行うpluginは、Rubyのコードだった。DB接続を行う箇所が2箇所あり、一方はconnectionの変数を取り、closeまでしていたが、もう一方は、メソッドチェーンで記述されていて、closeしていなかった。

仮説を検証

Page 50: トラブルシューティングのあれこれ Yoshihiko kamata
Page 51: トラブルシューティングのあれこれ Yoshihiko kamata

51

状況

リダイレクタを提供している。URLの管理は、専用の管理画面を用意している。

事象

転送先を更新したが、スマホからアクセスすると、更新前のURLにリダイレクトされる。という利用者からの問合せ。

Page 52: トラブルシューティングのあれこれ Yoshihiko kamata

52

状況

リダイレクタを提供している。URLの管理は、専用の管理画面を用意している。

事象

転送先を更新したが、スマホからアクセスすると、更新前のURLにリダイレクトされる。という利用者からの問合せ。

対応

管理画面の確認と、実際にブラウザでアクセスしてみて問合せにあったものと同じ事象が再現できることを確認。

一次情報の確認

Page 53: トラブルシューティングのあれこれ Yoshihiko kamata

53

状況

リダイレクタを提供している。URLの管理は、専用の管理画面を用意している。

事象

転送先を更新したが、スマホからアクセスすると、更新前のURLにリダイレクトされる。という利用者からの問合せ。

対応

1.ブラウザでキャッシュしてしまっている?2.APP側で古い情報のキャッシュが残っている?(memcachedを利用している)3.そもそもどうやってリダイレクト指示してる?(ソースコード確認)

仮説を立てる

Page 54: トラブルシューティングのあれこれ Yoshihiko kamata

54

状況

リダイレクタを提供している。URLの管理は、専用の管理画面を用意している。

事象

転送先を更新したが、スマホからアクセスすると、更新前のURLにリダイレクトされる。という利用者からの問合せ。

対応

1.ブラウザでキャッシュしてしまっている? ⇒ 履歴をクリアすると解消した2.APP側で古い情報のキャッシュが残っている? ⇒ キャッシュは更新されていた3.そもそもどうやってリダイレクト指示してる? ⇒ 301 Redirect

仮説を検証

Page 55: トラブルシューティングのあれこれ Yoshihiko kamata
Page 56: トラブルシューティングのあれこれ Yoshihiko kamata

56

状況

ファイルストアサービスを提供している。このサービスは、API経由で、ファイルを登録できる。

事象

提供しているAPIで、特定のファイルだけがTimeoutになりアップロードできない、という問合せ

Page 57: トラブルシューティングのあれこれ Yoshihiko kamata

57

状況

ファイルストアサービスを提供している。このサービスは、API経由で、ファイルを登録できる。

事象

提供しているAPIで、特定のファイルだけがTimeoutになりアップロードできない、という問合せ

対応

通常の監視でレスポンス遅延が起きていないことは分かっているので、

利用者側の環境からAPIへの経路上の問題、あるいは利用者側の実装の問題と推測。原因推測可能

Page 58: トラブルシューティングのあれこれ Yoshihiko kamata

58

状況

ファイルストアサービスを提供している。このサービスは、API経由で、ファイルを登録できる。

事象

提供しているAPIで、特定のファイルだけがTimeoutになりアップロードできない、という問合せ

対応

ファイルの拡張子と実体がずれていないか、バイナリエディタで確認。実際に、APIに直接アクセスしてアップロードできることを確認。

裏付けを取る

Page 59: トラブルシューティングのあれこれ Yoshihiko kamata