RNAが暴走→処理分散とテスト
今朝ふとWinノート(サーバー)を覗いたら、何が起こったのかHDDにアクセスしっぱなしになっておりました。 タスクマネージャーを見るとPerlが5つ位起動して、ハブにアクセスがあったと思ったらまたプロセスが増えて、CPUを完全に占有しているような状態...。
結局原因は判らず仕舞いだったのですけれども、これでは普通にhttpにアクセス出来なくなってしまうので、取り敢えずはプロセスを全部強制終了しました。 (そうしたらシステムが軽い軽い)。
原因は判らないのですけれども、RNAだという事そのものは判ってますので、(py)cronのサービスを一端停止して手動でリフレッシュしてみる事に。 そうしますとまたもやものすごいCPU占有が。 これまでにここまで激しい事は無かったので、焦る。
リフレッシュしなければ別段問題無いので(でもリフレッシュしないと意味が無い)、サイトのリストをopmlで書き出してバックアップする事に。 ちなみにそれはトップページで行います。 これで、後でどんな状況に陥っても復帰出来ます。
私が運営している例のRNAアンテナは、アクセスするのが私位な故に、そもそもは公開しなくても構わない、という話があります。 公開しないのであれば単にローカルで動かすだけで、しかもマシンを絶えずアクティブにしていなくても良いメリットがあります。 しかしながら一応は一端公開してしまったものだし、勉強の為と言う事もあり、引き続き公開しながら対処していく事に。
ただ、幾ら勉強の為にとはいえ、一寸は処理を分散させようよ、って結論です。 そこでRNAだけは別のマシンに処理させ、スケジュールされている「なつみかん」やAWStatsは引き続きWinノートに行わせるようにします。
別のマシンとなりますと残るは私のマックか妻のマックだけ。 取り敢えず私のマックでテストをし、問題無ければ妻のマックに引き継がせる事にします。 私のマックは今寝室にあり、常時アクティブはファンが煩いので出来るだけ行いたくはありません。 また、妻のマックは今現在はあまり使っておらないので好都合であります。 ちなみに作業場は今、業務用ストーブをガンガン焚かないと凍死する位寒いです。 なので私のマックだけ寝室に移動して妻と一緒に使っている訳。
先に書きますが、Mac OS XでCGIが使えるようにします。 私は~/Sites/でhtmlもCGIも走るように設定しておりますので、RNAはここにインストールします。 パスは~/Sites/rnaとなります。
さておいて、これまでRNAは2.0b1を使わせて頂いておりましたけれども、この際(?)ですのでナイトリーをインストールしてみる事に。 現在のビルドは050324です。 説明書はこちら。
Windowsは基本的にパーミッションを考慮しなくても良いので導入は非常に楽。 でもMac OS Xと言うかUNIX系はパーミッションの設定を適切に行わないと動きません。 と言いますか私、最初にWindowsにあれこれインストールした折りにパーミッションの設定が不要だときいて薄気味悪くなったものですが、それもすぐに慣れ、本日Mac OS Xにインストールした時にパーミッション設定のコマンドを忘れてました。
RNAの説明書には勿論パーミッションの設定についても記されてます。
$ chmod -R 777 rss/ cache/
$ chmod 755 *.cgi
$ chmod 666 *.html *.rdf *.xml
$ chmod 666 .rna*
実は最後の.rna*を666にするのだけ出来なかったのです。 そこで恐らくこれはetc/に入っている.rna-passwdだろうと勝手に踏み、またこのファイルをリネームしてしまったので個別にパーミッション設定しました。 無論このパーミッション設定を怠るとログイン又はユーザー設定で躓く筈(多分)なので、そこでチェック可能かも。
後は別段する事も無く、rna-load.cgiにアクセスしてインデックスからユーザーの設定を説明書通りに行い、ログイン後にopmlをインポートして環境を整え、テストと言う事でリフレッシュ。
アンテナ表示ページの設定は以前とほぼ同じなのですが、覚え書きとして復唱。
吐き出されるファイルは
〜/Sites/rna/rss/antenna.inc
へ。 ファイルの名称及びパスの指定は
~/Sites/rna/plugins/sample/sample.pl
にて、
my $html_file = 'hogehoge';
を書き換えます。
同じディレクトリーにあるetemplateの中身を空にし、stemplateの内容を
<div class="smft-r">Updated at <$RNAPageDate format="%Y年%m月%d日(%a) %k時%M分%S秒"$> [<$RNAPageTimezone$>]</div>
<div style="padding-left: 40px"><RNAItems>・<a href="<$RNAItemLink$>#<$RNAItemDate format="%Y%m%d%H%M%S"$>"><$RNAItemDate format="%Y/%m/%d %H:%M" $> <$RNAItemTitle$></a><br /></RNAItems></div>
<div class="smft-r">powered by <a href="http://www.semblog.org/wiki/?rna">RNA</a></div>
にします。
Mac OS Xになった事で本家本元のcronが使えます。 またMac OS XではcronのGUIフロントエンド「CronniX」がありますので、これを使う事に(リンクは日本語ローカライズをなさってらっしゃるE-WAさんのページ)。
先ず、次の様な内容のテキストファイルを作成し、任意の名称にし、任意の場所に置きます。 私の場合、crontab.shという名称で~/Documentsに置きました。
! /bin/bash
cd ~/Sites/rna/
/usr/bin/perl ./rna.cgi >/dev/null 2>&1
そしてCronnixを起動して定期的(1時間毎)にこれが実行されるように登録します。
12,42* * * * ~/Documents/crontab.sh
大体こんな感じになる筈です。 尚これは
/private/var/cron/tabs/username
から引用しました。
そして定期的に書き換えられるantenna.incをWinノートへ移動するのですが、我が家では各マシンはファイル共有されてますので、これを用いてコピーを行う事に。
同じくCronnixで
*/6 * * * * cp -f ~/Sites/rna/rss/antenna.inc Winノートのパス
パスについていちいち書くのが面倒であれば、オープンダイアログ経由で指定が出来るのでとても簡単です(「ブラウズ...」ボタンをクリック!)
尚、Cronnixで登録したら直ぐに「保存」する事。
これで設定登録は終わり。 瓢箪から駒なのですけれども、これでヨソから「好き勝手にアクセス」が無くなります...と思います。





