【軽量化】 503エラーゼロ大作戦 【統合】

このページまでのあらすじ

さくらのレンタルサーバリソース情報を見ていたら、何と503エラー頻発していることに気がつきました。
しかも、1度や2度じゃなく100回以上出ていました。

php.cgiエラー修正し、不正なアクセスをリダイレクトで吹き飛ばすようになってからと言うもの、その傾向はさらに強まり、ついには500エラーが200回を超えました。



これでは、せっかく閑古鳥しかいないうちのような潰れかけサイトに来てくれるはずだったお客さまを、みすみす逃してしまうことにもなりかねない。

これはイカンザキと言うことで、対策を取るべく試行錯誤の日々が始まりました。

作戦その1 画像ファイルへのクローラーのアクセスを制限

ファイルサイズが大きい画像ファイルへのアクセスをrobot.txtとhtaccessファイルで制限しました。
大抵はrobot.txtで制限できるのですが、それでも漏れたやつはhtaccessで制限する形にしました。

# robot.txt
User-agent: *
Disallow: /画像フォルダ名/

# htaccessファイルの画像の直アクセス禁止
SetEnvIf Referer "^(.+\.)?●●●\.▲▲▲" ok_url

<Files ~ "\.(gif|jpe?g|png|svg)$">
order deny,allow
deny from all
allow from env=ok_url
</Files>

画像の入っているフォルダ名が image と言うフォルダ名だとしてたら、Disallow: /画像フォルダ名/ は、Disallow: /image/ になります。

aaa.com の場合、●●●\.▲▲▲は aaa\.com になります。


作戦その2 ファイルの統合

テンプレートのファイルの中で、統合できるものはできるだけ統合しました。
(フッター用のテンプレートとサイドバー用のテンプレートなど)

その他は、CSSできるだけ統合しました。
(加工しにくくなるので、できればCSSは統合しとうなかった。(T^T) )


作戦その3 更新履歴を簡素化

サイドバーに出していた更新履歴のファイルがかなり大きくなってしまっていたので、最新の更新履歴だけ残して、その他の更新履歴は今までの更新履歴として別ページに移動することにしました。
(実は、<iframe> で数年ぶんの更新履歴を全部読み込んでいたのはここだけの秘密。。。
( ̄m ̄))


作戦その4 画像の質を落とした

テンプレートに使っているPNGファイルは、PNG-24ではなくPNG-8で保存しなおした。
pngファイルは背景を透明化してPNG-8で保存すると汚くなるので、透明化しなくても良いものに変えた。


PNG-8
透明の背景の縁がガタガタ
ファイルサイズ : 16kb

PNG24
透明の背景の縁が滑らか
ファイルサイズ : 27kb


PNG-8
サイズは少ないけど
PNG24とファイルと遜色ない
ファイルサイズ : 14kb

PNG-24
PNG-8よりもファイルサイズが大きい
見た目はさほど変わらない
ファイルサイズ : 39kb

背景が透明


PNG-8
縁がガタガタ
ファイルサイズ : 2kb


PNG-24
縁が滑らか
ファイルサイズ : 4kb


背景白塗り


PNG-8
縁が滑らか
ファイルサイズ : 2kb


PNG-24
縁が滑らか
ファイルサイズ : 3kb


作戦その5 外部スクリプトをできるだけ排除した

サイドバーのTwitterウィジェットが重いようだったので、サイドバーのTwitterウィジェットを削除しました。

また、ダブルでかけていたアクセス解析をGoogleAnalysisだけにしました。
その他、サイドバーに広告を入れていたサイトは、広告タグを取り去りました。


作戦その6 アイコンのファイルサイズを縮小した

パソコンでWEBサイトやブログを表示すると、ブラウザにアイコンみたいなのが表示されます。
これは、ファビコンと言われるものを表示しています。

ファイル名は、favicon.ico です。
これをWEBサイトやブログのドメインのトップに置きます。

こうすることで、ブラウザがそのWEBサイトやブログを表示するときに、favicon.ico を自動で読み込んでくれるのです。

また、iPhoneでブックマークする時などは、144px X 144pxapple-touch-icon.png と言う画像ファイルを用意しておけば、それを読み込んでブックマークのアイコンとして表示してくれます。

いずれの場合も画像ファイルですので、上に書いたようにPNG-8画像を保存すれば、ファイルサイズをかなり減らせます。


