メシのタネ

Webプログラミング 備忘録

  • AWS移行でコケ中

    現在このWebサイトが稼働している、このサーバーのMySQLをマスターとし、AWS上のRDSをスレーブとして、データ移行をしようと思ったが、バイナリロギングの取得が上手くいかない。多分の手順VPSのDBでスレーブ用のユーザ作成バイナリロギングを行うスレーブ側RDSにマスターのDUM[...]

    続きを読む
  • AWS ソリューションアーキテクト アソシエイトに合格しました。

    実は、今日までIT無資格でした。ええ歳だし、そろそろなんか資格取っておくかーと考えだしたので、取って嬉しい資格を取ろうと思ってたところ、AWSの資格あったなーと思って、調べてみたら、みんな14日で受かる!とか言ってるので、じゃあというこで、試験日14日後とかにして、試験の予約入れたのが地獄の始まり[...]

    続きを読む
  • DOMをPHPで操作できたらいいよね

    そうだよね。そう思うよね。JavaScriptでやると、画面がガタついたりするもんね。そうならないようにする方法もあるかもしれないけど、僕はできませんので、サーバー側でなんとかできたらええなぁと思って挑戦したけど、できませんでしたよ。PHP標準でHTMLをDOMにできるらしい今、技[...]

    続きを読む
  • 設計書ってなんで書くの?

    設計書をなぜ書くのかから始めてかれこれ3年近くこの禅問答をやっているわけですが、いまだに答えは出ません。ただ、その禅問答をやる中で設計書に対する取り組み方は大きく変わったので、その一部でも書いていきたい。基本設計はとにもかくにも必要だと思う設計書はいらぬ!という話をよく聞くし、自分[...]

    続きを読む
  • 書ききってやる。

    久々に書いてみる。久々に文章を書くということをやってみようと思う。伝える作業を観察したいと思ったからそうしたいと考えた。情緒的な文章は基本的にゴミ箱にぽいしてきましたが、情緒的なのも自分だと思う。「文章をかくという作業は、とりもなおさず自分と自分をとりまく事物との距離を確認すること[...]

    続きを読む

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

サーバー構成例

関連記事

コメントをお待ちしております