nDiki

2004年1月17日 (土)

[ WiKicker ] 「最近のアクセスログ」処理思案

今のところ WiKicker 自体にはアクセスログ機能はなく、Apache のそれに頼っている(NaneyOrgWiki ではサーバ側で combined log を提供していないので別途自前で、似非 combined log を吐かせている)。

1日毎程度のアクセス統計チェックはこれでまぁある程度済むのだが、それとは別に瞬間的なアクセス状況を知りたい時がままある。 特にサーバの負荷が上がりつつある時は

  • 特定のホストから連続的なアクセスがないか?(ロボットなど)
  • 特定のページのリクエストが一時的に増えているのでは?(ドラマ放映終了直後など)
  • 特定の訪問者がリロードしまくってないか?(チャット等と勘違いして)

などをチェックしたい。 ロボットのアクセスがひどい場合は早急にはじく必要があるし。 しかし、生アクセスログの目視チェック(+grep etc)では限界がある(wiki のURIはページ名がエスケープされているからパッと見どのページかわからないし)。

ということで、直近のログを簡単にチェックできるような機能を検討。 まずはログをどこに取るか。 複数のCGI プログラムのプロセスから、ガシガシ書ける必要有り。

  • 普通のファイル
  • daemon
  • mmap
  • 共有メモリ

あたりか。 直近の数百アクセスだけあれば良く、逆にそれ以上のログはばんばん破棄したいのだが何が一番いい実装かなぁ。

シンプルに普通のファイルに append するのが一番楽だが、ログが増えると tail を取るのが遅くなるだろうし、ログを切り詰めるのも面倒。 PerlTie::File を使うとファイルの各行を配列要素に見立てて push、 unshift、splice ができるのだが、やはり切り詰めに時間がかかりすぎる。

使えそうなモジュールがないかいろいろCPAN検索して、とりあえずどんどんビルドしてみる(サーバの Perl5.005_03 なので、目的にあっても使えないかもしれないし)

スポンサード リンク
[ 1月17日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・PO をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.21695s / load averages: 0.45, 0.42, 0.42
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker