[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[postfix-jp: 1056] Re: /usr/sbin/sendmail をたたくのと、 SMTPをしゃべるのと、どちらが速いか?



柳澤です。

自分はfork-execが無く、I/O処理が少ない分だけSMTPを話す実装のほうが
速いと思います。

#質問された方がSMTPによる実装も試してみて
#どう変わったか報告してくれるとうれしいです。

SAWADA Hodaka wrote:
>>>>sendmailラッパーをたたくよりSMTPで渡したほうがpostfixサーバの
>>>>負荷は低くなるのでしょうか?
(snip)
> SMTP を一行一行 PHP でやりとりして、エラーを判断する処理と、
> sendmail を呼び出して戻値を判断するだけの処理では、
> 後者の方が圧倒的に簡単で、簡単が故にシステム全体として
> 高速であろうということを言いたかったのです。

「sendmail,postdrop,pickupのfork-exec処理+pipe I/O処理」と
「PHPで書かれたファイルの解釈+smtpdのfork-exec処理+SMTPのための
socket I/O処理」のどちらが重いかかという話だと思います。
エラー処理はすべてユーザーランドで行えますし、
処理内容は返り値のチェックと失敗メッセージ表示くらいだと
思いますのでかかる時間はそれらに比べると
無視できるほどに小さいのではないでしょうか。

ここで、Postfixのデーモン間のFile I/Oの処理と
質問者のプログラムとsendmailのPipe I/Oの処理と
質問者のプログラム(改)*1とsmtpdのSocket I/O処理と
にかかる時間がすべて同じだと仮定すると、
sendmailを使う場合の方がI/O処理が多く、fork-execの
回数も多いのでその分遅いと考えられます。

*1 質問者のプログラムが改変され、SMTPでPostfixと話すように
   なった場合

> 高負荷でとっても困っている元質問者のところで、
> これから SMTP をしゃべるための開発をするのは大丈夫かなと
> 納期とコストの心配をしてしまったので、本来の質問の意図からは
> はずれた返事をしてしまいました。

PHPライセンスのソフトウェアを使うことに問題が無ければ
SMTPを話すためのライブラリはPEARに入っていますから
そのような心配は要らないと思います。
PEARが駄目だったとしても返り値を決め打ちしてそれと違っていたら
エラーにするという実装にすれば簡単に実装できると思います。

--------------------------------------------------------------
Yoshisato YANAGISAWA @yanagisawa@xxxxxxxxxxxxxxxxxxx@
_______________________________________________
Postfix-jp-list mailing list
Postfix-jp-list@xxxxxxxxxxxxxxxxxxxx
http://lists.sourceforge.jp/mailman/listinfo/postfix-jp-list

References
[postfix-jp: 1050] /usr/sbin/sendmail をたたくのと、 SMTPをしゃべるのと、どちらが速いか?, Y.Watanabe
[postfix-jp: 1053] Re: /usr/sbin/sendmail をたたくのと、 SMTPをしゃべるのと、どちらが速いか?, SAWADA Hodaka
[postfix-jp: 1054] Re: /usr/sbin/sendmail をたたくのと、 SMTPをしゃべるのと、どちらが速いか?, Takahiro Kambe
[postfix-jp: 1055] Re: /usr/sbin/sendmail をたたくのと、 SMTPをしゃべるのと、どちらが速いか?, SAWADA Hodaka

[検索ページ] [Postfix-JP ML Home]