私は幾つかのレンタルサーバを借りていますが、とりわけ長年お世話になっているのが value domain さんの低価格レンタルサーバ。
(xrea.com)
低価格レンタルサーバは月額換算200円くらいで利用できて非常にリーズナブル!!…なんですが、その分「サーバ負荷」にはシビアだったりします。
value domain さんの場合も例外では無く、サーバに一定以上の負荷をかけていると判断された場合、ホームページ(WEBサイト)へのアクセスに制限がかけられてしまうことも…。
(=つまり、高負荷と判断されて制限がかけられると、ビジターがアクセスできない場合も出てきてしまう)
Contents
wordpressは負荷(プログラム)の塊だ!
そもそもwordpressに負荷は付き物
特にwordpressは本体もプログラムなのでアクセス毎にサーバに負荷がかかりますが、他にも非常に沢山のプログラム(=プラグイン)が動いているため…プレーンなHTMLページと比較するとサーバに与える負荷も非常に大きい。
つまり、「1アクセスごとにサーバにある程度の負荷を与えている」と言えます。
(※もちろん、アクセス単体で高負荷状態になってしまう訳ではありません。「塵も積もれば」の話です)
だからこそ!「明らかに無駄なアクセス=【明らかに無用な負荷】」は、なんとしても避けたいところです。
過負荷状態ではサーバのレスポンスも遅くなりますから、「負荷へのペナルティが厳しい激安サーバ」のみならずとも、無用な負荷を避けるのがユーザビリティ維持向上にもつながります。
wordpressに忍び寄る「無用な負荷を生む」クローラー
例えばページを検索結果にインデックスしてくれるGoogleのクローラーなど、あなたのサイトに訪れるクローラーの多くは間接的にアクセスアップの恩恵をもたらしてくれる「好ましい」「歓迎すべき」ものになります。
こうした「歓迎すべき」クローラーはサーバに負荷を与えないように遠慮しながら、時間を置いて散発的にやってきます。
一方、この世界には「好ましく無い」「招かれざる」クローラーというものも存在します。
「好ましく無い」クローラーの特徴は、何といっても間髪開けず頻繁にアクセスしてくる…この一点に尽きます。
上の図は「Majestic-12」という英国のサーチエンジン(?)のクローラーがアクセスしてきたログですが、ほぼ10秒ごとという近接した頻度でアクセスを繰り返しているのが分かります。
このサイトはまだ記事数が少ないので、連続してやってきても「10秒ごとに30回」程度で済んでいます。
でも、これが記事数1000件超えのサイトなら「10秒ごとに1000回」のアクセスすらあり得る訳です!!
日本国内向けを意図してサイトを運営している場合、国外のサーチエンジンからクローラーがやってきても殆ど好ましい効果が期待できません。
にも拘わらず「10秒ごとに1000回」など【無用なアクセス】を繰り返されたら…いたずらにサーバ負荷だけ発生して「まるで良いところナシ」ということになってしまいます。
…うーーん…正直、これはいらない!!
ただ、本家Majestic-12サーチエンジンの名誉のために弁護させていただくと…実は「Majestic-12」を名乗るニセモノ(ウイルスで拡散するらしいのですが)が存在するとの情報があちこちで確認できました。
恐らく、私のサイトに頻繁にやってきたのも、このニセモノの方だと思われます!
…いらないに加えて…余計、怖いです。
スパムボット、スパムクローラーにはrobots.txtが利かない!!
こうした、アクセスを「ご遠慮願いたい」クローラーからのアクセスを避ける方法としては「robots.txt」の記述が一般的です。
Googleなどのクローラーは、サイトに設置された「robots.txt」を読み取り、
「クローラーのアクセスを許可しない」
という設定になっていればアクセスしない…という仕組みになっているためです。
しかし!!
私も試してみたのですが、今回の「Majestic-12」など殆どの「招かれざる」クローラーは、こうしたrobots.txtの設定内容などお構いナシ!!
いくら「来ないで!」という内容を記述しても、ドンドン土足でやってきます!!
そして、どんどんアクセス負荷が高まってしまう!!
ぎゃぁ~~!!負荷率が右肩上がり…制限マッタナ氏!?
スパムボット、クローラーには.htaccessで対策を!
結論を言うと、「これは困る」というクローラーには.htaccessによるアクセス制限をかけるのが効果的!
今回の「Majestic-12」対策に関しては「がんちゃんのブログ」さんで具体的な.htaccessの記述方法が紹介されていましたので、以下引用させていただきました。
order allow,deny allow from all # reject fake mj12 SetEnvIfNoCase User-Agent "^MJ12bot/v?1\.[01]\.[0-9]{1,2}" block Deny from env=block
これで「Majestic-12」からの頻繁なアクセスは回避できます!!
…でも、他にも幾つか「招かれざる」クローラーは存在しますので、都度.htaccessでの対策が必要。
例えば「example」という招かれざるクローラーが現れた場合、がんちゃんさんの.htaccessに追記する場合は4行目の後に
SetEnvIf User-Agent “example” block
…などの形で追記する必要があります。
「最近、サーバの負荷が気になるなぁ…」
と思ったら、サーバの乗り換えやプラグインのダイエットを検討する前に…まずはアクセスログを確認して、怪しい(=短時間に大量にアクセスを繰り返している)「招かれざるクローラー」が混ざっていないかチェックされることをお勧めします!!