2008/12/24

daemontoolsをインストールしたよ

仕事で管理してるサーバの一つでcronで定期的に実行してる処理があるんだけど、時間がやたらとかかる。平気で4時間とかかかる。
で、遅いだけならまだしも、前の処理が終わってないうちに次の処理が平行で走ると、8時間とか12時間とかどんどん時間がかかる。load avarageが10とかヨユーで超える。なんだよそれー!
でも、俺が作ったやつじゃないからそのスクリプト自体は触れない。というか俺のせいにされたくないから触りたくない。作った人に頼んどくれ。
で、俺はというとシステム全体のパフォーマンスが落ちないように、平行して処理されないようにしますねということで、daemontoolsをインストールしたよ。

えっと、サーバはCentOS5なので、パッケージはやっぱyumでインストールでしょ?と思ったんだけど、パッケージがねーよ!えぇーマジで。そりゃねーよ。

あきらめきれない。。。。あ、SRPMがあった。
[ ~]# wget wget http://www.qmailtoaster.org/download/develop/daemontools-toaster-0.76-1.3.3.src.rpm
[ ~]# sudo rpmbuild --rebuild daemontools-toaster-0.76-1.3.3.src.rpm
[ ~]# sudo rpm -Uvh /usr/src/redhat/RPMS/x86_64/daemontools-toaster-0.76-1.3.3.x86_64.rpm

よし、じゃあcronに設定しよう
[ ~]# crontab -e
01 * * * * /usr/bin/setlock -nx /tmp/script.lock /foo/cron/script.sh

これで /tmp/script.lock がロックできるか、なければ新しく作成して script.sh を実行するし、ロックできなければあきらめるようになるよ。

2008/09/06

DHCPサーバ機能設定@光プレミアムマンションタイプ

CTU設定で、DHCPサーバ機能設定を「しない」にできないんですけど。
ねぇねぇなんで?ねぇなんで?すげー不満。
 

Error: Can't locate Geo/IPfree.pm in @INC

ある日、Awstatsを見て気がついた。俺のサイト、だーれもこねー。
そりゃーね、もともと間違ってきた人くらいしか訪問してなかったけど、ここんとこ0人ですよ!0人。そんなバナナ!
よし、こうなりゃ悲しーけど自分で水増ししてやる!カチカチカチ・・・・
あれれ?増えない。アクセスログにはアクセスあるのに、、、ってよく見たらログの集計に失敗してるんじゃん。

えーとなになに?
Error: Can't locate Geo/IPfree.pm in @INC
パスが見つからないのね?

なんか、Geo/IPfree.pm のパスって変わったのかな?わかんねーや。
今あるのは、ここ
[root@ ~]# locate IPfree.pm
/usr/lib/perl5/site_perl/5.8.8/Geo/IPfree.pm

で、@INCの中身はコレ
[root@ ~]# perl -le 'print for @INC'
/usr/lib/perl5/5.10.0/i386-linux-thread-multi
/usr/lib/perl5/5.10.0
/usr/local/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi
/usr/local/lib/perl5/site_perl/5.10.0
/usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.10.0
/usr/lib/perl5/vendor_perl
/usr/lib/perl5/site_perl/5.10.0

あはっ☆、そりゃーみつからないよネ♪ Perlのバージョンが変わってるや。

んで、どうやって追加してやりゃーいいんだろ?わかんねーや。
っていうかめんどくさくなってきた。

とりあえず、ここに書いておこう。誰か正解を教えてくれないかなぁ。
[root@ ~]# vi /usr/share/awstats/wwwroot/cgi-bin/awstats.pl
require 5.005;
#追加
BEGIN {
push(@INC, '/usr/lib/perl5/site_perl/5.8.8/');
}

2008/07/02

MailmanでUnicodeEncodeError

Mailmanってとってもまじめな印象があります。(ただの偏見)
まじめすぎて融通きかないです。(ただの偏見)

機種依存記号がちょっとでもあると、通してくれないです。
ちょっとぐらいなら「もぅ~、しょうがないな~」とかいって通して欲しいですのでいじりました。

/usr/lib/mailman/pythonlib/email/Charset.py

282c282,283
< return unicode(s, self.input_codec).encode(self.output_codec)
---
> #return unicode(s, self.input_codec).encode(self.output_codec)
> return unicode(s, self.input_codec, 'replace').encode(self.output_codec, 'replace')

2008/01/10

406 Not Acceptable on application/x-httpd-php

application/x-httpd-php に、phpだとかhtmlを結び付けてると、Accept */* を送ってこないクライアントに対してページがひょーじできない(SoftBank 3GCとかね)。ほらほーだ。

と、言うわけで Apache2.0にしたことだし、こんな感じに変更しますた。

Options +MultiViews
MultiViewsMatch Handlers

<IfModule mod_php5.c>
AddType text/html .php
AddHandler php5-script .php .html
</IfModule>

Google Analytics