*_size MTA Options

From MsgServerDocWiki

(Link to this page as [[* size MTA Options]])
Jump to: navigation, search



MTA internal table sizes (alias_hash_size, alias_member_size, channel_table_size, circuitcheck_paths_size, conversion_size, domain_hash_size, file_member_size, forward_data_size, fruits_size, general_data_size, host_hash_size, ldap_attr_name_hash_size, ldap_object_class_hash_size, map_names_size, options_hash_size, reverse_data_size, string_pool_size_N, wild_pool_size)

The MTA has a number of options that control internal MTA table sizes. These options do not normally need to be adjusted manually. Although they provide "starting points" (and maximums) for the sizes of various internal memory tables, the MTA will resize its internal tables as necessary when running. In particular, use of the imsimta cnbuild command will cause resizing to accomodate the current configuration size (and then all subsequently started processes will use the compiled configuration sizes). If a compiled configuration has not been created, then each process when it initially starts will need to do the resizing itself. Thus the penalty for not having "good" values set for these options is merely a little initial overhead---either overhead only for the imsimta cnbuild command when a compiled configuration is used, or overhead for each starting process when a compiled configuration is not used. In other words, the relevance of these options is limited mostly to "fine-tuning" memory usage, and providing a modest performance benefit for the imsimta cnbuild command (or for all starting processes if a compiled configuration is not in use).

For those who do wish to ensure that these options are set to values matching the MTA's real memory needs, using the imsimta cnbuild (UNIX or NT) utility, that is, using a command such as the UNIX command

# imsimta cnbuild -noimage_file -maximum -option_file

is usually the best approach (letting the MTA tell you what values it needs, rather than trying to guess values and manually set them yourself). The above command will output MTA options (stored in the MTA option file in an old-style configuration) with sizes adequate for the current configuration, plus some growth room. (Note that the above shown command does not actually compile the configuration using these sizes; that would require an additional imsimta cnbuild command. Rather, the above command determines appropriate sizing, and outputs corresponding MTA option values; such values could then be used in any subsequent MTA process invocation and in particular, in a subsequent imsimta cnbuild command.)

Since the MTA will resize its internal table sizes as needed, errors about exceeding table sizes are normally seen only if the MTA's more-or-less "hard" limits on resizing are reached. (The limits are established by the maximum.dat file and/or "hard" limits in the code.) And since the MTA's "hard" limits are very generous, exceeding the limits is usually an indication of either a configuration error of a type that has confused the MTA about the intended meaning of certain configuration inputs (for instance, an extraneous blank line in the rewrite rules, causing the MTA to attempt to interpret all remaining material as channel definitions), or configuration choices involving poor use of MTA facilities that would be better handled in an alternate manner (such as attempting to hard code many thousands of mapping table entries, rather than using a few general entries that do general database callouts for the specific fields). In particular, reaching the limits specified in the normal maximum.dat file is usually an indication of poor configuration choices; you should contact Sun if you believe you wish to exceed those limits, as you may be better served by alternate configuration tactics.

Note: Historically, the default values, maximum size achievable through automatic resizing, and "hard" limits for these options have been prone to change (particularly increase) during and especially between releases, to a rather greater extent than for most other options. So although a diligent attempt has been made to provide correct numbers as of press time, the on-going quest to improve performance and scalability may mean that these documented values become out-of-date.

alias_hash_size (integer <= 1,000,000)

This option sets the size of the alias hash table. This in turn is an upper limit on the number of aliases that can be defined in the alias file. The default is 256; the maximum that the MTA will allow with normal, automatic resizing is 15,000 (controlled from the maximum.dat file); the "hard" maximum value allowed is 1,000,000. Attempts to set this option higher than 1,000,000 will result in an mm_init error, "alias_hash_size exceeds maximum". Attempts to specify more aliases in the alias file than allowed by this option's maximum (normally the automatic, resize maximum, unless a higher maximum has been explicited configured for this option) will result in an mm_init error, "no room in table for alias ...".

alias_member_size (integer <= 40,000)

This option controls the size of the index table that contains the list of alias translation value pointers. The total number of addresses on the right hand sides of all the alias definitions in the alias file cannot exceed this value. The default is 320; the maximum allowed with normal, automatic resizing is 30,000 (controlled from the maximum.dat file); the "hard" maximum allowed is 40,000. Attempts to set this option higher than 40,000 will result in an mm_init error, "alias_member_size exceeds maximum". Attempts to specify more alias translation values than allowed by the maximum for this option (normally, the automatic, resizing maximum, unless a higher maximum has been explicitly configured) will result in an mm_init error, "no room in alias member table for alias ...".

channel_table_size (integer <= 8,192)

