さとうです。 2019年10月10日(木) 11:13 Kentaro Hayashi <hayas****@clear*****>: > 負荷が影響しそうな観点だと、以下の設定を変更すると状況に変化があるでしょうか? > 既定値のままなら今はglibだと思います。 > > 変更前:manager.event_loop_backend = "glib" > 変更後:manager.event_loop_backend = "libev" 自分も負荷が影響していると考えて、この設定をmilter-managerとtest-milter側とどちだにも入れたパターンで試してみていたのですが、変化ありませんでした。 また同時接続10件ぐらいからなにか問題が出てくる感じでしたので、n_workersを20にして20件送信するということを試してみたのですが、これも変化なしでした。 milter-manager.local.conf 追記部分 --- manager.event_loop_backend="libev" manager.n_workers=100 --- test-milter.conf --- milter.event_loop_backend="libev" milter.n_workers=20 --- test-milterの起動は下記 --- ruby test-milter.rb -s inet:20025 -c test-milter.conf -v --- 他に調査するとするなら > [children][error][message-processing] None of milters are processing message. > [leader][error] None of milters are processing message. のエラーを出している場所はわかっているので、ここで止めてその時の状況調べてみるとかがいいでしょうか。 > ドキュメントの通りtemporary-failureが正しいです。(temporary_failureでも動作しますが、内部で_を-に変換しています。) > ログレベルprofileは存在します。対象のログは黒背景に緑で表示されるようになります。 > このサンプルに限らずmilterを書くのであれば milter/clientをrequireするので十分です。 > MILTERプロトコルをしゃべるクライアントとサーバーを両方実装するようなコードを書く場合にはrequire milterするとよいです。 ありがとうございます。納得いきました。 ログレベルprofileは自分の見落としだと思います。すみません。 もう一つ疑問だったことがあり、質問させてください。 milter-managerの設定で define_envelope_from_stopper だとそこだけで止めることが出来るのですが、全く同じコードで define_envelope_recipient_stopper にすると止められない、ということがありました。 そこで参考になりそうな restrict_accounts_by_list のコードを参照すると、一旦 define_envelope_recipient_stopper で止めた後、その結果を保持しておいて define_data_stoppter でも止めるようになっていたため、そのようにしたところ止まるようになりました。 なので解決は出来たのですが、なぜこのような動きになるのか(このようにしないといけないのか)教えていただけないでしょうか。 -- 佐藤 潔 (Kiyoshi SATOH) <satoh****@hakub*****>