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 通道)中实现多线程可能会尤其有用。