2011年2月14日

クローラのせいで重くなった MT4i の対策

Movable Type 全体がもの凄く重くなりました。ブログ記事の保存や、コメント投稿時に、500 Internal Server Error が多発する上、再構築が通常の5倍近く時間がかかってしまいます。

MT4i とクローラとが原因と判明した経緯
さくらのサーバーサポートに調べてもらうと、index.cgi というプログラムが、サーバーのリソースを食い潰しているようです。cgi なんて心当たりない上、在り来りなファイル名。呆然としつつも、ふと MT4i の中身を見てみると、ありました、index.cgi。おそらくコレ。

さくらリソース

MT4i はアクセスがあった時点で初めてそのページを構築するので、アクセスがあるたびに index.cgi が動いてしまったようです。

生ログを見てみると、ありますあります。DoCoMo や ezWeb に紛れて、Googlebot や Yahoo Surf 等のクローラアクセス。加えて、全く聞いたことのない Baiduspider、NaverBot、Dotbot 等が大量にアクセスしてくれちゃってます。

この人達、スパムのような振る舞いをするため、ネット上では評判のよろしくない中国、韓国系のクローラのようです。ヘタをすると、サーバーに追い出しを食らいかねないほど、凶悪なシーンもあるとのこと。対策するにこしたことはありません。

クローラのアクセス制限 robots.txt
まず、robots.txt で疑わしきクローラ全てにアクセス制限掛けます。ぶっちゃけ、Google、Yahoo、bing にアクセスしてもらえればいいので、他は要りません。

User-Agent: Baiduspider
Disallow: /
User-Agent: BaiduImagespider
Disallow: /
User-Agent: BaiduMobaider
Disallow: /
User-Agent: DotBot
Disallow: /
User-Agent: Yeti
Disallow: /
User-Agent: naver
Disallow: /
User-Agent: Twiceler
Disallow: /
User-Agent: Tagoo
Disallow: /
User-Agent: Sogou web spider
Disallow: /
User-Agent: ZanranCrawler
Disallow: /
User-agent: ia_archiver
Disallow: /
User-agent: yodaobot
Disallow: /
User-agent: NaverBot
Disallow: /

クローラのアクセス制限 .htaccess
どうやら上記のクローラの中には、robots.txt を無視する輩がいるようです。まさにスパムですね。なので、.htaccess でも制限をかけて、丁重に帰ってもらうことにします。

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} Baiduspider|BaiduImagespider|yodaobot|NaverBot|Dotbot|Yeti
RewriteRule !^robots\.txt$ - [F]
RewriteEngine off


対策の結果
さくらリソース

ご覧の通り、サーバーのCPU使用時間が激減しました。というか、今までの使用時間がおかしすぎますね。サーバー負担をかけていて申し訳なかったです。

にしても、スパムクローラは死んでほしいです、マジで。

0 件のコメント :

コメントを投稿