LinuCレベル2 システムアーキテクチャの設計 問29
システムアーキテクチャの設計/典型的なシステムアーキテクチャWeb三層構成のシステムで、同じ商品情報の参照がDBサーバーへ集中し、DBの負荷が高くなっている。商品情報の更新はまれで、少し古い内容が表示されても許容される。APサーバー側で取れる対策として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル2の出題範囲「システムアーキテクチャの設計」に対応。実際の試験問題ではありません)
- AAPサーバーの台数を増やし、各APサーバーからDBへの同時接続数も増やして応答を速くする
- BDBサーバーのプライマリを2台にして、両方で参照と書き込みを受け付けて処理を分担させる
- CAPサーバーのセッション情報をDBへ保存するように変え、APサーバーをステートレスにする
- D参照結果をMemcachedやRedis等のキャッシュに保持し、有効期限内はDBへ問い合わせない
正解:D
解説
同じデータの参照が集中している場合、APサーバーが参照結果をMemcachedやRedisなどのインメモリキャッシュに保持し、キャッシュにあればDBへ問い合わせずに返すことで、DBの負荷を大きく下げられます。キャッシュには有効期限を設けたり、更新時に該当する項目を消したりして、古いデータが長く残らないようにします。更新がまれで多少の古さを許容できるデータほど効果が大きくなります。
選択肢ごとの解説
- A誤り。DBへの同時接続数が増えるとDBの負荷はむしろ高まり、DBがボトルネックである状況は改善しません。
- B誤り。APサーバー側の対策ではなく、複数のプライマリでの書き込みは整合性の管理が難しく、参照の集中への対策としても過大です。
- C誤り。セッション情報をDBへ保存するとDBへのアクセスがさらに増え、参照の集中による負荷は下がりません。
- D正しい。よく参照されるデータをインメモリキャッシュに保持すれば、DBへの問い合わせを減らして負荷を下げられます。