ふと、アイコンのサイズが意外にでかいということに気づいた。今月に入ってからのログをgrepやawkでざっくり見てみたら、トピックアイコンは平均1.6KB、標準偏差3.3KB。総サイズで言うとテキスト:アイコン=約6:1くらいにまでなっていた。
そこで、なんだかなーと思ったので小さくしてみた。全部32×32かそれ以下にリサイズの上、4bit colormap(16色)にした。平均424バイトになったから、24:1くらいにはなるだろう。ちょっと表示が汚くなったものもある。16色はきつかったかな。
この程度のことは常識だろう、と思うのだがやっていなかった。ついでにアイコンの出自も全部調べてまとめとこうかなーと思ったがけっこう苦労しそうなのでやめた。自分の意識としてはこのログのソフトに最初からついてきたものとフリーのもの、別のソフトについてきてライセンスに再利用禁止や同一性保持みたいな条項のないものだけを使っているつもりだが、もし間違っていたらけっこうマズい。
そもそもこんなサイトにアイコンは別に必要ないのでは? みたいな感じもする(それを言っちゃおしまいか)。
で、このサイトがどこまでの負荷に耐えられるのか考えてみた。恐らく一番のネックは回線で、ADSLなので上りの1Mbits/sが問題になりそうだ。テキストのサイズは平均18KB程度だがこれはたいていの場合(相手のUAが対応している場合)はmod_deflateで圧縮されるので10KB程度、画像がその1/24だから無視して、12アクセス/秒、だいたい一番多い時間帯が平均の5倍だとすると、平均2.5アクセス/秒=21万/日くらいが目安ということになる。本当に瞬間最大風速が起きるとダメだろうけど、日常だとするとこの計算でいいと思う。で、仮に画像が大きくた6:1だったとしても、17万/日だった。実際は1Mbits/sは出ないのでもう少し低い数値にして見積もる必要がある。
つまり要約すると、回線的には普通はだいたい楽勝だということだ(笑)。上り1Mbits/sというのは意外と速い。
次にマシン側だが、ページが最大12.5回/秒ロードされるとなると、1ページあたり80msの時間までの消費が許されていることになる。ディスクアクセスにして20回も大丈夫ということになるはずだ。しかしながら実は計測してみるとlocalhostで1ページ転送するのに1秒くらいかかっている(苦笑)ので、全然ダメだということになる。httpdをかまさないでphpをコマンドで起動してみたら約430ms程度かかっていたので、やはり全然ダメだ。というか…Apache HTTPD+PHPも、自分のプログラムも、予想以上に遅いみたいね。油断してムチャなクエリ書いてるしなぁ。
最大1ページ/秒ということは、やはり最大風速が平均の5倍で計算すると、平均1万7千アクセス/日を越えようとしてきたらヤバい、ということになる。プログラムをどうにかするか(ちょっと面倒)、マシンをどうにかするか(これをやる気はない)、どっかにキャッシュ入れるか(これが一番有力)、考える必要がある。
それでも、とうぶん大丈夫なんだけどね(笑)。
(追記) 2004-02-07 19:38
どこが遅いのかだいたいわかってしまった。直す方法も思いついてしまった。わかってしまったからには、やるのか…残念だ。