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

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



こんにちは。

In message <x64qfh7e1y.wl%hoda@xxxxxxxxxx>
	on Sat, 12 Mar 2005 12:12:25 +0900,
	SAWADA Hodaka <hoda@xxxxxxxxxx> wrote:
> > > ・sendmail ラッパー方式だと、再送処理を MTA に任せられる
> > > ・SMTP 方式だと再送処理を自前で実装しないといかん
> > ローカルのpostfixのSMTPサーバに渡せば良いだけですので、余程リソースが
> > 不足した状態や、Postfixの側の接続数の制限にひっかからない限り、再送処
> > 理は考える必要はないのでは?
> 
> 「再送処理」を持ち出してしまったことで、話をややこしくしてしまい
> 申し訳ありません。
再送処理は関係ないということでしょうか?

> > もしくは、そういう条件でエラーとなる場合は、エラーとして処理側も扱うべ
> > きでしょう。
> 
> SMTP を一行一行 PHP でやりとりして、エラーを判断する処理と、
> sendmail を呼び出して戻値を判断するだけの処理では、
> 後者の方が圧倒的に簡単で、簡単が故にシステム全体として
> 高速であろうということを言いたかったのです。
エラーを判断する処理は、SMTPの応答をメモリ上で比較するといった処理です
から、仮に多少複雑であったとしても性能に影響を与えるレベルまではいきま
せん。(マシンが VAX/730 とかだと、もう少し考えないといけませんが。)

メールを送ろうとする側の処理の簡単さだけで、トータルの性能を判断すると
いうのは、あまりに飛躍がありすぎます。sendmailをコマンドと起動してメー
ルを送信するより、SMTPで送信する方が有利な点は、

1. 既に別のメールでいわもとさんが書かれていましたように、1通のメールを
   Postfixが受け取るまでに関与するプロセスの数が圧倒的に少ないこと。

2. sendmailを起動するために、新しいプロセスを作成するという処理そのも
   のが、UNIX系OSでは非常にコストが掛かる処理であること。

3. SMTPで受けた場合もPostfixの側でsmtpdのプロセスを作成しますが、数度
   のメールのやりとりが続くといった場合は、前のPostfixのsmtpdが生き残っ
   ていて、実際はプロセスの作成が不要という場合もあります。

> いやちがうな。
あれ、違ったのですか。:-)

> 高負荷でとっても困っている元質問者のところで、
> これから SMTP をしゃべるための開発をするのは大丈夫かなと
> 納期とコストの心配をしてしまったので、本来の質問の意図からは
> はずれた返事をしてしまいました。
質問者の方は納期のことは心配されていなかったと思いますし、PHPを使用さ
れている場合、SMTPで送るようにする手直しはそんなに大変ではないでしょう。

このメールを書いている最中に柳澤さんのメールが届きましたが、SMTPを処理
するためのライブラリも存在しているのですから。

> となりの機械に SMTP 接続することで、
> web server と mail 送信 server を分割して
> 負荷を分散するなんていうのはいかがでしょうか。
負荷分散の手段としては、これもありでしょう。

元の質問者の方のメールでは「Apacheへの大量リクエスト」がサーバの負荷の
原因ということですから、こちらの負荷を(何らかの方法で)軽減することも検
討すべきでしょう。

何よりも、負荷が高いときに処理が遅くなる原因はどこにあるのか、処理待ち
しているプロセスの状況をtop(1)で確認するとか、仮想記憶やI/Oの状況を
vmstat(1)やiostat(1)のようなコマンドで調べるとか、現状を把握することが
もっとも必要ではないかと思います。

> あとは、「mail は即時に必ず届くという幻想を捨てる」という手もあります。
> これを言っちゃみもふたもありませんが、
前に電車の中での会話を聞いたんです。

A: 送ったメールが翌日になって届いたでぇ。
B: えー、すぐ届かなかったらメールの意味ないやん。
A: ほんまやぁ。

固まりそうになりましたが、おそらくは携帯電話のメールの話をされてたんだ
と思います。でも、Internetの電子メールに、そんなことを期待してはいけま
せん、何か別のサービスの利用を考えるべきです。

> 「15 分くらい待っても届かない場合は連絡を下さい」といった記述は、
> 書いておくべきかとは思います。
15分でも早すぎです!  様々な届かない原因はありますが、せめて数時間は待っ
てもらう必要はあります。

-- 
神戸 隆博 / Takahiro Kambe
_______________________________________________
Postfix-jp-list mailing list
Postfix-jp-list@xxxxxxxxxxxxxxxxxxxx
http://lists.sourceforge.jp/mailman/listinfo/postfix-jp-list

References
[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]