月次アーカイブ: 12月 2008

今月までのプロジェクトでは、テスト計画がガキの使いレベルだったという反省が大きかったのです。特に性能試験は全くの未経験だったので、お客様先で1日缶詰になって泣きながらapacheのチューニングをしたものです。

それだけじゃなくて・・・

アプリの結合試験もなし崩し的にインフラチームの担当になって、仕様もあんまり把握しないままに場当たり的なテストをしてしまい、今思えばよく検収通ったなー・・・と安堵^h^h呆れたものです。

そんな私に耳の痛い、正しいテスト計画を策定するための根っこの考え方が書いてあるサイトがあったのでメモ。

http://enterprisezine.jp/article/detail/815

テストケースを実際に作りこむためのtipsというよりは、「何故テストをするのか」「テストで手を抜いたらどーなるのか」という基礎的な考え方
が書いてあります。品質保証に携わる人じゃなくても、(エンジニアなら当たり前のことですが)自分のやった仕事に説得力を持たせるためにどうすればよい
か?というテーマの参考になるかと。

来年もがんがるぞー!(`・ω・´)

某所にてApacheをインストールした際、最新のバージョンが使いたいという要件からrpmからではなくソースからインストールしました。ある程度の規模のアクセスを見込んでいたので、rotatelogsを使って、apacheのプロセスを再起動することなくログのローテーションをすることにしたのですが・・・

(;´Д`) 1日のアクセスログが5GBって何?

予想以上のアクセス数で、/usrパーティションが1週間もしないうちに枯渇してしまうであろうことは容易に想像できたので、とりあえずはlatestなログ以外は全部gzip圧縮してしまおう!と思ったのです。

 ・ 仕様
apacheのアクセスログとエラーログのうち、昨日データが修正されたもので、かつまだ圧縮されていないものを検索し、gzip圧縮する

# cd /root/bin
# touch logcompress.sh
# chmod 755 logcompress.sh
# vi logcompress.sh
~~~~~~~~ ここから記述 ~~~~~~~~
#!/bin/sh
LANG=C
cd /usr/local/apache2/logs
for i in `find . -name '*_log*' -mtime 1 | grep -iv gz`
do
    gzip $i
done
~~~~~~~~ ここまでです ~~~~~~~~

ちなみに、rotatelogsってなんで朝9時に実行されるんだろ?って思ってヘルプを見てみたら

$ /usr/local/apache2/bin/rotatelogs --help
Incorrect number of arguments
Usage: /usr/local/apache2/bin/rotatelogs [-l] [-f] {|} [offset minutes from UTC]

Add this:

TransferLog "|/usr/local/apache2/bin/rotatelogs /some/where 86400"

or

TransferLog "|/usr/local/apache2/bin/rotatelogs /some/where 5M"

to httpd.conf. The generated name will be /some/where.nnnn where nnnn is the
system time at which the log nominally starts (N.B. if using a rotation time,
the time will always be a multiple of the rotation time, so you can synchronize
cron scripts with it). At the end of each rotation time or when the file size
is reached a new log is started.

当たり前ですがUTCで0時に実行されるんですね(^_^;

なので、さっき作ったlogcompress.shは、毎日9時より数分後にcronで実行するようにしています。これによって、生ログで5GB近くあったものが300MB程度に圧縮されました。わーい。