ログはタブ区切りの方が解析が速い?

dankogaiさまがbenchmark取ってて速そうだったので、とりあえずやってみた。

材料

  • 1日分のログ(通常) access.20080108 ・・・275,161行(52M)
  • 1日分のログ(タブ区切り) access.20080108.tsv・・・275,161行(49M)

条件

ログフォーマット(モバイル用にEZwebのsubnoを取得している)
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i %{x-up-subno}i\" %X%D" combined
パース式(最後の先読みは %X%D がないログの解析用で上記フォーマットなら不要)
^(.*?) .*? .*? \[(.*?)\] "(.*?) (.*?) (.*?)" (.*?) (.*?) "(.*?)" "(.*?)"(?: (.*?) (.*?)$|$)
CPU
Xeon(TM) CPU 2.40GHz x 2
ディスク性能
#/sbin/hdparm -t /dev/sdb3

Timing buffered disk reads: 64 MB in 1.05 seconds = 60.95 MB/sec

結果

access.20080108
解析時間 2分24秒
access.20080108.tsv
解析時間 2分17秒

解析もやってるので遅いですが、パースするだけならもっと速いです。

感想

あまり変わらない。パース時間は速くなるのかも知れないけど、実際のボトルネックは読み込み+解析っぽいのであまり意味がない様子。ログがTSVだと他の解析ツールなどで困る可能性が高いのでやらない方が無難か・・・