現在サーバーへの負荷を非常にアナログちっくな方法で計測中です。
利用したいPHPプログラムを段階的に作動させて、負荷のレベルをログから目測で計測( ̄▽ ̄;)
負荷計測プログラムを導入しろっちゅう話ですよね(^_^;
でも、503エラーが出るギリギリのレベルになっちゃっているので余計な不可はかけたくないw
503 累計 | 503 差 | 500 累計 | CPU 使用時間 | Web 転送量 | ||
参考 11/11 | 1700 (60秒) | 全画像にExpires headersを付加 のテスト。1分だけの超負荷テスト。 | ||||
11/12 ~12/10 | 平均 100 | 平均 8 | 平均 2:30:00 | 細々とテストするが この間は記録を取っていない | ||
12/11 | サイト改造 | 一部の外部ブログパーツの取り外し。 NINJAアクセス解析を全ページ同じコードに。レイアウト少し変更 | ||||
12/11 | 2200 | 2:13:12 | 2.2G | 計測スタート :画像のExpiresなし | ||
12/12 | 2500 | 300 | 1:57:50 | 2.4G | 0時~19時、両方 | |
12/13 | 4200 | 1700 | 83 | 2:45:57 | 2.5G | 0時~24時、BlogPartsのみ |
12/13 | サイト改造 | ページ内のphp includeの数を半分以下にする。 | ||||
12/14 | 4634 | 434 | 83 | 2:21:45 | 2.2G | 0時~21時、両方 |
12/15 | 4733 | 99 | 83 | 2:12:48 | 2.2G | 0時~24時、特定1ページ |
12/16 | 4817 | 84 | 95 | 2:38:58 | 2.2G | 0時~19時、BlogPartsのみ |
12/17 0時 | スパムの酷い特定記事への コメント・トラックバック禁止措置 | |||||
12/17 | 4817 | 0 | 97 | 1:02:04 | 2.0G | 画像のExpires headersなし |
12/18 | このページの記載日robots.txt設置。 | |||||
12/18 | 4817 | 0 | 106 | 1:02:23 | 1.9G |
BlogPartsのみ・・・CSSやテンプレで使用する共通画像のみにExpires headersを適用
特定1ページ ・・・アクセス数が多く、画像の多いページ(1日約1300PV、画像24個のページ)
の記事内画像のみにExpiresheadersを適用
画像にExpiresheadersを適用したいワケですが、どうも20PV/分くらい、phpの処理回数で云うと80回/分くらいを超えると503エラーになっているっぽい。
1ページに画像が40個あるとすると、2人同時にアクセスしただけでもアウトだ。
テスト内容
ちなみに計測に利用したExpires headers phpは
<?php
$filename =str_replace('http://'.$_SERVER['SERVER_NAME'].'/','/',$_GET['file']);
$filename = dirname($_SERVER['SCRIPT_FILENAME']).$filename;
header("Content-type: image/png");
header('Expires: Sun, 29 Dec 2030 23:59:59 GMT');
readfile($filename);
?>
▲こんなの。
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} "\.png"
RewriteRule .+ /xxxx.php?file=%{REQUEST_URI} [L]
▲.htaccessはこんなのを画像フォルダに。
ウチはpng画像が多いので、計測はpngだけに集中。
一時的なテストに利用するものなのでセキュリティ無視して出来るだけ軽快に作動させるように作ってみましたが、こんなのでも80回/分くらいになるとダメっぽい。
画像にExpires headers計画、これにて終了。ウチじゃ無理。
以下、ここまでのテスト・サイト改善で手に入れたもの色々
HTMLをGzip化・Expires header付加して得た「思わぬ収穫」
▲運営しているサーバーでの、ホスト別転送量のTOP10
9位に辛うじて一般プロバイダが入っているけれど、のこりは全てクローラー。
150.70.84.xxや216.104.15.xxなどは全てトレンドマイクロ(ウィルスバスター)のクローラーか何かっぽい。トレンドマイクロが「このサイトは安全なサイトか?」と確認するために絨毯爆撃を行っているようです。現時点で全体の7%、サイト改造前で転送量全体の14%以上を占めている。
HTMLをGzip化する前(転送量5GB/Day)で、これらクローラーが占める転送量は
全体の15%(1日750MB)
HTMLをGzip化した後(転送量2GB/Day)で、これらクローラーが占める転送量は
全体の7%(1日140MB)
一番負荷を与えてくるクローラーの巡回頻度が下がってくれたのが嬉しい限り。
Expiresheaderがあると、マイクロトレンドのBotとGoogleのBotはかなりお行儀良くクロールしてくれます。Yahooは計測中にYSTアップデートがあった分、いつもより少し多め。
トレンドマイクロからのアクセスは、ウイルスバスターを利用している人がアクセスする度に飛んでくる。本当はトレンドマイクロボット、アクセス拒否したい。でもしない方が良いよなぁ。。。でいつも悩んでいたけど、これでかなりマシになった。でもモバイルページ(cgiで作動)に絨毯爆撃されると堪らない。。。
1日分生ログを確認(「150\.70\.84.*cgi」みたいなかんじで正規表現使って抽出)しただけで、マイクロトレンドのボットは50~60回cgiページにアクセスしてる。まだ大丈夫なレベルだけど、そのうちPCで携帯URLにアクセスするのは制限しないとダメかも('Α`)
サーバー負担を軽くした日でも発生する500エラーは何だろう?
サーバー負担を軽くした日でも発生する500エラーは何だろう?
とサーバーの生ログをダウンロード・解析してみたら、、、
検索エンジンのクローラーが携帯用cgiサイトの存在しないURLにアクセスしてた('Α`)
自サイト内で調査するも間違ったURLは見つからない。
外部検索エンジンで探しても該当URLは見つからない。
(悪意はなんだろうけど)エラーリンク貼っているの誰だよ('Α`)
今更ながらrobots.txt設置
負荷が少ない日の500エラーは全てクローラーによるものだったので、本当に今更ながらrobots.txt設置。書式は以下。
Sitemap: https://freesoft.tvbok.com/sitemap.xml
User-Agent:baiduspider
Crawl-Delay: 60User-Agent:Slurp
Crawl-Delay:0.5User-agent:msnbot
Crawl-delay: 30User-agent:*
Disallow: /xxxx.html
Disallow: /yyy/zzzz.html
Allow: /
Disallow:にはアクセスすると500エラーを吐くURLのみ指定。
勉強しないまま書いたので正しく作動するかどうか不明。
.htaccessで404エラー、500エラーとかが正しく作動しない現状が悩ましい('Α`)