Help us understand the problem. What is going on with this article?

AWSでアベイラビリティゾーンをまたいでのアクセスが想像以上に遅かった話

More than 1 year has passed since last update.

事の発端

弊社サービス「あなたのマイスター」ではAWSを利用し、以下のようなアーキテクチャで運用しています。

スクリーンショット 2018-04-02 9.52.50.png

が、速度がCVRに直結するシステムに於いて
どうにも「たまーにレスポンスが遅いときがあるけどサーバの負荷とかは特に上がっていない」という不思議な症状が発生するようになりました。

  • とあるURLに対するControllerの処理時間(ms)
サーバA(ap-northeast-1c) サーバB(ap-northeast-1a)
185 295
114 305
112 297
257 311
125 303
198 296
114 305
119 291
147 325
210 372
149 298
176 305
130 369
143 319
129 437
平均 平均
153.87 321.87

うーん…下手すると処理時間が倍くらい違う...

いろいろ調べてみるとアベイラビリティ―ゾーン(AZ)が問題らしい

EC2インスタンスは両方共 m4.large のため、マシンスペックは同じです。
また、監視グラフを見てみても特定のインスタンスに負荷がかかっている。
いろいろ調べてみると、どうにも
「アベイラビリティゾーン(AZ)をまたいだ通信は結構コストが掛かるよ!」
という記事が見つかりました。(AZ間のレイテンシについて )

Banners_and_Alerts_と_ユアマイスターシステム_20180110_pdf(2___5ページ).png

あなたのマイスターのシステムではELBで負荷分散しているEC2の片側のみが ap-northeast-1a 、それ以外のEC2、RDS、Elasticsearch、Redisが全て ap-northeast-1c で構成されている Multi-AZ 構成になっています。
もしやこれかが原因か?と思ったんですが、ちょっと記事が古い...
しかもAWSの人に相談したときはMulti-AZで問題ないって言って推奨されたしなぁ...

さらに調べてみると「複数AZ間の遅延は1、2ミリ秒であるため、(アプリケーションは)2つのAZに対して同時にコミットができる。」(AWSのデータセンターの中身を、設計総責任者が話した (2/2))とか書いてある。

うーん...どっちが本当なのかよく分からんなぁ...

実際にMulti-AZからSingle-AZに変更してみた

半信半疑のままAMIコピーを作成し、ap-northeast-1cにインスタンスを立ててELBのターゲットに登録しap-northeast-1aのインスタンスを切り離してみました。

サーバA(ap-northeast-1c) サーバB(ap-northeast-1a) サーバC(ap-northeast-1c)
185 295 116
114 305 154
112 297 201
257 311 187
125 303 165
198 296 132
114 305 266
119 291 198
147 325 142
210 372 137
149 298 184
176 305 176
130 369 166
143 319 113
129 437 154
平均 平均 平均
153.87 321.87 166.10

揃った!!!めっちゃ遅延しとるやん!!!数msっていう話はどこ行った!!!

まとめ

  • AZ間の通信は想像以上に遅い(コネクションプールの仕組みがあるDBアクセスでも結構時間がかかるっぽい)
  • 速度を重視するサービスで、インフラの障害を許容できるのであればSingle-AZ環境での運用をおすすめします
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした