Amazon Simple Email Service
開發人員指南

以 Amazon SES 增加傳輸量

當傳送電子郵件時,您可以在最高傳送速率的允許範圍內以任意頻率呼叫 Amazon SES。(如需關於最高傳送速率的詳細資訊,請參閱 管理您的 Amazon SES 傳送限制。) 不過,每個對 Amazon SES 的呼叫需要花費時間來完成。

若您使用 Amazon SES API 或 SMTP 界面來對 Amazon SES 執行多重呼叫,建議您考慮以下使用秘訣,來協助您改善輸送量:

  • 測量您目前的效能來找出瓶頸 – 執行效能測試時可能需要在應用程式的程式碼迴圈中盡快傳送多封測試電子郵件。測量每個 SendEmail 請求的往返延遲。然後,以遞增的方式啟動相同的機器上其他應用程式的執行個體,並留意是否對網路延遲造成影響。您可能也需要在多部機器以及不同網路上執行此測試,以協助找出任何可能存在的機器資源瓶頸或網路瓶頸。

  • (僅適用於 API) 考慮使用持久性 HTTP 連線 – 與其為每次 API 請求花費個別建立新 HTTP 連線的成本,您可以考慮採用持久性的 HTTP 連線。也就是重複使用相同的 HTTP 連接來執行多個 API 請求。

  • 考慮使用多個執行緒 – 當應用程式使用單一執行緒時,應用程式的程式碼將呼叫 Amazon SES API,接著同步等待 API 回應。傳送電子郵件通常是受到 I/O 限制的操作,而從多個執行緒來執行此任務將可提供更好的傳輸量。您可以依需求同時使用多個執行緒來傳送。

  • 考慮使用多個程序 – 使用多個程序有助於提高您的輸送量,因為您會有更多連線至 Amazon SES 的同時作用中連線。例如,您可以將想要傳送的電子郵件分隔至到多個儲存貯體,然後同時執行多個電子郵件傳送指令碼的執行個體。

  • 考慮使用本機郵件轉送 – 您的應用程式可以快速將訊息傳輸給本機電子郵件伺服器,有助於緩衝訊息並以非同步方式傳輸訊息至 Amazon SES。部分郵件伺服器支援傳遞並行,這表示即使您的應用程式以單一執行緒的方式產生電子郵件至郵件伺服器,郵件伺服器仍將在傳送給 Amazon SES 時使用多個執行緒。如需詳細資訊,請參閱 將 Amazon SES 與您的現有電子郵件伺服器整合

  • 考慮將您的應用程式託管在更接近 Amazon SES API 端點的位置 — 您可能會考慮將應用程式託管於接近 Amazon SES API 端點的資料中心,或託管在與 Amazon SES API 端點相同 AWS 區域的 Amazon EC2 執行個體。這有助於減少應用程式和 Amazon SES 之間的網路延遲,並可提升傳輸量。如需可使用 Amazon SES 的區域清單,請參閱 AWS General Reference中的 Amazon Simple Email Service (Amazon SES)

  • 考慮使用多部電腦 – 根據主機上的系統組態,同時連線到單一 IP 地址的 HTTP 連線數可能有所限制,因此可能會在您超過單一電腦上特定的同時連線數量時讓平行處理原則所帶來的好處受到限制。如果這是瓶頸所在,您可能會考慮使用多部機器來執行並行 Amazon SES 請求。

  • 考慮使用 Amazon SES 查詢 API,而非 SMTP 端點 – 使用 Amazon SES 查詢 API 可讓您使用單一網路呼叫來提交電子郵件傳送請求,而與 SMTP 端點連線的界面會涉及 SMTP 對話,其中包含多個網路請求 (例如 EHLO、MAIL FROM、RCPT TO、DATA、QUIT)。如需 Amazon SES 查詢 API 的詳細資訊,請參閱使用 Amazon SES API 來傳送電子郵件

  • 使用 Amazon SES 信箱模擬器來測試您的最大輸送量 – 若要測試任何您可以實作的變更,您可以使用信箱模擬器。信箱模擬器可協助您判斷系統的最大傳輸量,而且不會用盡您的每日傳送份額。如需關於信箱模擬器的詳細資訊,請參閱 在 Amazon SES 中測試電子郵件傳送

如果您是透過 SMTP 界面存取 Amazon SES,請參閱 Amazon SES SMTP 問題以了解可能影響輸送量的特定 SMTP 相關問題。