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

Elasticache for Redisを使っていたらサービスが固まった件

More than 3 years have passed since last update.

事象

ソーシャルサービスを運用して1年くらいになるのですが、ある日突然デザイナから
「なんかサービス遅くないですか?」と言われサイトを開くとすこぶる遅い!

アプリケーションを調べているとEC2からElasticacheへのアクセスでタイムアウトが
起きていることが分かりました。

そいでCloudWatchでメトリクスを見ているとプライマリサーバが
SwapUsage の値が急激に増加していることが確認出来ました。

しかーし、とにかくそういったものはAWSに任せて突き進んできたものですから
どーしよ、どーしよとなっていたところセカンダリサーバがプライマリに昇格して
復旧となりました。この間、30分ほどです。

原因

  • reserved-memoryを設定していなかったこと

上記が原因でした。
これを設定しないとインスタンスのメモリをRedisですべて使い切ってしまう(maxmemory=reserved-memory)ようで、

ちゃんとRedis以外のメモリも確保していなかったので結果、スワップが発生する状態になっていました。

reserved-memoryの設定値

安全値としては 50% 程度(メモリ空間 maxmemory の半分程度)を設定頂くことで、BGSAVE による影響をほぼ回避できることが分かっているようです。

ちなみに私はRedisのversionが2.8.19だったのですが、2.8.22 以降のバージョンを利用している場合、目安としてメモリ空間 maxmemory の 20-30% 程度を設定頂くのが安全値だそうです。

AWSユーザガイド

まとめ

なんだかんだでも30分で自動で復旧してくれる。やっぱフルマネージドいい!って思ったと同時に
フルマネージドだからといってもしっかりユーザガイドを見て分かっておくことが重要ですね。

これは言い訳なのですが、私の会社では開発部とインフラ部が分かれており、
AWSの設定はすべてインフラ部がやることなので開発部がコンソールに触れることはあまりありません。
ですが、AWS使ってるんだからサービス側がもっとその領域に踏み込んでいくべきだと痛感しました。

私たちのように専業していてはAWSを使うメリットが消えてしまうように思うし、
かといって会社がある程度大きいと専業してしまいがちです。

ほかの会社さんがどのようにAWSを管理しているか気になりますね。

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
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