Sun Java System Messaging Server 6.3 管理指南

8.7 作业控制器

每次将邮件排入通道时,作业控制器均确保有一个运行的作业以传送该邮件。这可能涉及启动一个新作业进程、添加一个线程或只是通知一个作业已经在运行。如果因为已达到通道或池的作业限制而不能启动作业,则作业控制器将等待直到其他作业退出。不再超出作业限制时,作业控制器将启动其他作业。

通道作业在作业控制器内的处理池中运行。可以将池看作是一个运行通道作业的“地方”。池提供了一个计算区域,一组作业可以在其中运行而不与池外的作业竞争资源。有关池的详细信息,请参见10.4.8 作业控制器文件12.5.4 用于通道执行作业的处理池

通道的作业限制由 maxjobs 通道关键字确定。池的作业限制由池的 JOB_LIMIT 选项确定。

Messaging Server 通常尝试立即传送所有邮件。如果在第一次尝试传送邮件时未将其送出,则将延迟一段时间再次发送该邮件,该时间由相应的 backoff 关键字确定。一旦过了 backoff 关键字中指定的时间,就可以传送延迟的邮件,并且如果需要,将启动通道作业来处理该邮件。

内存中当前正在处理和等待处理的邮件的作业控制器数据结构,通常反映了存储在磁盘的 MTA 队列区域上的完整邮件文件集。但是,如果磁盘上待处理的邮件文件累计超出了作业控制器的内存中数据结构大小的限制,则作业控制器仅在内存中跟踪磁盘上的邮件文件总数的一部分。作业控制器仅处理那些它正在内存中跟踪的邮件。传送足够数量的邮件,释放足够的内存中存储空间后,作业控制器将通过扫描 MTA 队列区域以更新其邮件列表来自动刷新其内存中存储。然后作业控制器开始处理其他刚从磁盘检索的邮件文件。作业控制器自动执行对 MTA 队列区域的这些扫描。

以前,作业控制器按文件在队列目录中找到的顺序读取所有文件。现在,它一次读取几个通道队列目录。这会使在启动、重新启动时以及超出 max_messages 后的行为变得更为合理。一次读取的目录数由作业控制器选项 Rebuild_Parallel_Channel 控制。可以将其设置为 1 到 100 之间的任何值,默认值为 12。

如果您的站点日常要处理大量邮件,则您需要使用 MAX_MESSAGES 选项调整作业控制器。通过增大 MAX_MESSAGES 选项值来允许作业控制器使用更多内存,可以减少待处理邮件溢出作业控制器的内存中高速缓存的次数。这减少了作业控制器必须扫描 MTA 队列目录时有关的系统开销。但是请记住,当作业控制器必须要重建内存中高速缓存时,由于高速缓存增大,进程将花费更长时间。也请注意,因为每次启动或重新启动作业控制器时,它必须扫描 MTA 队列目录,所以大的待处理邮件意味着作业控制器的启动或重新启动将比没有此类待办事项存在时需要更多开销。

有关池和配置作业控制器的信息,请参见10.4.8 作业控制器文件12.5 配置邮件处理和传送

8.7.1 启动和停止作业控制器

要启动作业控制器,请执行以下命令:

start-msg job_controller

要关闭作业控制器,请执行以下命令:

stop-msg job_controller

要重新启动作业控制器,请执行以下命令:

imsimta restart job_controller

重新启动作业控制器与关闭当前运行的作业控制器再立即启动新的作业控制器具有同样效果。