Amazon商品の価格変動チェック「あまとも」
コミックダッシュ!は初音ミクGTプロジェクトを応援しています
個人ニュースサイトを巡回する「メガとんトラック」
全ての記事 携プレMP3 デジカメ レコーダ ゲーム メモリ デジモノ コラム 雑談 ブログ あまとも コミックダッシュ!
前の記事次の記事
2005/05/27 23:59 - 2005/05/27

Webサーバのログが1ヶ月で1GB近くに膨らんだ?!

カテゴリ :  タグ :

    えー、実は先日、
     
     Webサーバの5月ぶんのログが 800MB オーバー
     
    とかいう、素敵チックな状態に陥り始めたのに気が付いて、ようやく
    重い腰を上げてWebサーバのログの取り方を改めてみることにしました。
     
    今までは.gifや.jpgなどの画像も含む全てのアクセスについてのログを取り、
    その巨大なファイルに対して文字列処理のスクリプトを走らせることで
    PageViewなどのいろいろなデータを後から紡ぎ出していたのですが、その
    スクリプトが完走するまでの時間が異様に長くなってきてしまっていたのです。
     
    .gif、.jpgなどの画像データ、あちこちで多用している自作JavaScript(.js)、
    それから.cssや.icoなどへのアクセスは、後々に予期せぬトラブルが起こったときに
    状況を把握するために、一応全て残しておきたいという気持ちは変わりません。
    ただ、普段のPVカウントスクリプトなどを走らせる対象には、
     
     本ログはそのままで、別途コンパクトなログも
     
    作っておけば良いのではないか、ということに気が付いたのです。
     
    そこで、アクセスログを2つ作ってみることにしました。
    CustomLog /(ログdir)/access_log common
    CustomLog /(ログdir)/access_log_simple common env=!nologext

    そして条件として指定した nologext にはこんな指定をします。
    googleなどで SetEnvIf の使い方を見ると必ず載っている常套記述です。
    SetEnvIf Request_URI "\.(jpg)|(png)|(gif)|(css)|(js)|(ico)$" nologext
    これで、URLの最後が指定された拡張子だった場合には記録が成されない、
    というシンプルなログが生成されるはずです。
    実際にデーモンを再起動してみると、見事にシンプルなログが生成されました。
    試しに5/26日の24時間で生成されたログのサイズを比べてみると、
    従来の全保存の場合は1日で 26MB だったところが、シンプルログでは 2.4MB
     
     わずか10分の1にまで、すっきりスリムになりました。
     
    ブログのページ構成を見ると良く判りますが、1ページ(html)にアクセスするには、
    それに付随する画像やJavaスクリプトを、合わせて10個以上もアクセスしなければ
    ならない場合が多くあります。逆にいえば、1ページを表示するだけで、
    ログのほうは10行以上も増えていく というのが今までのログの取り方でした。
     
    一方、今回切り分けたシンプルログのほうは、ほとんどの場合は1ページ表示
    につき1行のログという、非常に判りやすいログになりました。
    これでシンプルログのほうはまとめて残しておき、巨大な本ログのほうは月ごとに
    別メディアに退避させてしまう、といった手段が取れてホクホクになります。
     
    ところで、上記のSetEnvIfの設定はあちこちで常套句のように紹介されて
    いる例なのですが、よくよくみると、コレはちょっと変な気がします。
    SetEnvIf Request_URI "\.(jpg)|(png)|(gif)|(css)|(js)|(ico)$" nologext
    これだと、先頭の「\.」は「jpg」にしか掛かっていません。従って、
    /cgi-bin/chiba.cgi?president=hyogif
    とかいうURLがあったとしたら(ないない)、最後が「gif」で終わっていますので、
    「.gif」でなくても除外されてしまいます。これは想定外の動作です。
     
    どの拡張子も「.(ピリオド)」を含んだときだけ除外するのであれば、
    SetEnvIf Request_URI "\.(jpg|png|gif|css|js|ico)$" nologext
    こうすべきでしょうか。かくいう私も正規表現には慣れていなくて、
    こう書いたあとにはいちいちperlで実験しているという情けなさです( ̄▽ ̄;)
     
    googleで調べると、どれもこれも全て "\.(jpg)|(png)|(gif)$" のような
    書き方一色なのですが・・・うむむ、私が間違っているのでしょうか?

    CK@デジモノに埋もれる日々 @ckom
    ブログ「デジモノに埋もれる日々」「アニメレーダー」「コミックダッシュ!」管理人。デジモノ、アニメ、ゲーム等の雑多な情報をツイートします。



    投稿者 CK : 記事URL | | | 2005/05/27 23:59


    « 停電時に「数分耐えてくれる」格安のUPS(無停電電源装置)

    トップに戻る

    ch2ch - 2ちゃんねる「○○板の△△スレ」をリストする »



    ▼ コメント ▼

    No.1261   投稿者 : ヒョギフ大統領   2005年5月28日 02:36

    ヒョギフ大統領の貴重な産卵シーン


    No.1262   投稿者 : 匿名   2005年5月28日 07:08

    正規表現まちがってないよ!


    No.1263   投稿者 : sonic   2005年5月28日 08:00

    私も
    SetEnvIf Request_URI "\.(gif|jpg|png|ico|css|js)$" optional-request
    って書いてますよ。

    特定条件に当てはまるものは apache のログに記録しない
    http://sonic64.hp.infoseek.co.jp/2002-08-30.html


    No.1268   投稿者 : CK   2005年5月28日 16:49

    ●ヒョギフ大統領さん
    オオグンタマのエヒフー! (お約束ありがとうございます(;´д⊂))
     
    ●Anonymous(匿名)さん
    ありがとうございます。ちょっとホッとしました・・・。
     
    ●sonicさん
    エントリ拝見いたしました。やはりそういう記述になりますよね。
    googleで " SetEnvIf Request_URI gif " のように検索すると、9割方が
    "\.(gif)|(jpg)$" のような記述でしたので自信がゆらいでしまいました。


    ご自由にコメントください(=゜ω゜)ノ  ▼ コメント入力欄を開く ▼
    ※管理人は多忙のためお返事はほとんどできません(スミマセン)。
    スパムおよび本文と無関係なコメントは削除対象になる可能性があります。


    ▼ はてなブックマークのコメント ▼


    ▼ トラックバック ▼

    このエントリーのトラックバックURL:

    ★コミックダッシュ! 10,000人突破ありがとうキャンペーン!(9/18~10/23)
     
    デジモノに埋もれる日々 : (C) CKWorks