本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
透過 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 一般參考 中的 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 SESAPI傳送電子郵件」。
-
使用 Amazon SES 信箱模擬器來測試您的最大輸送量 - 若要測試任何您可以套用的變更,可以使用信箱模擬器。信箱模擬器可協助您判斷系統的最大傳輸量,而且不會用盡您的每日傳送份額。如需關於信箱模擬器的詳細資訊,請參閱 手動使用信箱模擬器。
如果您是透過 SMTP 界面存取 Amazon SES,請參閱「Amazon SES SMTP 問題」了解可能影響輸送量的具體 SMTP 相關問題。