作戦その7 CSSファイルの修正

かなりグッチャグチャだったCSSファイルを修正しました。
何度も何度も悪い部分を修正し、余計な部分を削り、できるだけファイルサイズを減らしました。


作戦その8 SVCファイルをPNGファイルに入れ替え

アイコンなどのテンプレート用の画像には、SVCファイルを使っていました。
これは、点と線と面と色の情報を持ったファイルで、PNGファイルやJPEGファイルとは違った類のものです。

点と線と面と色の情報ですので、拡大縮小しても画像がボケボケにならないのが良い点でした。

でも、一部でバグることがあったり(HTMLファイルに干渉して表示がおかしくなる)、ファイルサイズが大きくなってしまったりしたので、この際に全部PNG-8で保存しなおしました。(;´_`;)
(SVGファイルを作るために心血を注いだ日々が無駄になってしまった件)


(HTMLファイルに干渉して表示がおかしくなってしまった例)


作戦の結果

作戦1〜4辺りまでをやって、503エラー減りました。
503エラーが出たユーザー数だいぶ減りました。

その他、転送量も減りました。
でも、目に見えて猛烈に減りませんでした。


その後、作戦5〜8をやったところで、ついに503エラーゼロを達成しました。

ただし、CPUと転送量は増えてしまいましたので、単純に負荷が軽減しただけ・・・と言うわけでもなさそうです。(;´∀`)

共用サーバーですので、ただ単に同居している方のサーバー稼働が減少して軽くなっただけしただけなのかもしれませんし、今後も気を抜かずに要観察していくつもりです。
(飽きなければですが。( ̄m ̄))


各ページの表示スピードはかなり早くなりました。
なので、503エラーはあまり減らなくとも、検索やリンクなどからの離脱率は減少する・・・かも?です。
(減らなかったら頑張り損ですわー(T^T) )


GTmetrix | Website Speed and Performance Optimizationで計測



うんまあ、ページによってはしゃーないですね。(;´∀`)
画像いっぱい使ってたら、重くなるのは当然ですし。。。
(Scriptで読み込み遅延とかさせると、セキュリティだのScriptOFFでの動作不良だの、それはそれで色々と問題がががが・・・)


その後の状態その1 - 503エラーが乱高下 -

さくらレンタルサーバーへ移転後、2週間以上経ちましたが、503エラーゼロ大作戦実行後も、実はポツポツと503エラーは出てまして。

ポツポツと言うか、503爆弾をドカンドカン降らされている感じです。
Google Analyticsのアクセス解析に残るアクセス数の増減とは違う要因で503エラーが増減しているようで、どうも怪し気な雰囲気です。
(ひょっとして、サーバーの負荷の影響かな?)



そのようなわけで、何となく再度のサーバー移転を検討し始めてる今日この頃だったりします。
(PHPでテンプレート化したサイトを運営しているので、次はPHPに強いサーバーがいいな。(;´_`;))


その後の状態その2 - 503エラーが本当にゼロになった -

テンプレートの読み込みを PHP から SSI変更したところ、圧縮が効くようになりました。


【速い】 SSIでincludeに成功した!【安定】

【難問解決】 SSIのインクルードで圧縮できるか実験してみた


また、圧縮後のページの表示スピードかなり早くなりました。
Google Pagespeed insights での成績も向上しました。

それと共に、503エラーが出なくなりました。
まさかとは思ったんですが、数日経っても503エラーは出ずに非常に安定しています。


その後さらに数日。
やはり503エラーはゼロのままです。
非常に安定しています。


この安さで、この速度で、この安定性なら言うことありません。ヘ(^д^ )
今後も安心してさくらのレンタルサーバを使っていけます。

ちなみに、私が気になっているエックスサーバーでもSSIが使えるようですので、もし今使ってるさくらのレンタルサーバ スタンダードがキツキツになってきたら、エックスサーバーに移転する予定です。
(サーバーによって、HTMLファイルをSHTMLファイルとして読み込むApacheのコードなどが異なりますので、お試し期間中に実験が必要になるとは思いますが)

今はかなりスカスカ状態ですので、これがキツキツになるためには、相当なアクセスアップが必要ではありますが。。。(;´_`;)


次ページ

php.cgiでPHPを動かすことのセキュリティの問題を調べてみた

前ページ

【中国】 不正アクセス目的のクローラーを吹き飛ばす方法 【ロシア】

広告