スロットリングへの対処方法

スロットリングへの対処方法

サポートエンジニアの佐藤(@awwa500)です。
テスト環境でのメール送信テストを終え、いざ本番環境から一斉送信したところ遅延が発生してしまった!そんな経験をされた方はいらっしゃらないでしょうか?そんなときは「スロットリング」の可能性が疑われます。大切な本番送信でハマらないよう、今回の記事がご参考になれば幸いです。

スロットリングとは

一般的に受信サーバでは受信可能な通数に制限が設けられており、この制限の影響を受けてメールが遅延したり、届かなかったりすることを「スロットリング」と呼んでいます。この制限はスパム対策の一環で設けられており、大量のスパムメールから受信者を守るための措置です。

スロットリングが起きるとどうなるのか

では、スロットリングが起きるような状況では何が起きているのでしょうか?受信サーバの挙動とそれに対するSendGridの挙動について見ていきます。多くの受信サーバは、受信制限に達すると以下いずれかの挙動を示します。

こういった場合、SendGridは宛先サーバ側で一時的な問題が発生したものとみなして「Deferred」イベントを発生させて最長で72時間再送を試みます。再送期間を過ぎても宛先サーバが正常応答を返さない(メールを受け入れてくれない)場合、「Block」イベントを発生させて再送を諦めます。

Activity Feedでの見え方

Activity Feedでは、次のようなREASONを伴った「Deferred」イベントが確認できます。

  • 421 ※宛先サーバによってはこの後に詳細なエラーメッセージが入ることもある
  • error dialing remote address: dial tcp x.x.x.x:0->y.y.y.y:25: i/o timeout

前者のREASONが400番台の数字で始まるものは宛先サーバが返した応答内容です。一方、宛先サーバが応答を返さない場合、後者のようなタイムアウトが発生します。

Activity Feedでの見え方

Statsでの見え方

Statsは、次のような状態になります。

  • DELIVERED、BOUNCES、BLOCKS、各種DROPS、INVALID EMAILSの値を合計してもREQUESTSの値に届かない

これは、再送が継続しており送信結果が確定していないことを意味します。

Statsでの見え方

スロットリングが起こりやすい送信パターン

スロットリングの発生に一番大きな影響を与えるのは送信パターンです。送信実績が少ない状態で急激に送信通数を増加させると発生しやすくなります。

スロットリングが起こりやすい送信パターン

では、どのくらい急激に増やすとスロットリングが発生するのでしょうか?残念ながら、受信制限は宛先サーバによって異なるため、一概には言えません。このため、はじめてメールを送信する場合は特に慎重に進める必要があります。具体的な予防策については次のセクションでご紹介します。

スロットリングを予防するには

スロットリングを予防する一番の方法は、急激な送信通数の増加を避け、徐々に通数を増やしていくことです。SendGridではこのプロセスを「IPウォームアップ」と呼んでいます。多くの場合、適切にウォームアップすることで受信制限が緩和されていきます。具体的なウォームアップの進め方やスケジュール例などについてはチュートリアルをご覧ください。

また、IPウォームアップの前に忘れてはいけないのは「宛先リストのクリーニング」です。いくら慎重にウォームアップを行っても、クリーニングされていない宛先リストを使ってしまうと逆効果になる場合もあります。クリーニングの方法についてはこちらの記事をご覧ください。

スロットリングが発生してしまったら

さまざまな対策を行っても受信制限の厳しい宛先ではスロットリングが発生してしまうことがあります。通常、スロットリングが発生しただけでは大きな問題になることはありませんので、それ以上の新たな送信は控え、宛先サーバが受け入れてくれるまで待つようにしてください。

SendGridの再送挙動が落ち着いたら、一旦送信通数を減らして様子を見つつ徐々に増やすようにしてください。送信通数を増やしてもスロットリングの傾向が見られない場合はさらに通数を増やしても問題ありません。

なお、残念ながらSendGridの再送挙動を止めたり、再送タイミングを指定したりすることはできず、宛先サーバがいつ受信制限を緩和するかはわからないため、再送のタイミングによっては夜中にメールが届いてしまうことがあります。配送タイミングが重要なメールについては特にスロットリングの予防に注力することをお勧めします。

参考記事

最後にスロットリング関連でいくつか参考記事をご紹介します。