DB負荷分散の一歩目はセッション管理から

Tech info

セッション管理にMySQLなどのRDBを使用している場合、KVS(NoSQL)に変更することでデータベース負荷を大きく下げる事ができます。

あらゆるWEBアプリケーションと切っても切れない関係にあるのがセッション。今回このセッション管理を変更することでDBの負荷を劇的に下げてみたので、その経緯を個人ブログに綴ってみました。

ちなみにセッションの管理方法はいくつかありますが、主な方法のPros/Consは以下の通り。

Cookie

Railsのデフォルトのように、クライアントのクッキーに全てのデータを保存してしまう方法。

  • [P] サーバにデータをため込まないので、サーバサイドの負荷を気にしないで良い
  • [P] アプリケーションサーバを分散させても一貫性を持たせられる
  • [C] ユーザ側にデータがあるため、改ざんリスクが高まる(Railsは暗号化によって対策してますが)
  • [C] Cookieの仕様上、4KBの容量制限がある
  • [C] Cookieを乗っ取られた場合等でもサーバサイドからセッションを破棄する手段がない

ファイル

LaravelやCakePHPのデフォルトで、CookieにセッションIDだけ持たせて、サーバサイドに実データをファイルとして置く方法。

  • [P] サーバサイドにデータがあるので改ざんを回避できる
  • [P] データ容量制限がない
  • [P] サーバサイドでセッションの破棄ができる
  • [C] アプリケーションサーバを分散させた場合、一貫性が確保できない
  • [C] 1セッションにつき1ファイル生成されるので、大量にセッションファイルが出来てファイルシステムに負担が掛かる

RDB

CookieにセッションIDだけ持たせて、MySQLなど、サーバサイドのRDBに実データを置く方法。

  • [P] サーバサイドにデータがあるので改ざんを回避できる
  • [P] データ容量制限がない
  • [P] サーバサイドでセッションの破棄ができる
  • [P] アプリケーションサーバを分散させても一貫性を持たせられる
  • [C] RDBは大量の同時I/Oに弱いので、アクセスが増えるとデータベースが一気にパンクする。しかもスケールしづらい。

KVS(NoSQL)

CookieにセッションIDだけ持たせて、Memcached、RedisなどサーバサイドのKVSに実データを置く方法。

  • [P] サーバサイドにデータがあるので改ざんを回避できる
  • [P] データ容量制限がない
  • [P] サーバサイドでセッションの破棄ができる
  • [P] アプリケーションサーバを分散させても一貫性を持たせられる
  • [P] 大量の同時I/Oに強く、アクセスが増大しても大丈夫!
  • [C] セッション専用にひとつデータベースが追加されるのでコストが増

セッションをRDBで管理しているケースは多いかと思いますが、トラフィックの多いサイトの場合セッションの管理は非常にマシンパワーを食います。お手軽に大きな効果が期待出来るので、是非参考にしてみてください。

記事はこちらから。

Redisでセッション管理(ElastiCache in VPC)

Satoshi Onozuka

Satoshi Onozuka

Born in 1980. Graduated from the Department of English Literature, Faculty of Education, Waseda University. Started as an ERP implementation consultant, involved in implementing SCM systems for major manufacturing companies. Later, founded INFO ATHLETES, Inc. Primarily engaged in system development, consulting, sales, and marketing, with a focus on EC systems. Backed up a wide range of companies, from startups to those with annual revenues of around 10 billion yen, as a web and IT specialist. Recently, exploring unconventional future management utilizing IT in non-IT companies. Hobbies include singing and enjoying alcohol.