Awstatsで複数のログファイルをマージするために、付属のlogresolvemerge.plを使っていましたが、ある時を境にエラーが出るようになりました。
記録するのを忘れてしまったのですが、以下のようなエラーだったと思います。
Error Command for pipe logresolvemerge.pl
logresolvemerge.plを直接実行してみたところ、「ファイルを開きすぎです」と出てきました。そんなにファイル開いてるのか?と思ったのですが、開くファイル数や現在開いているファイル数などは、以下のようにして調べることができるようです。
# cat /proc/sys/fs/file-max 366343 # cat /proc/sys/fs/file-nr 2112 0 366343
file-maxの数字を書き換えることで、上限を変更できるそうです。
書き換えたりしたものの改善せず、よく考えているとlogresolvemerge.plには以下のようにして指定していました。
LogFile="/opt/awstats/tools/logresolvemerge.pl /home/www/logs/www.* |"
これだと毎回全てのログファイルを読みにいってしまいますので、以下のように変更してみました。
LogFile="find /home/www/logs/www.* -mtime -1 -type f -print | xargs /opt/awstats/tools/logresolvemerge.pl $1 |"