MLサーバの高速化

いろいろなメーリングリストを運用してきた中で問題になることの1つとして、 配送速度があります。そのチューニングがうまくいっていないと、メンバー 100人程度のメーリングリストであっても、1つの投稿に対し、最後に配送を受 ける人が受けとるのが30分後、ということになることもあります。

ここでは、当サイトにおけるMLサーバの配送高速化について述べることにしま す。なお、MLサーバのプログラムとしては、fmlを用いています。

1 当初の環境

sendmail 8.9.3 + smtpfeed でした。OCN economy(128kbps)でしたが、そう不 満なく使えていました。100アドレス配送で約3分程度。その後、sendmail 8.11.2 にバージョンアップ(smtpfeedを使わない)にしても、5分はかかりませ んでした。

2 サーバ移転

今回のサーバ移転で、sendmail を 8.12.1 にバージョンアップしました。 sendmailは 8.12で高速化されていること、smtpfeed との連携が面倒そうだっ たことから、そのまま利用していたのですが、100アドレス配送になんと20分 ほどかかるようになってしまいました。

3 $MCI_SMTP_HOSTS

fmlのconfig.phで$MCI_SMTP_HOSTSを増やしてみました。 加えて、hostunknown のアドレスを削除しました。 結果、$MCI_SMTP_HOSTS=4 とすることで6分で配送が終了しました。 一応、文句がでない程度のスペックになったと言えましょう。

4 Postfix

しかし、回線帯域が増加したのに、配送に時間がかかるようになっている、と いう状況は変わりません。先日のDebugのイベントで qmailとPostfixの話が出ていたこともあり、どちらかに変更しよう、と思った わけですが、この2者を比較すると(私の感覚では)Postfixの方がホストやネッ トワーク(スロースタートや、アドレスならべかえなど)、管理者(qmailのconf はよくわからない)に優しいと思ったため、Postfixをとなりの(非力な)マシン にインストールし、fmlからの配送はそちらのsmtpdに投げるよう設定すると、 配送時間は2分弱となり、やっと元より高速になりました。

教訓

  1. sendmailは遅い
    まぁ分かりきってたことなんですけどね。 ただ、smtpfeedなしのsendmailで、OCNでは5分だったのがADSL化で20分になっ たのは、よくわかりません。回線の安定性がかなり違うのだろうか。
  2. $MCI_SMTP_HOSTSの調整で、ある程度の状況改善が可能
    sendmailが遅いのは、メンバーのアドレスを順々に送っていくからであり、特 にどこかでつっかえると、その後のメールも送信されなくなります。よって、 並列化してやれば早くなるのは当然。ただし、動的な並列化ではないので、つっ かえてる列はいつまでも止まるので、この程度までしか行きません。また、 sendmailやPostfixでは、MXが同じアドレスに一括送信する機能がありますが、 これは別の列に入ってしまえばもちろん効かなくなりますし、またホストへの 負荷も馬鹿にならなくなるので、あまり大きな値にするのはどうかと思います。 Celeron 800MHz, RAM 256MBのhostで20程度なら問題にはならないようですが。
  3. Postfixは早い
    上記の問題を解決しているので、Postfixは早いです。なお、$MCI_SMTP_HOSTS は小さく(100アドレスなら1でいいです)しておく方が高速になります(が、実 際にはわからない程度)。
  4. プロバイダに負荷を転嫁
    まぁこういう方法もありますが、怒られるのは嫌なので、今回は避けました。 だいたい、転嫁すれば早くなる、というものでもないでしょうけどね。

back


Mimori Yuki <mimori@puni.net>
$Id: index.html,v 1.2 2001/11/16 01:40:59 s-v Exp $