Sun Java System Messaging Server 6 2005Q4 管理指南

SMTP 通道執行緒

關鍵字:threaddepth,

多重執行緒 SMTP 用戶端會將不同目的地的郵件排序至不同的執行緒。threaddepth 關鍵字可用於指示多重執行緒的 SMTP 用戶端僅用任一執行緒處理指定數目的郵件,即使是均為同一目的地的郵件,仍使用額外的執行緒 (因此通常是在一個執行緒中處理所有的郵件)。此關鍵字預設為 10。

每當通道儲存區的增加量超過 threaddepth 的一倍時,工作控制器會嘗試增加處理量,專門用於處理該通道中已形成佇列的郵件。對於多重執行緒通道,工作控制器會通知處理該通道郵件的任一工作啟動新的執行緒,如果所有工作所具有的執行緒都達到了該通道允許的最大數目 (tcp_* 通道之選項中的 MAX_CLIENT_THREADS),工作控制器會啟動新的程序。對於單一執行緒通道,會啟動新的程序。請注意,如果已達到該通道 (maxjobs) 或池的工作限制 (JOB_LIMIT),則工作控制器將不啟動新的工作。

實質上,threaddepth 可控制如何排程積極的工作。讓我們考量以下兩種不同情況:

(1) 一般 (外寄) SMTP 通道

(2) 轉寄至智慧主機的 SMTP 通道

工作控制器可排序目標主機指定其目標為特定通道的郵件,並排程工作以根據這些目標主機上的儲存區處理郵件。

第一個實例中有大量的目標主機,並且大多數目標主機的儲存區很小。許多執行緒將在那裡處於執行狀態,並且需要一切正常,但某些目標主機例如 aol、yahoo、hotmail 等可能無法正常運行,因為其中可能有大量的通訊流。如果執行緒深度為 128,則當儲存區達到 128 時,您才能向 yahoo 遞送另一個執行緒。但這是不夠的。

第二個實例中僅有一個目標主機,但可以將多個執行緒遞送至該主機。如果是所有執行緒均遞送至該主機,則預設值 10 就太小。

尤其通道連線的 SMTP 伺服器可處理多個同時連線時,可以使用 threaddepth 對常駐程式路由器 TCP/IP 通道 (一種連線單台特定 SMTP 伺服器的 TCP/IP 通道) 實現多執行緒。