Re: 5000ユーザ同時アクセス可能なシステム構成について

2015年10月13日 at 17:13

初めまして、コンクリートファイブジャパン株式会社 岩本と申します。

推測を交えつつのご回答となりますので、認識にズレがありましたらご指摘ください。

まず、複数サーバー環境でサイトへのログインを維持するため、何らかの手法で各サーバー間でのPHPセッションの共有が必要になるかと思います。

5000ユーザー同時アクセスとありますので、5000アクセス/秒との想定として考えます。

1番のネックとなるのは、DBの負荷です。

システム構成、想定されるユーザー遷移、プログラムの挙動など複数要素があるとは思いますが、1ユーザー当たりのアクセスがあつた際に発生するWEBサーバーからDBサーバーへのアクセスが参照のみと想定した場合、
ご記載にある通り、DBスレイブを複数台用意し、DBへのリードとライトを分離し、リードをスレイブへと分散させる仕組みが必要となるかと思います。
ただし、concrete5自体ではDBへリードとライトを分離するような機能は持ち合わせていないので、別途concrete5の改修の必要があります。
併せて複数台のDBスレイブサーバーへリードをバランシングする仕組みが必要になるかと思います。
DBスレイブへのクエリの参照をconcrete5内にハードコートしても良いかと思いますが、DBへリードのバランシング、各DBスレイブの死活監視も実装する必要があり、この実装がないと複数台の内のDBスレイブの1台がダウンするとサイト全体が停止する可能性があります。
WEBサーバーとDBスレイブサーバーの間にDB用のロードバランサを設けるのがお勧めです。

上記に関しては、あくまでもDBへの参照のみの場合であり、5000アクセス/秒でDBへの更新、追記があるのであれば、手法がないわけではないですが、想定されている構成では非常に難しいかと存じます。

Nginxの利用を想定されているとのことですが、どういった意図での選定でしょうか?

動的なコンテンツのみを表示するのであれば、NginxをWEBサーバーに使った場合、別途PHP-FPMなどPHPをCGIモードで動かす必要があり、ケースバイケースですがApache2.4+mod_phpの組み合わせの方が早い場合があります。

>・アクセス集中する際に参照されるページはテキスト表示のみ(画像や動画はなし)
上記にあります、テキストのみとのことですが、全てテキストのみとの認識でよろしいでしょうか?
少しでも静的なファイルがあるのであれば、動的ファイルと静的ファイルを分離することでパフォーマンスの向上が図れると思います。

記載された情報のみでの推測となる部分も多々ありますので、より詳細なご質問などありましたら弊社宛にご連絡をいただけますと、よりご協力できるところもあるかと存じます。

http://concrete5.co.jp/ja/