Re: [Kai-devel-ja] プロセスプール [was Re: 開発の進め方]
Kai is a distributed key-value datastore
Status: Beta
Brought to you by:
takemaru
From: masahito i. <coo...@gm...> - 2008-08-20 22:03:00
|
確かに、rb を使う事は必須です。 http://d.hatena.ne.jp/cooldaemon/20070918/1190085199 私が以前作った key/value store の例ですが・・・ http://labs.miu.vc/svn/cooldaemon/erl/yamd/trunk/include/yamd.hrl ↑こんなのを定義しておいて・・・ エラー発生時に ELOG("gen_tcp:listen/2 returned error\n~p\n", [Reason]). みたいな感じで使います。 出力は、コマンドラインから $ ./scripts/yamd show error と入力すると出るようにしているのですが それは、↓ここの show 関数で定義しています。 http://labs.miu.vc/svn/cooldaemon/erl/yamd/trunk/src/yamd_ctl.erl 去年の事で、記憶が曖昧なのですが たしか、絞り込みは type でしかできなかったような? 2008/8/20 Takeru INOUE <tak...@gm...>: > では,SASL の方向にしましょう. > > …と言いたいのですが,SASL の上手い使い方がわかってません. > 『プログラミング Erlang』を読んだときに,rb を使わないとログを解析できないように思えて,独自の kai_log > モジュールを使うようにしたという経緯があります. > やはり,Perl などを使ってログ解析できないのはつらいので. > 上手い手はあるのでしょうか? > > 2008/8/20 masahito ikuta <coo...@gm...>: >> kai 全体で SASL を使いつつ >> 該当箇所で、exit({error, Reason}) で落とすというのは、どうでしょうか? >> >> 2008/8/20 Takeru INOUE <tak...@gm...>: >>> 高負荷時に,file descriptor が不足して,kai_tcp_server の gen_tcp:accept がエラーを返すことがありました. >>> 現在の実装では,gen_tcp:accept の戻り値として {ok, Socket} しか受け取らないようになっていますが,{error, >>> Reason} も捕獲するようにしておこうと思います. >>> また,ログにも出力しようかと考えています. >>> >>> 理由は次の通りです. >>> Erlang の流儀に従うのであれば,エラーを捕獲せずに,supervisor などに後処理を任せるのかもしれません. >>> ところが,今回の場合,手がかりなしで異常終了してしまったので (下記参照),原因を突き止めるのに苦労しました. >>> >>> =INFO REPORT==== 17-Aug-2008::19:44:30 === >>> application: kai >>> exited: shutdown >>> type: temporary >>> >>> # いまだに Erlang のエラーメッセージの法則がよく分からない… >>> >>> というわけで,エラーを捕獲してログに残そうと思うのですが,どんなもんでしょうか? >>> まだ trunk/ には反映させていません. >>> この修正は,↓ で見ることができます. >>> >>> svn diff -r 73:74 http://kai.svn.sourceforge.net/svnroot/kai >>> >>> なお,ログを残すためには,tcp_server が kai_log に依存することになります. >>> 最終的には,kai に依存しない独立したモジュールにするのがよいと思いますが,とりあえず開発のしやすさを優先してログを出力できればと思ってます >>> (SASL とかを使うべき何だろうか?). -- cooldaemon |