本当にただのメモ

なるべく Qiita に投稿しよう

prefork サーバーと thundering herd 問題

prefork サーバーと thundering herd 問題 - naoyaのはてなダイアリー

一つのコネクションが起点になってすべての preforked なプロセス/スレッドが起き上がってしまいシステムに負荷がかかる現象を "thundering herd" と呼ぶ

Linux では accept(2) による thundering herd 問題は古いカーネルでのみ発生する

Apache では accept_mutex_* 関数で accept(2) の順列化を行っている

Kazuho@Cybozu Labs: キャッシュシステムの Thundering Herd 問題

サーバにおける Thundering Herd 問題注1は良く知られていると思いますが、類似の現象はキャッシュシステムでも発生することがあります注2。

通常、キャッシュに格納されるデータは、それぞれ単一の生存時間をもっています。問題は、頻繁にアクセスされるキャッシュデータがエクスパイアした際に発生します。データがエクスパイヤした瞬間から、並行に走る複数のアプリケーションロジックがミスヒットを検知し、いずれかのプロセスがキャッシュデータを格納するまでの間、同一のリクエストが多数、バックエンドに飛んでしまうのです。