rabid
rabid は postal 付属の POP3 サーバのパフォーマンス測定を行うツール.
そのマニュアルのオプション指定の超訳 (誤訳かも?)
rabid [-r max-connections-per-minute] [-p processes] [-l local-address] [-c messages-per-connection] [-a] [-s ssl-percentage] [-i imap-percentage] [-b qmail-pop] [-d download-percentage[:delete-percentage]] [-[z|Z] debug-file] [-u] pop-server user-list-filename
- pop-server
- メールをダウンロードするメールサーバのアドレスかホスト名を指定する.110番ポート以外を指定したい場合は,ホストアドレスを角括弧で括り,直後にポートを指定する ([popserver]995 みたいに.良く使われるようにコロン等は要らない).全接続で DNS でん名前解決をしたければ (例えばラウンドロビンDNSのテストのために),ホストアドレスの前に '+' を置く.
- user-list-filename
- ユーザのemailアドレスとパスワードのリストが含まれたファイルの名前.一行にアドレスと,直後に空白で区切られたパスワードが書かれたファイル.
- process
- 別々のコネクションを生成するために fork するプロセスの数.良く設定されたメールサーバは,無制限に接続を受け付けない.なので,メールサーバに設定された接続数以上の数を設定しないように注意すべき.さらに,有効な結果を得るために,実運用の参考にならないような結果になるような,サーバ負荷を与えないように注意すること.
- max-connections-per-minute
- プログラムが生成するコネクション数を制限するためのもの.システムに負荷があるとき,他のプログラムのパフォーマンスに与える影響を調べたいときに使う.デフォルトは 1 分間で 24000 接続である.
- messages-per-connection
- 一回の POP セッションでダウンロードするメッセージの最大数を指定する.デフォルトは -1 で無制限.
- local-address
- 外向きのコネクションにどのローカル IP アドレスを使うかを指定する.リモートアドレスと同じように指定する.
- -a
- すべてロギングする.受け取った全メッセージデータがログされる.非常に遅くなるので,高速なイーサネットリンクをあふれさせるようなことは出来ない.
- -s
- SSL/TLS 接続の割合を指定する.デフォルトは 0.
- -i
- IMAP 接続の割合を指定する.デフォルトは 0.
- -b
- "-b qmail-pop" と書くと,qmail の POP サーバが作り出す壊れた文字列に対するエラーを出力しない.qmail の POP サーバはメッセージの最後にブランク行を追加する.
- -d download-percentage[
- delete-percentage]:ダウンロードするメッセージの割合と,ダウンロード後に消去するメッセージの割合.デフォルトは 100%.
- -u
- ユーザ名(フィールド)のドメイン名を無視する.postal と rabid で同じユーザファイルを使用するために,このオプションを使用する.デフォルトでは postal はパスワード欄は無視する.rabid は,ドメイン名は必ずしも必ではない.デフォルトではドメイン名の部分も (ユーザ名として) 使用する (複数ドメインを管理するサーバで必要な事があるため).
- -z
- デバッグファイルのベースを指定する.スレッド毎に 1 ファイル生成される (ここで指定した名前に":"を付けた後スレッド番号を付加した名前).それぞれのファイルは,そのスレッドのデバッグのために全 IO が記録される.
- -Z
- も同じくデバッグファイルのベースを指定.":" の後にコネクション番号を付加した名前になる.
"-u" オプションをうまく動いてないような気がするなあ."user1@example.com pass" と書いたファイルを -u 付きで実行すると,ユーザ名は "user1",パスワード "example.com" で実行してやがるような...
これで man 通りに動くような.
--- userlist.cpp.orig 2008-10-07 18:48:22.000000000 +0900 +++ userlist.cpp 2008-10-07 18:49:38.000000000 +0900 @@ -38,7 +38,7 @@ strtok(buf, "@"); m_users->push_back(buf); if(usePass) - m_passwords->push_back(buf + strlen(buf) + 1); + m_passwords->push_back(pass); if(strlen(buf) > m_maxNameLen) m_maxNameLen = strlen(buf); }
ただ,実行しても,現時点では
MD5 mis-match, calculated:d5e3456283992dc6d1ad3febf0eea595, expected 29a11479477a9f96494850b31454a2fe!
などとエラーが出て,肝心のどれだけメッセージを取得したか? がさっぱり出てこない.使えないなあ...(何かコツがあるのかな?) ここにも同じ話が