こまめに怒られた。

ヨメさんが今日から入院して、寂しいのかこまめがやたら甘えてくるのですが、1時過ぎたら、こまめがベッドからニャアニャア言いながらやって来ました。ヨメさんの代わりに、「早く寝ろ、こんにゃろ」とでも言っているみたい。ハイハイ、もう寝ますよ。

Relax重要。

コード書いてて行き詰まった時は、風呂入ってリラックスした時に閃く、というのが多いですね、感覚的には。ということでもう寝よう。

Apacheのログをgzip圧縮からxz圧縮への変更を検討。

結論、無い。

画像圧縮はとても強力でした が、Apacheのアクセスログの文字列圧縮は、圧縮率の高さに比べると圧縮に要する時間が長すぎました。伸張に要する時間はgzipと大差ないので、Webサーバ側のCPU負荷を無視して、N/W帯域、ディスク容量を節約するなら使えますが、サーバ間やDC間のN/W帯域節約にも、アクセスログ解析用のシステムのディスク容量節約にも大きな効果は得られないので選択肢としてありませんね。

試しにあるサービスの一日分のログでやった例は以下の通りです。 1

非圧縮時のファイルサイズ

total 5900156
-rw-r--r-- 1 user user 319363125  Feb 24 15:36 16_access_log.20120223
-rw-r--r-- 1 user user 318459629  Feb 24 15:36 15_access_log.20120223
-rw-r--r-- 1 user user 317564749  Feb 24 15:36 14_access_log.20120223
-rw-r--r-- 1 user user 317429105  Feb 24 15:36 13_access_log.20120223
-rw-r--r-- 1 user user 317269069  Feb 24 15:36 12_access_log.20120223
-rw-r--r-- 1 user user 318413201  Feb 24 15:36 11_access_log.20120223
-rw-r--r-- 1 user user 320070237  Feb 24 15:36 10_access_log.20120223
-rw-r--r-- 1 user user 303356624  Feb 24 15:36 10_access_log.20120222
-rw-r--r-- 1 user user 319528574  Feb 24 15:36 9_access_log.20120223
-rw-r--r-- 1 user user 318281124  Feb 24 15:36 8_access_log.20120223
-rw-r--r-- 1 user user 316764620  Feb 24 15:36 7_access_log.20120223
-rw-r--r-- 1 user user 318641631  Feb 24 15:36 6_access_log.20120223
-rw-r--r-- 1 user user 319956606  Feb 24 15:36 5_access_log.20120223
-rw-r--r-- 1 user user 317251065  Feb 24 15:36 4_access_log.20120223
-rw-r--r-- 1 user user 318412792  Feb 24 15:36 3_access_log.20120223
-rw-r--r-- 1 user user 320224674  Feb 24 15:36 2_access_log.20120223
-rw-r--r-- 1 user user 319814095  Feb 24 15:36 1_access_log.20120223
-rw-r--r-- 1 user user 317625588  Feb 24 15:36 18_access_log.20120223
-rw-r--r-- 1 user user 317291138  Feb 24 15:36 17_access_log.20120223

gzipでの圧縮後のファイルサイズ。

圧縮後は約17%です。

total 1047660
-rw-r--r-- 1 user user 53619534  Feb 24 15:36 10_access_log.20120222.gz
-rw-r--r-- 1 user user 56839677  Feb 24 15:36 10_access_log.20120223.gz
-rw-r--r-- 1 user user 56569549  Feb 24 15:36 11_access_log.20120223.gz
-rw-r--r-- 1 user user 56362050  Feb 24 15:36 12_access_log.20120223.gz
-rw-r--r-- 1 user user 56368136  Feb 24 15:36 13_access_log.20120223.gz
-rw-r--r-- 1 user user 56375659  Feb 24 15:36 14_access_log.20120223.gz
-rw-r--r-- 1 user user 56550279  Feb 24 15:36 15_access_log.20120223.gz
-rw-r--r-- 1 user user 56716954  Feb 24 15:36 16_access_log.20120223.gz
-rw-r--r-- 1 user user 56359257  Feb 24 15:36 17_access_log.20120223.gz
-rw-r--r-- 1 user user 56443638  Feb 24 15:36 18_access_log.20120223.gz
-rw-r--r-- 1 user user 56763898  Feb 24 15:36 1_access_log.20120223.gz
-rw-r--r-- 1 user user 56894590  Feb 24 15:36 2_access_log.20120223.gz
-rw-r--r-- 1 user user 56521784  Feb 24 15:36 3_access_log.20120223.gz
-rw-r--r-- 1 user user 56326266  Feb 24 15:36 4_access_log.20120223.gz
-rw-r--r-- 1 user user 56839632  Feb 24 15:36 5_access_log.20120223.gz
-rw-r--r-- 1 user user 56573367  Feb 24 15:36 6_access_log.20120223.gz
-rw-r--r-- 1 user user 56232865  Feb 24 15:36 7_access_log.20120223.gz
-rw-r--r-- 1 user user 56505719  Feb 24 15:36 8_access_log.20120223.gz
-rw-r--r-- 1 user user 56745093  Feb 24 15:36 9_access_log.20120223.gz

gzip圧縮の所要時間。

$ time gzip *

real    2m41.050s
user    2m36.786s
sys     0m4.231s

gzip伸張の所要時間。

gzip -d *
real    1m4.104s
user    0m44.670s
sys     0m8.709s

一応、2回目の伸長に要した時間。

$ time gzip -d *

real    0m44.436s
user    0m35.568s
sys     0m6.862s

xz圧縮後のファイルサイズ。

約11%です。

