現在レンタルしている「さくらのレンタルサーバ:スタンダードプラン」の、サーバー負荷軽減のため、あれこれと検証・考察を行っている真っ最中。
2009年11月中旬~12月中旬に行った様々なサイト改造が、サイトパフォーマンスにどのような結果をもたらしたか、Googleウェブマスターツールの「クロール統計情報」や「サイトパフォーマンス」などを利用して、サイトの分析を行いました。
計測対象
- 3DCGブログ(boktv.x0.com)
2007年から同サーバで運用。当時は独自ドメインとか考えていなかったので、さくらのサブドメインで運営中。MovableTypeもこのドメインに置いてある。
月間1万~2万PVほど。 - 別館ブログ(freesoft.tvbok.com)
2008年8月からさくらで運用。現在のメイン。PCネタ。時々鬼の様にアクセスが集まる。
月間60~80万PV - バックステージ(web.tvbok.com)
コツコツと自力で貯めたブログ・サイト運営のノウハウを覚書き。
日記や雑記も含む。
月間1万~2万PV。 - 健康ブログ(health.tvbok.com)
持病の椎間板ヘルニアに関するメモ。
月間のPV500~1000。
アクセス数も少なく、NINJA以外で解析をしていない。今回対象外
全部同じサーバー、同じMovableTypeで運営中。
時々1日3万~4万PV集まり、「サイトが非常に重くなったり」「503連発する」のをなんとか防ごうという目的でスタート。
でも気が付くと目的が「YSlowでの評価アップ」にすり替わり、迷走しています(^_^;
まずは(主に)ここ5ヶ月の、ウチのサイトの「負荷増減」に関係ありそうな出来事をピックアップ。
昨年8月 | Livedoorブログからさくらのレンタルサーバーへ引越し。元々一つだったブログをカテゴリ毎に3つに分ける。そんな過去があり、「バックステージ」の過去記事の画像は(別館側と同じドメイン)に置いてある |
7月末~8月中旬 | 3DCGブログのテンプレート改造を行う。再構築を繰り返す。MTへの負荷は大きかったはず。 時間が掛かりすぎて途中で辞める。 夏休みと云う事もあり、アクセス•レコメンド数1割アップ |
8月20日 | 思い出せないけど、何かやっているかも。 |
9月 | 8月まで、10月以降と比較してアクセスは1割少ない。 |
9月14日 | はてブ・Yahoo!のブックマーク数を取得、表示するようにした(12/13まで) 負荷が高くなって来たのでPHPを利用したレコメンド表示を中止。 |
10月中旬~末 | 別館の数記事が続けてヒット。約10日ほど通常の1.5倍のアクセス |
10月22日~ | Windows7発売に伴い、関連記事へのアクセスが増大。これ以降アクセス数2割アップ |
11月11日 | css、jsファイルをgzip圧縮を行う。それに伴う.htaccessの変更。 |
11月11日 | BlastPNG、carmineなどを利用して画像の最適化を行い、転送量削減を狙う。 全サイトで実行 |
11月14日 | (php化した)htmlにExpires headersを付加。ob_start ("ob_gzhandler");の一文も入れて圧縮転送を開始。 |
11月23日 | css sprite、img spriteなどを行い、画像の転送量削減を狙う。 |
12月4日 | 確かこの変でYahoo!の検索エンジンのアップデート。この前後はYahooからのクローラーが頻繁に訪れる |
12月8日 | この日以降、サーバーの負荷を見ながら、画像ファイルにもExpires headersを付加したり外したり。 503エラーが頻発するので限定したディレクトリのみで実験中。 |
12月13日 | phpインクルード、object,iframeなどを多用していたサイト構造からの脱却を行う。 |
上表は、以下で表示している画像を見る参考に。
共用サーバーを使っているので、自分のサイト内の出来事だけで左右されるワケではないのですが・・・w
サイトパフォーマンスツールでの考察
サイトパフォーマンスツールを使うと、サイトの「平均ダウンロード時間」を表示してくれる。
これはHTMLだけでなく、各種広告・ブログパーツなどのiframe,javascriptなど全てを読み込み、表示するまでの時間。
ゴテゴテに飾ったページは当然表示完了までの時間が長くなる。
別館ブログ(freesoft.tvbok.com)
11月11日のcss、js圧縮は殆ど効果なし。
11月14日のExpires headersを付加(3日間のExpires)が効いて、ここから1週間かけて徐々にサイト表示時間が短くなった。
9月14日以降:はてなやYahooのブックマーク数を表示(画像データ取得)で1~2秒表示が遅くなる模様。
8月20日頃から表示速度が悪化しているのはなんでだっけ・・・思い出せない(^_^;
ポイント:HTMLにExpires headersを付加すると効果が大きい
バックステージ(web.tvbok.com)
10月中旬の「別館ブログ大量はてブ登録」~「Windows7フィーバー」あたりで、サイト表示速度が大幅に悪化。同じサーバーなので連られて悪化したとも考えられるし、過去記事の画像が別館側にあるのが影響しているのかもしれない。
ポイント:HTML自体は別館ブログと同じパフォーマンスを示していると思われる。
表示時間が短いのは、広告・ブログパーツが少ないため。
他サイトのサービスを増やす(DNS参照数を増やす)とあっという間に表示時間は遅くなる。
3DCGブログ(boktv.x0.com)
MovableTypeを置いているドメインと同じ。
PHP化は行っていない普通のHTML。外部JavaScriptも殆どない。
なのでパフォーマンスは良いはず。。。
8月のパフォーマンスが悪いのは、多分サイトテンプレート改造でMTを酷使していたから?
11月20日あたりから、激重('Α`) 別館側でphpを使ったHTMLのgzip圧縮や.htaccessを使ったページ振り分けの影響が出ているのか・・・?
にしても、一番高速に表示されるはずのこのサイトが11月中旬以降、表示に平均10秒以上かかっているとは、、、謎。
自分で見る分にはこんなに重くないんだけどなぁ。。。
TOPページのRSSリーダーが悪戯しているんだろうか?
全体(というか多分MT)(boktv.x0.com)
ルートにおいてあるウェブマスターツールからの解析情報。
恐らくGoogleがウチのMovableTypeにやってきてパフォーマンスを計測している(^_^;
11月前半が異様に負荷が高いのが全く謎。
11月10日~20日頃が異様に軽くなっているのが少し謎。
11月20日頃から重くなっているのは、恐らく別館でphpを酷使しているから。
ここの数値が5秒以上になっていると、503エラーが頻発するようです。
ポイント:
11月10日~20日の間というと、
「css、jsファイルをgzip化」 以降
「PHP化したHTMLでExpires headersとgzip処理する」 以前
このの間かぁ。。。
過度のパフォーマンス最適化は無理っぽいな。。。
クロール統計情報からの考察
こちらはパフォーマンスツールと違い、純粋にHTMLだけのパフォーマンスが計測される。
広告やブログパーツ類などのjavascript、他にはスタイルシート、iframe、objectなど、外部ファイルは一切参照されない。
別館ブログ(freesoft.tvbok.com)
11月14日から一気にGoogle Botのダウンロード量(サイト的には転送量)が減少。
11月末~12月初旬にダウンロード時間が掛かっているのは、多分Yahooのクローラーが頻繁にアクセスする時期で、サーバーに負荷が掛かっていたから。
HTMLのgzip化しても、ダウンロードにかかる時間は少ししか変わっていない。
画像にExpires headersを付けた辺りでは、特に効果は表れていない。サーバーに余分な負荷を与えているだけか・・・('Α`)
バックステージ(web.tvbok.com)
こちらは11月14日にHTMLに2時間ほどのExpires headers付加と、Gzip圧縮を付加。
転送量の削減はそれなりに効いている。
パフォーマンスツールと違い、「ダウンロードにかかる時間」は別館と同等(こちらが少し早いのは、1ページあたりの情報量が1/3程度なため)
ルートディレクトリ統計情報
3DCGブログは個別にサブドメインを取得していないので、MTを置いているメインドメインと一緒に計測。
11月中旬にダウンロード量が一時的に増えたのは、恐らく画像を全部置き換えたから。
12月初旬にダウンロード時間が増えたのは、恐らくYSTアップデートによるYahooクローラー絨毯爆撃の影響でサーバーパフォーマンスが低下していたから。
独自ドメインを取っている別館・バックステージと違う挙動を見せているのも面白いね~。
「サイトパフォーマンスツール」で最近悪化しているのは、何が原因なんだろ('Α`)
・・・・・あ、3DCGブログだけ、検索にMovableType使っている。
タグクラウドもMovableTypeのCGIだ。。。
この辺が悲鳴を上げているんだな('Α`)
。。。。たぶんそうだ。。。。
あとがき
サイトパフォーマンスを上げるのは、バランス考えるのが難しいですね。
負荷を「分散させる」・「集中させるの」のさじ加減って経験則に頼らなきゃダメなのかな?
もう少しだけ観察して、サーバーに一番負担の少ない方法を選択するつもり。