This option controls the size of the channel table. The total number of channels in the configuration file cannot exceed this value. The default is 256; the maximum that the MTA will allow with normal, automatic resizing is 2500 (controlled from the maximum.dat file); the "hard" maximum (only achievable via explicit manual configuration) is 8,192. Attempts to set this option higher than 8,192 will result in an mm_init error, "channel_table_size exceeds maximum". Attempts to define more channels in the MTA configuration than allowed by this option's maximum (normally the automatic, resize maximum, unless a higher maximum has been explicitly configured) will result in an mm_init error, "no room in channel table for ...".

circuitcheck_paths_size (integer <= 256)

This option controls the size of the circuit check paths table, and thus the total number of circuit check configuration file entries. The default is 10; the maximum allowed with normal, automatic resizing is 128 (controlled from the maximum.dat file); the "hard" maximum is 256. Attempts to set this option higher than 256 will result in using the value 256 (with no error message).

conversion_size (integer <= 2,000)

This option controls the size of the conversion entry table, and thus the total number of conversion file entries cannot exceed this number. The default is 32; the maximum allowed with normal, automatic resizing is 500 (controlled from the maximum.dat file); the "hard" maximum is 2,000. Attempts to set this option higher than 2,000 will result in using the value 2,000 (with no error message).

domain_hash_size (integer <= 1,000,000)

This option controls the size of the domain rewrite rules hash table. Each rewrite rule in the configuration file consumes one slot in this hash table, thus the number of rewrite rules cannot exceed this option's value. The default is 512; the maximum allowed with normal, automatic resizing is 16,384 (controlled from the maximum.dat file); the "hard" maximum number of rewrite rules allowed is 1,000,000. Attempts to set this option higher than 1,000,000 will result in an mm_init error, "domain_hash_size exceeds maximum". Attempts to specify more rewrite rules than allowed by this option's maximum (normally the automatic, resizing maximum, unless a higher maximum has been explicitly configured) will result in an mm_init error, "no room in rewrite rule table for ...".

file_member_size (integer <= 8,192)

The default is 32; the "hard" maximum is 8,192. Attempts to set this option higher than 8,192 will result in an mm_init error, "file_member_size exceeds maximum". Attempts to use more configuration files than allowed by this option's maximum (normally the automatic, resizing maximum, unless a higher maximum has been explicitly configured) will result in an mm_init error, "no room in file member table for file string ...".

forward_data_size (integer <= 1,000,000)

This option sets the internal hash size for the forward (database) text file entries. The default is 64; the "hard" maximum is 1,000,000. Attempts to set this option higher than 1,000,000 will result in an mm_init error, "forward_data_size exceeds maximum". Attempts to specify more forward database entries than allowed by this option's maximum will result in an mm_init error, "no room in table for forward data ...".

fruits_size (integer <= 20,000)

The fruits_size option controls the total number of fruits allowed in the fruit validation table. The default is 110; the maximum value allowed is 20,000.

general_data_size (integer <= 1,000,000)

This option controls the internal hash size for the general (database) text file entries. The default is 256; the "hard" maximum is 1,000,000 -- or as of JES MS 6.3 2,000,000. Attempts to set this option higher than its hard maximum (1,000,000 or 2,000,000, depending upon version) will result in an mm_init error, "general_data_size exceeds maximum". Attempts to specify more entries in the general database than this option's maximum will result in an mm_init error, "no room in table for general data ...".

host_hash_size (integer <= 1,000,000)

This option controls the size of the channel hosts hash table. Each channel host specified on a channel definition in the MTA configuration file (both official hosts and aliases) consumes one slot in this hash table, so the total number of channel hosts cannot exceed the value specified. The default is 512; the maximum allowed with normal, automatic resizing is 16384 (controlled from the maximum.dat file); the "hard" maximum value allowed is 1,000,000. Attempts to set this option higher than 1,000,000 will result in an mm_init error, "host_hash_size exceeds maximum". Attempts to specify more rewrite rules than allowed by this option's maximum (normally the automatic resizing maximum, unless a higher maximum has been explicitly configured) will result in an mm_init error, "no room in channel host table for ...". In particular, note the following. In its literal meaning, the "no room in channel host table for ..." error indicates that your configuration's current MTA internal table sizes are not large enough for the number of host names listed in your channel definitions. However, note that an extraneous blank line in the rewrite rules (upper portion) of your MTA configuration file causes the MTA to interpret the remainder of the configuration file as channel definitions; with just one such extraneous blank line, the MTA sees just one extra channel but with a lot of (all the rest of the rewrite rules as) host names on that channel. So check the line of the file that the error is complaining about: if it is not truly intended as a host name on a channel definition but rather is a line in the rewrite rules section of your configuration file, then check for an extraneous blank line somewhere above it.

ldap_attr_name_hash_size (positive integer <=1,000,000)

The ldap_attr_name_hash_size option specifies the size of the internal table of LDAP attribute names. The default is 64; the maximum value allowed is 1,000,000. Attempts to set this option's value higher than the maximum of 1,000,000 will result in an mm_init error, "ldap_attr_name_hash_size exceeds maximum". Attempts to use more LDAP attributes than this option's maximum will result in an mm_init error, "Unable to expand LDAP attribute name hash table". If a system does not have enough memory to allocate the space required by this option's value, then an mm_init error will result, "Unable to allocate LDAP attribute name hash array.".

ldap_object_class_hash_size (integer <= 1,000,000)

This option controls the size of the internal table of LDAP object classes known to the MTA. The default is 64; the maximum is 1,000,000. Attempts to set this option to more than its maximum value of 1,000,000 will result in an mm_init error, "ldap_object_class_hash_size exceeds maximum". Attempts to specify more LDAP object classes than are permitted by this option's maximum will result in an mm_init error, "Unable to expand LDAP object class hash table". If a system has insufficient memory to allocate the space required by this option's value, then an mm_init error will result, "Unable to allocate LDAP object class hash array.".

map_names_size (positive integer <= 1,000,000)

The map_names_size option specifies the size of the mapping table name table, and thus the total number of mapping tables cannot exceed this number. The default is 32; the maximum allowed with normal, automatic resizing is 5000 (controlled from the maximum.dat file); the "hard" maximum is 1,000,000. Attempts to this option higher than its maximum of 1,000,000 will result in an mm_init error, "map_names_size exceeds maximum". Attempts to specify more mapping tables than allowed by this option's maximum (normally the automatic resizing maximum, unless a higher maximum has been explicitly configured) will result in an mm_init error, "no room in table for mapping named ...". In particular, note the following. In its literal meaning, the "no room in table for mapping named ..." error indicates that your configuration's current MTA internal table sizes are not large enough for your current number of mapping tables. However, also note that formatting errors in the MTA mapping file can cause the MTA to think that you have more mapping tables than you really have; for instance, check that mapping table entries are all properly indented.

options_hash_size (integer <= 1,000,000)

This option sets the internal hash size for MTA options (option.dat options). The default is 512; the maximum is 1,000,000. Attempts to set this option to more than its maximum 1,000,000 will result in an mm_init error, "options_hash_size exceeds maximum".

reverse_data_size (integer <= 1,000,000)

This option controls the internal hash size for the reverse (database) text file entries. The default is 256; the maximum is 1,000,000. Attempts to set this option's value to higher than its maximum of 1,000,000 will result in an mm_init error, "reverse_data_size exceeds maximum". Attempts to specify more entries in the reverse (database) text file than this option's maximum will result in an mm_init error, "no room in table for reverse data ...".

string_pool_size_0 (integer <= 50,000,000)

string_pool_size_1 (integer <= 50,000,000)

string_pool_size_2 (integer <= 50,000,000)

string_pool_size_3 (integer <= 50,000,000)

string_pool_size_4 (integer <= 50,000,000)

New in JES MS 6.0; (formerly, the single option string_pool_size controlled the total number of strings available to the MTA for general configuration use). The string_pool_size_n options control the number of character slots allocated to the string pools used to hold rewrite rule templates, alias list members, mapping entries, etc. A fatal error will occur if the total number of characters consumed by these parts of the configuration files exceed these limits. The default for each of these options is 32,000; the maximum allowed value for each of these options is 50,000,000 as of JS MS 6.3; (10,000,000 in JES MS 6.2 and earlier). Attempts to set any of these options' values higher than their respective maximums (of 10,000,000 each in earlier versions, or 50,000,000 each as of JS MS 6.3) will result in the maximum value (of 10,000,000, or 50,000,000 as of JES MS 6.3) being used, with no error message. string_pool_size_0 controls the string pool size for miscellaneous strings. string_pool_size_1 controls the string pool size for mapping tables. string_pool_size_2 controls the string pool size for aliases. string_pool_size_3 controls the string pool size for the general (database) text file. string_pool_size_4 controls the string pool size for personal conversions.

wild_pool_size (integer <= 200,000)

The wild_pool_size option controls the total number of patterns that may appear throughout mapping tables. A fatal error will occur if the total number of mapping patterns exceeds this limit. The default is 8,000; the maximum allowed with normal, automatic resizing is 100,000 (controlled from the maximum.dat file); the "hard" maximum allowed value is 200,000. Attempts to set this option's value higher than its maximum of 200,000 will result in a value of 200,000 being used, with no error message.

Personal tools