メシのタネ

めしのたねになるIT情報配信サイト


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

,

  1. Webサーバー
  2. 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だけって風に使えるので、
ちょっと沢山アクセスが来ても耐えられる感じがします。なので自分が高トラフィックのサイトを運営するならこんな構成でやってみたいなぁと思います。

サーバー構成例


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

若い頃、「仕事中にハマったこと」や「誰かに共有したい技術的な気づき」をアウトプットしたくてブログを始めましたが、勢い任せでよく分からない記事を大量生産し、あえなく飽きて終了。

改めて今、キャリア15年分の経験や知識が、これからITエンジニアを目指す方や、同じような課題で悩んでいる現役エンジニアの「メシのタネ」になるような記事を残したいと思っています。
※過去の記事は見ると精神が崩壊するため、そっとしておいてください。

🛠 経歴という名の珍道中:
文系Fラン → 広告営業 → Web営業 → 通信営業 → Web進行 → 出版 → Web媒体運用 → ソフトウェアハウス → SES → フリーランス

専門教育も受けず、転職歴も多数。履歴書はまるで時系列の事故記録のようですが、試行錯誤を重ね、なんとかエンジニアとして食べています。

このブログでは、そんな「履歴書クラッシャー型エンジニア」が送る、
名古屋一敷居の低い、実務に役立つ技術ブログを目指します。

Laravel
LaravelのMiddlewareって意味あるの?仕組み・使いどころ・やらかしまで整理してみたNew!!
Laravel
ServiceProviderって何してるの?DIの背後で動いてるやつの正体New!!
Laravel
LaravelのサービスコンテナとDI、「書いてるだけで動く」コードの正体New!!
Laravel
Laravelのアーキテクチャ、実は誰もわかってない説New!!
ガジェット
【解説】Bluetoothヘッドホンでマイクが使えない理由と回避策まとめ(Mac対応)New!!
Laravel
Laravel Collection入門: mapとeachの違い、ちゃんと説明できますか?