なんか、最近私のところに重いサイト(サービス)がどうにかならないか?と相談がちらほらとくるので、
そのためのチェックポイントです。

中級向けです。
なぜ、中級向けかと言えば、雑誌や本に載っているような大規模サイトのテクニックはほとんどのケースで必要ありません。
しかし、性能をほどほどでいいので改善するための手法の情報がありません。

たいていのWEB+DBのサイトは10-20PV/s ( PV = PageView ) を扱えれば問題ないでしょう。
これでも、10PVでも1日一時間だけだとしても 36,000 PV/day ですし、3.6万 × 30日 = 108万PV/month となれば、まずまずのサイトです。
しかも、実際にはここに画像やらCSSやらとあるわけですから、アクセスログ的に言えば、500-1000万 Request / month ぐらいということです。( Page View とは違います。)

このレベル以下で問題となっているサイトの場合には、たいていの場合何もやっていないか、やり方が間違っているのが原因なのです。
しかし、何から手をつけていいか・・・本とかを見ると難しいし・・・・
実は100万PV/monthというレベルは、システム的な視点では小・中規模といえるので、基本をしっかりやっているだけでどうにかなります。
(サーバ台数が WEB + DBの2台程度でその位の性能は出せるという意味です。ただし、障害などのための冗長性は考慮していませんが・・・)

ということで、やることは地味に1つ1つ問題を解決していく方法しかないのですが、その問題を知るためのTIPSです。

1)リソース統計をとり、視覚で問題を認識する。

まずは遅いという事実を漠然とでも視覚で把握することです。
私は、設定とカスタマイズが楽なのでmuninを使いますが、好きなものを使ってかまいません。
もしくは、サーバを借りているような場合にはそこで用意されている場合もありますのでそれでもかまいません。

そこで、1つのテクニックです。
WEBサーバ(Apache)のMaxSpareServersをできるだけ小さい値にする。(私はまずは5位にしています。)
どうして小さい値にするかと言えば、MaxSpareServersは何も動いていない時にも存在するプロセス数です。
これが上下してくれないと、ここの目的である視覚で把握できません。
(プロセス数の上限はたいていのツールはデフォルトで見ることができます。)

このようにサイトを早くするためにはいろいろなところでキャッシュを使うテクニックがありますが、
まずはこれはできる使わないようにしましょう。
非常に問題が見えにくくなります。キャッシュによる対応は問題が見えてからの対策です。

また、よく、サーバ設定でできるだけ大きい値を設定する人がいますが、それもやめましょう。
個別最適化は、全体効率を悪化させることが多々あります。
実は早くするための方法は、ある箇所を遅くする(制限をきつくする)ことだったりする場合もあるのです。

2)WEBのアクセスがどれだけきているのか把握(カウント)する。

これ、当たり前ですがなぜかやっていないところが多いです。(なぜでしょう??)
ログを異常に分散させているところもあります。
日ごとにアクセス数を見たいレベルだと思うので、日ごとにまとめるのが最初です。
wc -l access_log
で簡単に見えるようにしましょう。
または、Google Analyticsのようなものを入れてしまえるのであれば、それでもよしとしましょう。

サイトを作ったところに「遅い」と言うのであれば、しっかりとした証拠がある方が楽です。

1,2で情報をとったところで、

アプリケーションが悪いのか?
ネットワークが悪いのか?

のどちらかにわけることができると思います。
この切り分けは、その後に依頼する場所が変わってしまうのが通常なので、ここまでは把握しましょう。
ネットワークの帯域がいっぱいであれば、ネットワーク。それ以外はアプリケーションと乱暴ですがしてしまってかまいません。
(プログラムをつかっていなければ、そうともいえませんが、プログラムが動いていなければまずそんな性能になることはないと思うので・・)

DBが遅いのもアプリケーションのせいだといえると思います。
ただ、ネットワークが悪いといっても、本当にネットワークが原因なんてことはないのが通常です。
たいていは、コンテンツが大きすぎるのが原因です。
また、ネットワークの帯域=コストなので問題だからと言って帯域を増やすことは容易ではありません。
結局はコンテンツを小さくするなどして対応するしかないのが通常でしょう。

さて、次回はアプリの問題を調べていく方法です。

お仕事のご依頼・相談を承ります
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら

Leave a Reply

お仕事のご依頼・相談
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら
ソフトウェア&ライブラリ




ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
執筆書籍
本、雑誌等

WEB記事:CodeZine
執筆記事はこちら
カレンダー
2010年10月
« 9月   11月 »
 123
45678910
11121314151617
18192021222324
25262728293031

カスタム検索
RSS
Add to Google < !–adsense–>
アーカイブ
カテゴリ
にほんブログ村 IT技術ブログへ