人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

モバイルサイトの運用をしており、約10万会員に対しメール配信をしているのですが、配送中の負荷がボトルネックになっており、改善方法を模索しています。

現在のサーバの構成、と言うようなもんじゃないですが、postfix, postgres, apache, php がすべて1サーバに入っています。

同様のサイトで外部のメール配送エンジン(sendmagicなど)を導入することで改善した事例があるので、メール配送後にアクセスが集中したことによる負荷がメインではないことは確認済みです。vmstat などでの調査によると、特に disk に負荷がかかっているようです。

できる限り、アプリケーション側(PHP)での解決を望んでいますが、メールサーバを分け、SMTPを直接喋るのが良いのでしょうか。
私の認識では、アプリケーションと同じサーバに入っているMTAに mail関数 で配送を依頼するのと、SMTPで接続して HELO...QUIT するのとでは差はない、と認識していますが間違っていませんでしょうか。

また、よくあるモバイル向けメール配送エンジン流量調整をどのような方法で行い、高速大量配送(1IPで数万通/h)を実現しているのかについても、方法がわかればトライしたいと思っています。

よろしくお願いします。

●質問者: ariacompany
●カテゴリ:コンピュータ インターネット
✍キーワード:Apache MTA PHP postfix SMTP
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● hamster009
●16ポイント

これは製品ですか、こういう風にCPUの使用率を制限して、他に支障の出ないようにsendmail(postfix)を動かしたらどうですか?

http://hitachisoft.jp/Products/Sendmail/products/switch/index.ht...

製品を使わなくても、テクニック的にはもっと簡単にできると思うのですが。

◎質問者からの返答

すみません、書き漏れましたができれば現状の配信数をさらに増やしたい、つまり、より高速・大量を目指すこともしたいです。なので、稼働率を下げるのはちょっと違います。


2 ● hamster009
●16ポイント

このあたりのpostfixの設定で、メモリやプロセス数などを制限できるようなのですが。リソース制限および速度制限というところです。

http://www.kobitosan.net/postfix/jhtml/resource.html

◎質問者からの返答

postfix 自体のチューニングは詳しくないですが、

CPUの使用というよりは通信・ディスクに問題が出るんじゃないでしょうか。


3 ● hamster009
●16ポイント

これは一般的な設定での注意事項なので、サイト側が多量のメールを送る場合ではないのですが、留意点としてはやはりメモリやCPUの制限、プロセス数などが挙げられています。

http://www.math.kobe-u.ac.jp/~kodama/tips-postfix-load.html

◎質問者からの返答

いろいろありがとうございます。

少しプロセス数を絞ってみるなどの実験は必要そうですね。

もうちょっと設定まわり見直してみたいと思います。


4 ● hamster008
●8ポイント

postfixボトルネックの分析

http://www.kobitosan.net/postfix/trans-2.1/jhtml/QSHAPE_README.h...

たとえば、届かないメールがあると、キューにたまって何回も配送を試みるので、負荷がかかりやすくなる、これをなんとかするなどの話です。

◎質問者からの返答

ありがとうございます。

エラーメールは当然クリーニングしているので、届かないメールは最小限に抑えられています。


5 ● b-wind
●24ポイント

アプリケーションと同じサーバに入っているMTAに mail関数 で配送を依頼するのと、SMTPで接続して HELO...QUIT するのとでは差はない

技術的な差は当然あります。

mail 関数では sendmail 互換インターフェイスを使って(大抵 /usr/sbin/sendmail )送信するのに比べ、SMTP をしゃべる場合は当然 smtp デーモンと通信する事になります。

ただ、同一サーバー上にあるのであればその差はあまり大きくはありません。


現時点ではディスクに負荷がかかっているとの事なのでまずはディスクの増設をオススメします。

以下は qmail の例ですが、ログの書き込み負荷を抑えることで高速化を実現しています。

http://www.drk7.jp/MT/archives/001098.html


Postfix が原因となっているのであれば

/var/spool/postfix

以下とログの書き込みディレクトリを別ディスクにするだけでも効果はあると思われます。


また一般的な携帯あてのメール配信のコツですが、キャリア側では同一IPアドレスからのコネクションを絞っているような節があるので固定IPアドレスを複数用意しておき、それぞれのIPアドレスからのコネクション数は少なめに制限して並列に送る形を良く見ました。

この意味からは外部のメールサーバーに投げられるようにプログラムを変更しておけば対応が容易になる事が考えられます。

ただし、自分のやっていたのは半年以上前なので現状では変わっているかもしれません。

◎質問者からの返答

ありがとうございます。

同一サーバ上MTAでの負荷について確認できてよかったです。もちろん技術的な差はありますね^^;

ディスクの増設は確かに。。DBも動いていることを考えると、RAID5や10の検討もいいですね。

URLにある、tmpfs 化はやってみる価値ありそうだと思いました。この場合、ログについて設定しているようですが、/var/spool/postfix でも面白いかもしれません。

モバイルメール配信新でIPを複数用意する方法は知っていますが、「ひとつのIP」でもそれなりの通数をはくことができるというのが気になっています。

キャリアの機嫌をうかがって通数を調整しているようなのですが、方法は見当もつきません。。


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