Amazon Redshiftで起きたトラブル事例

16
Amazon Redshiftで 起きたトラブル事例 Mar. 9, 2017 Adways 石丸 裕史

Transcript of Amazon Redshiftで起きたトラブル事例

Page 1: Amazon Redshiftで起きたトラブル事例

Amazon Redshiftで起きたトラブル事例

Mar. 9, 2017

Adways 石丸 裕史

Page 2: Amazon Redshiftで起きたトラブル事例

confidential自己紹介

2© ADWAYS INC.

石丸裕史(いしまる ひろし) @Adways

データ分析ディレクター & エンジニア

最近の仕事

広告配信の分析DBチューニング(Redshift, MySQL)分析管理画面開発Excel、PowerPointで資料作り

言語等

Rails、R、Python、古いPHP、古いJava、古いFortran、古い・・・、等

Page 3: Amazon Redshiftで起きたトラブル事例

confidentialRedshiftのトラブル事例の前に

3© ADWAYS INC.

導入時期 2013年6月頃

Redshiftの利用概要

Redshiftへのデータ転送で導入したツール等

Flydatafluent-plugin-redshiftシェル

利用例 アプリのログから行動解析某中規模データのデータ解析某広告サービスの配信解析

Page 4: Amazon Redshiftで起きたトラブル事例

confidential

4© ADWAYS INC.

本題: Redshiftのトラブル事例

Page 5: Amazon Redshiftで起きたトラブル事例

confidentialRedshiftのトラブル事例

5© ADWAYS INC.

Redshiftのメンテナンスで、エラーメール祭りになった話

1

2

3

4

Redshiftのテーブルに圧縮エンコードを付けようととして、容量不足に陥りかけた話

Interleaved Sort Keyを使ってみた結果、処理が劇的に重くなった話

Amazon Linuxでfluent-plugin-redshiftを利用したら、fluentdのプロセスがフリーズした話

Page 6: Amazon Redshiftで起きたトラブル事例

confidential

6© ADWAYS INC.

Amazon Linuxでfluent-plugin-redshiftを利用したら、fluentdのプロセスがフリーズした話

Page 7: Amazon Redshiftで起きたトラブル事例

confidentialシステムトラブル概要

7© ADWAYS INC.

発生時期 2015年5月末頃

WebサーバのログをRedshiftへ転送

トラブル概要

・fluentd-plugin-redshiftを利用した際に、fluentdのプロセスがフリーズした。

解決までにかかった期間 約20日

flydataからfluent-plugin-redshfitへ移行が完了した数日後に発生

Page 8: Amazon Redshiftで起きたトラブル事例

confidential

S3

システム構成

8© ADWAYS INC.

EC2: ログ転送サーバ

CloudWatch

VPC

Redshift:Oregon

サービスA

Redshift データ分析

管理画面

サービスB

サービスC

・・・

Page 9: Amazon Redshiftで起きたトラブル事例

confidentialトラブル詳細

9© ADWAYS INC.

フリーズして、ログすら何も出ない状態1

フリーズは必ず起こるわけではなく、いつ起きるか不明の状態

2

オンプレで1年運用した際には、同様の現象が1回も発生しなかった。

3

Google先生に聞いても返事はなかった。4

Page 10: Amazon Redshiftで起きたトラブル事例

confidentialトラブル対応1

10© ADWAYS INC.

Fluentdのログレベルを変更

Trace、Debugなどのログも出るように起動スクリプトを修正して様子見

フリーズする現象なので、当然のようにフリーズして、Debugログも止まる。

Page 11: Amazon Redshiftで起きたトラブル事例

confidentialトラブル対応2

11© ADWAYS INC.

Fluentdのバージョン変更

オンプレで正常稼動していたバージョンに、fluentd及び利用しているfluentd-pluginのバージョンを変更

あえなくフリーズ。バージョンは関係なさそう。

Page 12: Amazon Redshiftで起きたトラブル事例

confidentialトラブル対応3

12© ADWAYS INC.

fluent-plugin-redshiftに処理を追加

Debugログを増やして、plugin内のどこでフリーズしているかを特定する

fluentd フリーズ履歴

2015-05-29 23:122015-05-31 16:102015-06-02 12:362015-06-03 00:10

・・・

Page 13: Amazon Redshiftで起きたトラブル事例

confidentialトラブル対応4

13© ADWAYS INC.

create_s3pathメソッド内でフリーズ判明

メソッド内のbucket.objects[s3path].exist?が応答無し。

pluginの該当箇所に、rubyのbegin、rescue文で、例外が発生したケースは処理を飛ばすように修正

1週間以上フリーズせず、平和になったかに見えたが、再度フリーズ発生。

Page 14: Amazon Redshiftで起きたトラブル事例

confidentialトラブル対応5

14© ADWAYS INC.

OSの変更

AmazonLinux → CentOS 6.5

※当時のオンプレ安定環境だったOSに変更

ついに平和が訪れた!!!

Page 15: Amazon Redshiftで起きたトラブル事例

confidentialトラブル対応まとめ

15© ADWAYS INC.

原因推定

当時のAmazonLinuxとfluent-plugin-redshiftというかなり限定された範囲内で発生した事象で、詳細な原因を突き詰めるところまでは実施せず。

pluginのコードとは別に、S3へのアクセス処理を追加して検証した際に、その処理でもフリーズしたことから、当時のAmazonLinuxからの通信処理の問題だったと推定している。

Page 16: Amazon Redshiftで起きたトラブル事例

confidentialRedshiftの運用事例

16© ADWAYS INC.

ノード追加の話1

2

3

4

新アカウントへRedshiftを移行した話

Analyze Compression、Vacuumとかした時に、ロックとか実行時間ってどうなるの?って話

Redshiftの管理系コマンドの話