概要
Nginx でキャッシュの有効期限が切れたとき、一勢にリクエストがバックエンドに流れることになります。。
そうなると、当然バックエンドサーバの負荷が大きくなりサービス障害につながるので注意が必要です。
しかし、Nginx にはそれを解決するために proxy_cache_lock という設定がありバックエンドサーバへのリクエストを制限することができるので、ここで紹介したいと思います。
解決方法
Nginxには以下の設定項目が用意されている。
1 2 |
proxy_cache_lock on; proxy_cache_lock_timeout 3s; |
これによって、キャッシュミスした場合に同一リクエストに対してはひとつにまとめて、バックエンドへのリクエストを行ってくれます。
proxy_cach_lock_time は指定した時間、バックエンド(オリジンサーバ)から応答がなければもう一度リクエストを投げます。
急激なトラフィックがあるサイトに関してはこの設定は必ず入れたほうが良いと思われます。
Nginx は非常に優れたプロダクトなのでだいたいのことは解決できますね。