Message Transfer Agent Tuning

 

The Message Transfer Agent (MTA) is used in Exchange organizations that contain both Exchange Server 5.5 and Exchange Server 2003. The MTA is used for all communications within a site, and possibly between sites, if site connectors using remote procedure calls (RPCs), or if X.400 connectors are deployed. The MTA also processes messages coming from or going to other messaging systems such as Lotus cc:Mail, Lotus Notes, Novell GroupWise, and Microsoft Mail.

It is recommended that all Exchange Server computers that route mail have the Exchange MTA Stacks service started. This is especially important in a mixed-mode environment where messages are transferred between Exchange Server 5.5 and Exchange Server 2003 and/or Exchange 2000 Server. Additionally, X.400 connectors and mailbox move operations require the MTA.

In Exchange Server 2003, the MTA places a much greater load on system resources (CPU, memory, and disk) than in Exchange Server 5.5, because all messages now go through the Store.exe process. You should consider this increased load when planning the size of your hardware. In a large mixed Exchange Server 5.5 and Exchange 2000 Server and/or Exchange Server 2003 site, you may want to divide your servers into different routing groups, and dedicate one of the Exchange 2003 servers to handling the Exchange 2000 Server and/or Exchange Server 2003 to Exchange Server 5.5 MTA communication. The other Exchange 2003 servers in the site can use this dedicated bridgehead server to send messages to the Exchange 5.5 servers, which reduces the MTA processing overhead.

In smaller organizations, the MTA process typically does not require manual tuning. For larger companies that have many servers in the same site, many sites in the organization, or earlier messaging connectors, consider tuning the following MTA registry parameters when running in Mixed Mode. After you have converted to Native Mode, you should remove these registry settings. Using the MTA tunings described below in a Native Mode Exchange organization decreases the performance of Exchange.

  • DB data buffers per object   This value is the number of database server buffers that are configured for each database object. More buffers require more memory, but they make it less likely for a database object to be rolled out to disk because of a lack of buffer space. For detailed instructions about how to set the registry value, see How to Set the DB Data Buffers per Object Registry Value.

  • Dispatcher threads   This value is the number of MTA Dispatcher threads, which are responsible for the processing of messages. This is multiplied by three for the three types of Dispatcher threads: Router, Fanout and Results. For detailed instructions about how to the registry value, see How to Set the Dispatcher Threads Registry Value.

  • Kernel threads   This value is the number of platform threads that handle the Presentation and Session level of the Open Systems Interconnection (OSI) stack. These threads are at the heart of MTA message processing. For detailed instructions about how to set the registry value, see How to Set the Kernel Threads Registry Value.

  • Max RPC Calls Outstanding   This value is the maximum number of RPC threads. This setting limits the maximum number of RPCs that are guaranteed to be processed at the same time. For detailed instructions about how to set the registry value, see How to Set the Max RPC Calls Outstanding Registry Value.

  • MDB users   This value defines the number of distinguished names to cache from the directory. For detailed instructions about how to set the registry value, see How to Set the MDB Users Registry Value.

  • RTS threads   This value is the number of platform threads that handle the reliable transfer service element (RTSE) level of the OSI stack. For detailed instructions about how to set the registry value, see How to Set the RTS Threads Registry Value.

  • TCP/IP control blocks   This value is the maximum number of concurrent RFC 1006 connections that are supported. This setting controls the number of buffers available for X.400 connections. For detailed instructions about how to set the registry value, see How to Set the TCP/IP Control Blocks Registry Value.

  • Transfer threads   This value is the number of MTA Transfer threads. It is multiplied by two for the two subtypes (Transfer In, Transfer Out) of Transfer threads. For detailed instructions about how to set the registry value, see How to Set the Transfer Threads Registry Value.

MSExchangeIS Registry Key Settings

When messages are received in the MTA from an Exchange 5.5 server or a previous gateway, they are handed off to the Store.exe process, and then they go to the advanced queuing engine. In environments in which many messages reach the MTA at the same time, it is a good idea to increase the number of processing threads between the Store.exe process and MTA. You can monitor the MTA to Store.exe process queue build-ups using either System Monitor or Exchange System Manager.

In smaller organizations, the MTA process typically does not require manual tuning. For larger companies that have many servers in the same site, many sites in the organization, or earlier messaging connectors, consider tuning the following MTA registry parameters when running in Mixed Mode. After you have converted to Native Mode, you should remove these registry settings. Using the MTA tunings described below in a Native Mode Exchange organization decreases the performance of Exchange.

  • Gateway In Threads   This defines the number of threads available for retrieving messages from the MTA process in the Store.exe process. For detailed instructions about how to set the Gateway In Threads registry value, see How to Set the Gateway In Threads Registry Value.

  • Gateway Out Threads   This defines the number of threads available for sending messages from the Store to the MTA process. For detailed instructions about how to set the Gateway Out Threads registry value, see How to Set the Gateway Out Threads Registry Value.

You should add these values to all private databases configured on the server. After you make this change, you must increase the Max RPC Calls Outstanding registry value for the MTA process. For detailed instructions about how to set the Max RPC Calls Outstanding registry value, see How to Set the Max RPC Calls Outstanding Registry Value. For more information, see the Microsoft Knowledge Base article 264075, "Description of MTA tuning when Exchange 5.5 coexists with Exchange 2000 Server or with Exchange Server 2003," (https://go.microsoft.com/fwlink/?LinkId=3052&kbid=264075).

MTA File Directories

By default, the Exchange MTA database and run directories are located under the path where Exchange Server 2003 is installed (drive:\Program Files\Exchsrvr\mtadata). On some servers, especially where Exchange is acting as a bridgehead server, you improve performance by relocating the MTA database on a fast disk array, such as a RAID0+1 partition. Do not attempt to relocate the MTA run directory because doing so can cause unwanted side effects.

You can use Exchange System Manager to relocate the MTA database (also known as the X.400 message queue directory) to a different location. For detailed instructions, see How to Move the MTA Database Directory.