Webサーバー負荷対策ってどうすればいいの?

server_brade
先月WordBench名古屋の勉強会行ってきました。
AmazonWebServiceでWordPress運用してる方のお話だったんですけど、
普段作成するサイトなんて、1日PVが500行けば超良いほうだし、
あんまり負荷対策とか気にしたこと無かったんですが、
いつバズるか分からんので、負荷対策ってどういうことするのか
ちょっと素人が調べてみました。

負荷分散方法

負荷分散の方法は様々ありますが、ロードバランサというのがぐぐったら沢山出てきて、
それと同時に引き合いに出されるDNSラウンドロビンという対策方法を
今回調べたので、まず簡単に紹介します。

ロードバランサ(負荷分散装置)

複数のWebサーバーを用意しておいて、処理能力が不足したら
Webサーバーの台数を増やして、処理性能を維持できるようにする手法。
常に配下のWebサーバを監視して、移動のあるWebサーバーには処理を振らずに、
別のPCに処理を割り振ります。なのでサービスをなるべく停止させずに運用できる仕組みです。
でも、AWSを使わずに自前でやる場合導入にはネットワークに纏わる25万円以上の専門知識と装置が必要になります。

今さら聞けない「ロードバランサの基本」
ここで図とともに解説がされてます。

DNSラウンドロビン

1つのドメイン名に複数のIPアドレスを割当てる手法。
こうすることで、高い負荷がかかっても、別のWebサーバーにその処理を割り振る事ができます。
さらに設定方法はゾーンファイルの設定だけなので、手軽に行える手法です。
ただ、障害が合った時に障害があったと分からないので、あんまり使われないみたいです。

簡単な手法を紹介している記事がありますので、やってみたい方は
dnsmasqを使って簡単にDNS round robin(ラウンドロビン)
を参考にしてみてください。

負荷って何なの

・同時接続ユーザ数
・時間あたりのユーザーシナリオ実行本数
・時間あたりのページ処理数
・時間あたりのヒット数
・サーバー平均応答時間
・サーバー側のCPU使用率

が指標にあたるようです。
7. 負荷テストの評価基準には何を使えばよいのか?
ここの一番下に1時間あたり2000人を目標とおいた場合の計算式と10000人を目標とおいた場合の計算式が載ってます。

気にすること

ちょっと自分ではこれを理解しきれないので、
サーバーに詳しい人にサーバーへの負荷が高い時に気にすることを聞きました。
その人はサーバー負荷が高い場合には同時接続数を気にするといってました。
じゃあ、同時接続が多数あったら何を気にするのかと聞いたら、

・リクエストに対しレスポンスが送れる数の設定値(Webサーバー)
・メモリの容量(Swapの発生の有無)
・リクエストの内容(処理の重さ)

を気にするといっていました。

自分が高トラフィックのサイトを運営するなら?

これをふまえて今度は、高トラフィックのあるサイトを運営するならどうするかを考えました。
自分だったら、プログラム動かすサーバーとDB動かすサーバで分けるかなーと思いました。こうすれば、Aサーバーのリソースはプログラムだけ、BサーバーのリソースはDBだけって風に使えるので、
ちょっと沢山アクセスが来ても耐えられる感じがします。なので自分が高トラフィックのサイトを運営するならこんな構成でやってみたいなぁと思います。

サーバー構成例

スポンサーリンク

この記事が気に入ったら
フォローしよう

最新情報をお届けします

おすすめの記事