total 629888
-rw-r--r-- 1 user user 34091368  Feb 24 15:36 16_access_log.20120223.xz
-rw-r--r-- 1 user user 33995004  Feb 24 15:36 15_access_log.20120223.xz
-rw-r--r-- 1 user user 33902124  Feb 24 15:36 14_access_log.20120223.xz
-rw-r--r-- 1 user user 33917212  Feb 24 15:36 13_access_log.20120223.xz
-rw-r--r-- 1 user user 33890092  Feb 24 15:36 12_access_log.20120223.xz
-rw-r--r-- 1 user user 34008540  Feb 24 15:36 11_access_log.20120223.xz
-rw-r--r-- 1 user user 34166088  Feb 24 15:36 10_access_log.20120223.xz
-rw-r--r-- 1 user user 32111688  Feb 24 15:36 10_access_log.20120222.xz
-rw-r--r-- 1 user user 34086496  Feb 24 15:36 9_access_log.20120223.xz
-rw-r--r-- 1 user user 33984752  Feb 24 15:36 8_access_log.20120223.xz
-rw-r--r-- 1 user user 33835084  Feb 24 15:36 7_access_log.20120223.xz
-rw-r--r-- 1 user user 34021324  Feb 24 15:36 6_access_log.20120223.xz
-rw-r--r-- 1 user user 34179500  Feb 24 15:36 5_access_log.20120223.xz
-rw-r--r-- 1 user user 33884716  Feb 24 15:36 4_access_log.20120223.xz
-rw-r--r-- 1 user user 33978080  Feb 24 15:36 3_access_log.20120223.xz
-rw-r--r-- 1 user user 34184592  Feb 24 15:36 2_access_log.20120223.xz
-rw-r--r-- 1 user user 34110700  Feb 24 15:36 1_access_log.20120223.xz
-rw-r--r-- 1 user user 33949656  Feb 24 15:36 18_access_log.20120223.xz
-rw-r--r-- 1 user user 33904016  Feb 24 15:36 17_access_log.20120223.xz

xz圧縮の所要時間。

$ time xz *

real    53m25.665s
user    53m19.005s
sys     0m6.160s

一応、2回実行してみましたが、変わらず。

$ time xz *

real    53m26.128s
user    53m19.134s
sys     0m6.494s

xz伸張の所要時間。

$ time xz -d *

real    1m6.302s
user    0m58.743s
sys     0m7.551s
1

なんか一日分違うログが混じっていますね…。

p7zip-full, pbzip2も比べてみた。

p7zip-full(7zコマンド)のオプションは、”-t7z -m0=lzma -mx=9”を指定し、pbzip2は-9オプションを使用しました。

p7zip-full 圧縮後のサイズ比19.0%

# p7zip compress ##

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7zip Version 9.20 (locale=ja_JP.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

Scanning

Updating archive hoge.pdf.7z

Compressing  hoge.pdf

Everything is Ok

real    0m1.169s
user    0m1.688s
sys     0m0.272s
-rw-r--r-- 1 user user 2328107  2月 23 19:46 hoge.pdf.7z
## p7zip uncompress ##

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7zip Version 9.20 (locale=ja_JP.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

Processing archive: hoge.pdf.7z

Extracting  hoge.pdf

Everything is Ok

Size:       12226478
Compressed: 2328107

real    0m0.201s
user    0m0.216s
sys     0m0.028s

pbzip2 圧縮後のサイズ比35.6%

## pbzip2 compress ##

real    0m2.844s
user    0m11.009s
sys     0m0.044s
-rwxr-x--- 1 user user 4355974  2月 23 11:02 hoge.pdf.bz2
## pbzip2 uncompress ##

real    0m0.306s
user    0m1.040s
sys     0m0.036s

p7zip-fullはxzと、pbzip2はbzip2と大体圧縮率が同じくらいで、処理時間はいずれも比較対象よりも速い、という結果になりました。

xzスゴイ。

画像を多用しているPDFでの圧縮率と実行時間を、gzip, bzip2, xzをそれぞれ-9オプションで比較してみました。結論、xzすごいね。テキストファイルなどでの実行結果と比べてみるとまたちゃうんでしょうね。

gzip 圧縮後のサイズ比92.5%

-rwxr-x--- 1 user user 12226478  2月 22 13:38 hoge.pdf
## gzip compress ##

real    0m0.556s
user    0m0.548s
sys     0m0.004s
-rwxr-x--- 1 user user 11307285  2月 22 13:38 hoge.pdf.gz

## gzip uncompress ##

real    0m0.114s
user    0m0.096s
sys     0m0.016s

bzip2 圧縮後のサイズ比35.5%

## bzip2 compress ##

real    0m6.313s
user    0m6.308s
sys     0m0.000s
-rwxr-x--- 1 user user 4344225  2月 22 13:38 hoge.pdf.bz2
## bzip2 uncompress ##

real    0m0.646s
user    0m0.624s
sys     0m0.020s

xz 圧縮後のサイズ比19.0%

## xz compress##

real    0m2.355s
user    0m2.264s
sys     0m0.088s
-rwxr-x--- 1 user user 2319720  2月 22 13:38 hoge.pdf.xz
## xz uncompress##

real    0m0.149s
user    0m0.112s
sys     0m0.036s

ところで圧縮率って?

圧縮率という場合、圧縮後のファイルサイズ÷元のファイルサイズ、なのか、圧縮によって縮小されたファイルサイズ÷元のファイルサイズ、なのか。「圧縮」を形容詞と捉えて、圧縮(された(後の))率と考えれば前者ですが、動詞と捉えて圧縮(する)率と考えれば後者ですね。圧縮率が高いという言い方をしたり聞いたりするから、やはり後者なんですかね。その方が直感的か。