| 次の記事 |
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 : 記事URL | | | 2005年5月27日 23:59
« 停電時に「数分耐えてくれる」格安のUPS(無停電電源装置) | トップに戻る | ch2ch - 2ちゃんねる「○○板の△△スレ」をリストする » |
・[01/14/2012] - Eye-Fiの転送が無反応に・・・転送先ネットワーク(Wi-Fi AP)の情報がない?!
・[01/13/2012] - Forza4で早々に「レベル150」(カンスト)達成 - ほぼオンラインレースのみ
・[01/12/2012] - あまとも通信 - PSVita用32GBメモリカード、ようやく在庫が落ち着く?
・[01/11/2012] - ハンファからiPhone4/4S用の360度パノラマ動画レンズ「GoPano micro」
・[01/10/2012] - 東芝レコーダ「DBR-Z160」が到着! したものの、肝心の設置スペースが・・・
▼ はてなブックマークのコメント ▼
▼ コメント ▼
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)$" のような記述でしたので自信がゆらいでしまいました。
ご自由にコメントください(=゜ω゜)ノ
※管理人は多忙のためお返事はほとんどできません(スミマセン)。スパムおよび本文と無関係なコメントは削除対象になる可能性があります。
▼ twitterのコメント ▼
▼ トラックバック ▼
このエントリーのトラックバックURL:





