NP_cles()

12345678910111213141516171819202122232425262728293031

NP_Blacklistで速度低下を防ぐには

 
投稿者:hsur 投稿日時:2006-09-23 - 20:47
カテゴリー:Nucleus Tips - - トラックバック(0)- Views: 197

NP_Blacklistを入れると動作が緩慢になってしまって困っている方もいると思います。これはページが表示される直前にアクセス元がブラックリストに載っていないかどうかDNSを使って問い合わせを行っているためで、PHPの時間制限が厳しいサーバの場合にはこの動作が致命的になる場合があります*1

別にブラックリストに載っているIPからページを閲覧されてもかまわなくて、とりあえずspamトラックバックとコメントだけが弾ければOKと割り切ってしまうのであれば、ちょっとした改造でかなり体感速度を上げることができるので、その方法を記載しておきます。

改造方法

NP_Blacklist.php(112行目付近)のこの部分を

return array('QuickMenu','PreAddComment','PreSkinParse','ValidateForm', 'SpamCheck');

このように書き換えます。(※PreSkinPerseの部分を削除。)

return array('QuickMenu','PreAddComment','ValidateForm', 'SpamCheck');

書き換えが完了したら「プラグイン管理」から「登録リストのアップデート」を実行するか、NP_Blacklistをアンインストール後、もう一度インストールを行います。

この改造を行った場合、副作用としてEnable referrer based blocking?を「はい」に設定していてもリファラのチェックが行われなくなりますのでその点に注意してください。

根本的な解決に向けて

とりあえず、DNSBLを参照した結果について自前でキャッシュを行えば動作がかなり軽くできることがわかりました。

実装としてはファイルシステムを使ったものとeAcceleratorの共有メモリを使ったものの2種類を作ってみたんですがどちらでもかなり効果があります*2。共有メモリはサーバによって使える/使えないの差が激しいので、一般向けのリリースとしてはファイルシステムによるキャッシュを次のバージョン(jp8)から同梱する予定にしています。

  • *1: うちのサーバの実測ではこの部分だけで0.5秒以上消費しています
  • *2: 現在、eAcceleratorを使ったものを試験的に稼動させています

このエントリは役に立ちましたか?

  

トラックバックについて [policy]

Trackback URL:
Trackbacks
このエントリにトラックバックはありません

Comments [policy]

No comments yet

Add Comments

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン