Note
Starting in MongoDB 8.0, LDAP authentication and authorization is deprecated. LDAP is available and will continue to operate without changes throughout the lifetime of MongoDB 8. LDAP will be removed in a future major release.
For details, see LDAP Deprecation.
Synopsis
MongoDB provides a number of configuration options that you can set using:
the
setParametercommand:db.adminCommand( { setParameter: 1, <parameter>: <value> } ) the
setParameterconfiguration setting:setParameter: <parameter1>: <value1> ... the
--setParametercommand-line option formongodandmongos:mongod --setParameter <parameter>=<value> mongos --setParameter <parameter>=<value>
For additional configuration options, see
Self-Managed Configuration File Options, mongod and
mongos.
Parameters
Authentication Parameters
allowRolesFromX509CertificatesAvailable for both
mongodandmongos.Default: true
A boolean flag that allows or disallows the retrieval of authorization roles from client X.509 certificates.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.
authenticationMechanismsAvailable for both
mongodandmongos.Specifies the list of authentication mechanisms the server accepts. Set this to one or more of the following values. If you specify multiple values, use a comma-separated list and no spaces. For descriptions of the authentication mechanisms, see Authentication on Self-Managed Deployments.
ValueDescriptionRFC 5802 standard Salted Challenge Response Authentication Mechanism using the SHA-1 hash function.
RFC 7677 standard Salted Challenge Response Authentication Mechanism using the SHA-256 hash function.
MongoDB TLS/SSL certificate authentication.
GSSAPI (Kerberos)
External authentication using Kerberos. This mechanism is available only in MongoDB Enterprise.
PLAIN (LDAP SASL)
External authentication using LDAP. You can also use
PLAINfor authenticating in-database users.PLAINtransmits passwords in plain text. This mechanism is available only in MongoDB Enterprise.OpenID Connect is an authentication layer built on top of OAuth2. This mechanism is available only in MongoDB Enterprise.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.For example, to specify both
PLAINandSCRAM-SHA-256as the authentication mechanisms, use the following command:mongod --setParameter authenticationMechanisms=PLAIN,SCRAM-SHA-256 --auth
authFailedDelayMsAvailable for both
mongodandmongos.Default: 0
Note
Enterprise Feature
Available in MongoDB Enterprise only.
The number of milliseconds to wait before informing clients that their authentication attempt has failed. This parameter may be in the range
0to5000, inclusive.Setting this parameter makes brute-force login attacks on a database more time-consuming. However, clients waiting for a response from the MongoDB server still consume server resources, and this may adversely impact benign login attempts if the server is denying access to many other clients simultaneously.
awsSTSRetryCountChanged in version 7.0: (Also starting in 6.0.7 and 5.0.18)
In previous versions, AWS IAM authentication retried only when the server returned an HTTP 500 error.
Available for both
mongodandmongos.Type: integer
Default: 2
For MongoDB deployments using AWS IAM credentials or AWS IAM environment variables.
Maximum number of AWS IAM authentication retries after a connection failure.
The following example sets
awsSTSRetryCountto15retries:mongod --setParameter awsSTSRetryCount=15 Alternatively, the following examples uses the
setParametercommand withinmongosh:db.adminCommand( { setParameter: 1, awsSTSRetryCount: 15 } )
clusterAuthModeAvailable for both
mongodandmongos.Set the
clusterAuthModeto eithersendX509orx509. Useful during rolling upgrade to use x509 for membership authentication to minimize downtime.For more information about TLS/SSL and MongoDB, see Configure
mongodandmongosfor TLS/SSL on Self-Managed Deployments and TLS/SSL Configuration for Clients .This parameter is only available at runtime. To set the parameter, use the
setParametercommand.db.adminCommand( { setParameter: 1, clusterAuthMode: "sendX509" } )
enableLocalhostAuthBypassAvailable for both
mongodandmongos.Default:
trueSpecify
0orfalseto disable localhost authentication bypass. Enabled by default.This parameter is only available at startup. To set the parameter, use the
setParametersetting.See Localhost Exception in Self-Managed Deployments for more information.
enforceUserClusterSeparationAvailable for both
mongodandmongos.Set to
falseto disable theO/OU/DCcheck whenclusterAuthModeiskeyFilein your configuration file. This allows clients possessing member certificates to authenticate as users stored in the$externaldatabase. The server won't start ifclusterAuthModeisn'tkeyFilein your configuration file.To set the
enforceUserClusterSeparationparameter tofalse, run the following command during startup:mongod --setParameter enforceUserClusterSeparation=false
JWKSMinimumQuiescePeriodSecsAvailable for both
mongodandmongos.Default: 60 seconds (1 minute)
Specifies the minimum time period that must pass between subsequent fetches of a given IdP's
JWKSetURIendpoint. If an RSA public key is changed multiple times within the quiesce period, that key may not work as expected for up to a minute unless the quiesce period is manually reduced. If this parameter is set to zero, there is no quiesce period and the key can be refreshed repeatedly.This parameter is available at both startup and runtime. To set the parameter, use the
setParametersetting.
KeysRotationIntervalSecAvailable for both
mongodandmongos.Default: 7776000 seconds (90 days)
Specifies the number of seconds for which an HMAC signing key is valid before rotating to the next one. This parameter is intended primarily to facilitate authentication testing.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.
ldapConnectionPoolHostRefreshIntervalMillisAvailable for
mongodonly.Default: 60000
The number of milliseconds in-between health checks of the pooled LDAP connections.
You can only set
ldapConnectionPoolHostRefreshIntervalMillisduring start-up, and cannot change this setting with thesetParameterdatabase command.
ldapConnectionPoolIdleHostTimeoutSecsAvailable for
mongodonly.Default: 300
The maximum number of seconds that the pooled connections to an LDAP server can remain idle before being closed.
You can only set
ldapConnectionPoolIdleHostTimeoutSecsduring start-up, and cannot change this setting with thesetParameterdatabase command.
ldapConnectionPoolMaximumConnectionsInProgressPerHostAvailable for
mongodonly.Changed starting in MongoDB versions 5.0.9 and 6.0.0 Changed default value to
2. In previous versions, the default is unset.Default: 2
The maximum number of in-progress connect operations to each LDAP server.
You can only set
ldapConnectionPoolMaximumConnectionsInProgressPerHostduring start-up, and cannot change this setting with thesetParameterdatabase command.
ldapConnectionPoolMaximumConnectionsPerHostAvailable for
mongodonly.Changed starting in MongoDB versions 5.0.9 and 6.0.0 Changed default value to
2147483647. In previous versions, the default is unset.Default: 2147483647
The maximum number of connections to keep open to each LDAP server.
You can only set
ldapConnectionPoolMaximumConnectionsPerHostduring start-up, and cannot change this setting during run time with thesetParameterdatabase command.
ldapConnectionPoolMinimumConnectionsPerHostAvailable for
mongodonly.Default: 1
The minimum number of connections to keep open to each LDAP server.
You can only set
ldapConnectionPoolMinimumConnectionsPerHostduring start-up, and cannot change this setting during run time with thesetParameterdatabase command.
ldapConnectionPoolUseLatencyForHostPriorityAvailable for
mongodonly.Default: true
A boolean that determines whether the LDAP connection pool (see
ldapUseConnectionPool) should use latency of the LDAP servers to determine the connection order (from lowest latency to highest).You can only set
ldapConnectionPoolUseLatencyForHostPriorityduring start-up, and cannot change this setting during run time with thesetParameterdatabase command.
ldapForceMultiThreadModeAvailable for both
mongodandmongos.Default: false
Enables the performance of concurrent LDAP operations.
Note
Only if you are certain that your instance of
libldapis safe to use in this mode, enable this flag. You may experience crashes of the MongoDB process if thelibldapversion you are using is not thread safe.You must use
ldapForceMultiThreadModeto use LDAP connection pool. To enable LDAP connection pool, setldapForceMultiThreadModeandldapUseConnectionPooltotrue.Tip
If you have any concerns regarding your MongoDB version, OS version or libldap version, please contact MongoDB Support.
ldapQueryPasswordAvailable for
mongodonly.Type: string
The password used to bind to an LDAP server. You must use
ldapQueryUserwith this parameter.If not set, mongod or mongos does not attempt to bind to the LDAP server.
ldapQueryUserAvailable for
mongodonly.Type: string
The user that binds to an LDAP server. You must use
ldapQueryPasswordwith this parameter.If not set, mongod or mongos does not attempt to bind to the LDAP server.
ldapRetryCountNew in version 6.1.
Available for
mongodonly.Type: integer
Default: 0
For MongoDB deployments using LDAP Authorization on Self-Managed Deployments.
Number of operation retries by the server LDAP manager after a network error.
For example, the following sets
ldapRetryCountto3seconds:mongod --ldapRetryCount=3 Or, if using the
setParametercommand withinmongosh:db.adminCommand( { setParameter: 1, ldapRetryCount: 3 } )
ldapShouldRefreshUserCacheEntriesNew in version 5.2.
Available for
mongodonly.Type: boolean
Default: true
For MongoDB deployments using LDAP Authorization on Self-Managed Deployments.
Starting in MongoDB 5.2, the update interval for cached user information retrieved from an LDAP server depends on
ldapShouldRefreshUserCacheEntries:If true, use
ldapUserCacheRefreshInterval.If false, use
ldapUserCacheInvalidationInterval.
You can only set
ldapShouldRefreshUserCacheEntriesduring startup in theconfiguration fileor with the--setParameteroption on the command line. For example, the following disablesldapShouldRefreshUserCacheEntries:mongod --setParameter ldapShouldRefreshUserCacheEntries=false
ldapUseConnectionPoolAvailable for both
mongodandmongos.Specifies whether MongoDB should use connection pooling when connecting to the LDAP server for authentication/authorization.
MongoDB uses the following default values:
true on Windows.
true on Linux where MongoDB Enterprise binaries are linked against
libldap_r.false on Linux where MongoDB Enterprise binaries are linked against
libldap.
You can only set
ldapUseConnectionPoolduring start-up, and cannot change this setting with thesetParameterdatabase command.
ldapUserCacheInvalidationIntervalChanged in version 5.2.
Available for
mongodonly.Default: 30 seconds
Note
Starting in MongoDB 5.2, the update interval for cached user information retrieved from an LDAP server depends on
ldapShouldRefreshUserCacheEntries:If true, use
ldapUserCacheRefreshInterval.If false, use
ldapUserCacheInvalidationInterval.
For use with MongoDB deployments using LDAP Authorization on Self-Managed Deployments.
The interval (in seconds) that the
mongodinstance waits between external user cache flushes. After MongoDB flushes the external user cache, MongoDB reacquires authorization data from the LDAP server the next time an LDAP-authorized user issues an operation.Increasing the value specified increases the amount of time MongoDB and the LDAP server can be out of sync, but reduces the load on the LDAP server. Conversely, decreasing the value specified decreases the time MongoDB and the LDAP server can be out of sync while increasing the load on the LDAP server.
ldapUserCacheRefreshIntervalNew in version 5.2.
Available for
mongodonly.Type: integer
Default: 30 seconds
Note
Starting in MongoDB 5.2, the update interval for cached user information retrieved from an LDAP server depends on
ldapShouldRefreshUserCacheEntries:If true, use
ldapUserCacheRefreshInterval.If false, use
ldapUserCacheInvalidationInterval.
For MongoDB deployments using LDAP Authorization on Self-Managed Deployments.
The interval in seconds that
mongodwaits before refreshing the cached user information from the LDAP server.The maximum interval is 86,400 seconds (24 hours).
For example, the following sets
ldapUserCacheRefreshIntervalto4000seconds:mongod --setParameter ldapUserCacheRefreshInterval=4000 Or, if using the
setParametercommand withinmongosh:db.adminCommand( { setParameter: 1, ldapUserCacheRefreshInterval: 4000 } )
ldapUserCacheStalenessIntervalNew in version 5.2.
Available for
mongodonly.Type: integer
Default: 90 seconds
For MongoDB deployments using LDAP Authorization on Self-Managed Deployments.
The interval in seconds that
mongodretains the cached LDAP user information after the last cache refresh.If more than
ldapUserCacheStalenessIntervalseconds elapse without a successful refresh of the user information from the LDAP server, thenmongod:Invalidates the cached LDAP user information.
Is unable to authenticate new sessions for LDAP users until
mongodconnects to the LDAP server and authorizes the LDAP user.Authorizes any existing sessions that use previously authenticated LDAP users if
mongodis unable to connect to the LDAP server. Whenmongodreconnects to the LDAP server,mongodensures the LDAP users are correctly authorized.
The maximum interval is 86,400 seconds (24 hours).
For example, the following sets
ldapUserCacheStalenessIntervalto4000seconds:mongod --setParameter ldapUserCacheStalenessInterval=4000 Or, if using the
setParametercommand withinmongosh:db.adminCommand( { setParameter: 1, ldapUserCacheStalenessInterval: 4000 } )
maxValidateMemoryUsageMBAvailable for
mongodonly.New in version 5.0.
Default: 200
The maximum memory usage limit in megabytes for the
validatecommand. If the limit is exceeded,validatereturns as many results as possible and warns that not all corruption might be reported because of the limit.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
ocspEnabledAvailable for both
mongodandmongos.Available on Linux and macOS.
Default: true
The flag that enables or disables OCSP.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.For example, the following disables OCSP:
mongod --setParameter ocspEnabled=false ... Starting in MongoDB 6.0, if
ocspEnabledis set totrueduring initial sync, all nodes must be able to reach the OCSP responder.If a member fails in the
STARTUP2state, settlsOCSPVerifyTimeoutSecsto a value that is less than5.
ocspStaplingRefreshPeriodSecsAvailable for both
mongodandmongos.Available on Linux.
The number of seconds to wait before refreshing the stapled OCSP status response. Specify a number greater than or equal to 1.
You can only set
ocspStaplingRefreshPeriodSecsduring startup in theconfiguration fileor with the--setParameteroption on the command line. For example, the following sets the parameter to 3600 seconds:mongod --setParameter ocspStaplingRefreshPeriodSecs=3600 ... Starting in MongoDB 5.0, the
rotateCertificatescommand anddb.rotateCertificates()method will also refresh any stapled OCSP responses.
oidcIdentityProvidersAvailable for
mongodonly.Changed in version 8.0: (Also available in 7.3 and 7.0)
Use this parameter to specify identity provider (IDP) configurations when using OpenID Connect Authentication.
oidcIdentityProvidersaccepts an array of zero or more identity provider (IDP) configurations. An empty array (default) indicates no OpenID Connect support is enabled.When more than one IDP is defined,
oidcIdentityProvidersuses thematchPatternfield to select an IDP. Array order determines the priority and the first IDP is always selected.Starting in MongoDB 8.0, when multiple identity providers (IDP) are defined, the
oidcIdentityProvidersparameter accepts duplicateissuervalues as long as theaudiencevalue is unique for each issuer. This is also available in versions 7.3 and 7.0.oidcIdentityProviders Fields
FieldNecessityTypeDescriptionissuerRequired
string
The issuer URI of the IdP that the server should accept tokens from. This must match the
issfield in any JWT used for authentication.Starting in MongoDB 8.0, when multiple identity providers (IDP) are defined, the
oidcIdentityProvidersparameter accepts duplicateissuervalues as long as theaudiencevalue is unique for each issuer. This is also available in versions 7.3 and 7.0.If you specify an unreachable issuer URI, MongoDB:
Logs a warning.
Continues server startup, which allows you to update the issuer URI.
Reattempts issuer contact. If MongoDB reaches the issuer URI and validates the access token, authentication succeeds. If the issuer URI remains unreachable, authentication fails.
Changed in version 8.0: (Also available in 7.3 and 7.0)
authNamePrefixRequired
string
Unique prefix applied to each generated
UserNameandRoleNameused in authorization.authNamePrefixcan only contain the following characters:alphanumeric characters (combination of
atozand0to9)hyphens (
-)underscores (
_)
matchPatternConditional
string
Regex pattern used to determine which IdP should be used.
matchPatternmatches against usernames. Array order determines the priority and the first IdP is always selected.matchPatternis required in some configurations, depending on how the user setssupportsHumanFlows:When only one IdP has
supportsHumanFlowsset totrue(the default),matchPatternsis optional.When multiple IdP's have
supportsHumanFlowsset totrue(the default), each of these requiresmatchPatterns.matchPatternsis optional for any IdP wheresupportsHumanFlowsis set tofalse.
This is not a security mechanism.
matchPatternserves only as an advisory to clients. MongoDB accepts tokens issued by the IdP whose principal names do not match this pattern.clientIdConditional
string
ID provided by the IdP to identify the client that receives the access tokens.
Required when
supportsHumanFlowsis set totrue(the default).audienceRequired
string
Specifies the application or service that the access token is intended for.
Starting in MongoDB 7.0, only one
audienceoidcIdentityProviders field can be specified for OIDC access tokens.audiencefields with empty arrays or arrays of multiple strings are invalid.When more than one IdP is defined, this must be a unique value for each configuration that shares an
issuer.requestScopesOptional
array[ string ]
Permissions and access levels that MongoDB requests from the IdP.
IMPORTANT: By default, clients such as Compass and
mongoshrequest theoidcandoffline_accessscopes from the IdP. If the IdP supports neitheroidcnoroffline_access, the client doesn't request them. If the IdP supportsoidcbut notoffline_access, you must re-authenticate frequently.principalNameOptional
string
The claim to be extracted from the access token containing MongoDB user identifiers.
The default value is
sub(stands forsubject).useAuthorizationClaimOptional
boolean
Determines if the
authorizationClaimis required. The default value istrue.If the
useAuthorizationClaimfield is set totrue, the server requires anauthorizationClaimfor the identity provider's config. This is the default behavior.If the
useAuthorizationClaimfield is set tofalse, theauthorizationClaimfield is optional (and ignored if provided). Instead, the server does the following:Searches the token for a claim whose name is listed in the
principalNameClaimfield. This is typically namedsub. For example:sub: "spencer.jackson@example.com"Constructs the internal username by concatenating the
authNamePrefix, a forward slash (/), and the contents of the claim identified byprincipalNameClaimwithin the access token. For example, with aauthNamePrefixfield value of "mdbinc", the internal username is:mdbinc/spencer.jackson@example.comLooks for the user with this username and authorizes the client with the roles:
{ user: "mdbinc/spencer.jackson@example.com", db: "$external" }
New in version 7.2: (Also available in 7.0.5)
authorizationClaimConditional
string
Required, unless
useAuthorizationClaimis set tofalse.Claim extracted from access token that contains MongoDB role names.
logClaimsOptional
array[ string ]
List of access token claims to include in log and audit messages upon authentication completion.
JWKSPollSecsOptional
integer
Frequency, in seconds, to request an updated JSON Web Key Set (JWKS) from the IdP. A setting of 0 disables polling.
When more than one IdP is defined, this must be the same value for each configuration that shares an
issuer.supportsHumanFlowsOptional
bool
Whether the OIDC provider supports human or machine workflows. This affects the
clientIdandmatchPatternfields.You may find it useful to set this field to
falsewith machine workload IdP's to allow them to omit theclientIdwhen it's unneeded.Default:
true.New in version 7.2.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.
opensslCipherConfigAvailable for both
mongodandmongos.Available on Linux only
With the use of native TLS/SSL libraries, the parameter
opensslCipherConfigis supported for Linux/BSD and no longer supported in Windows and macOS.Specify the cipher string for OpenSSL when using TLS/SSL encryption. For a list of cipher strings, see https://www.openssl.org/docs/man1.1.1/man1/ciphers.html. Multiple cipher strings can be provided as a colon-separated list.
Note
This parameter is only for use with TLS 1.2 or earlier. To specify cipher suites for use with TLS 1.3, use the
opensslCipherSuiteConfigparameter.This parameter is only available at startup. To set the parameter, use the
setParametersetting.The use of
TLSoptions is preferred overSSLoptions. The TLS options have the same functionality as theSSLoptions. The following example configures amongodwith aopensslCipherConfigcipher string of'HIGH:!EXPORT:!aNULL@STRENGTH':mongod --setParameter opensslCipherConfig='HIGH:!EXPORT:!aNULL@STRENGTH' --tlsMode requireTLS --tlsCertificateKeyFile Certs/server.pem
opensslCipherSuiteConfigAvailable for both
mongodandmongos.New in version 5.0.
Available on Linux only
Specify the list of supported cipher suites OpenSSL should permit when using TLS 1.3 encryption.
For a list of cipher suites for use with TLS 1.3, see https://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_set_cipher_list.html. Multiple cipher suites can be provided as a colon-separated list.
Note
This parameter is only for use with TLS 1.3. To specify cipher strings for use with TLS 1.2 or earlier, use the
opensslCipherConfigparameter.This parameter is only available at startup. To set the parameter, use the
setParametersetting.For example, the following configures a
mongodwith aopensslCipherSuiteConfigcipher suite of'TLS_AES_256_GCM_SHA384'for use with TLS 1.3:mongod --setParameter opensslCipherSuiteConfig='TLS_AES_256_GCM_SHA384' --tlsMode requireTLS --tlsCertificateKeyFile Certs/server.pem
opensslDiffieHellmanParametersAvailable for both
mongodandmongos.Available on Linux only
Specify the path to the PEM file that contains the OpenSSL Diffie-Hellman parameters when using TLS 1.2 or previous. Specifying the OpenSSL Diffie-Hellman parameters enables support for Ephemeral Diffie-Hellman (DHE) cipher suites during TLS/SSL encryption.
This parameter is not supported for use with TLS 1.3.
Ephemeral Diffie-Hellman (DHE) cipher suites (and Ephemeral Elliptic Curve Diffie-Hellman (ECDHE) cipher suites) provide Forward Secrecy. Forward Secrecy cipher suites create an ephemeral session key that is protected by the server's private key but never transmitted. This ensures that even if a server's private key is compromised, you cannot decrypt past sessions with the compromised key.
Note
If
opensslDiffieHellmanParametersis unset but ECDHE is enabled, MongoDB enables DHE using theffdhe3072Diffie-Hellman parameter, as defined in RFC-7919#appendix-A.2. Theffdhe3072is a strong parameter (specifically, size is greater than 1024). Strong parameters are not supported with Java 6 and 7 unless extended support has been purchased from Oracle.This parameter is only available at startup. To set the parameter, use the
setParametersetting.If for performance reasons, you need to disable support for DHE cipher suites, use the
opensslCipherConfigparameter:mongod --setParameter opensslCipherConfig='HIGH:!EXPORT:!aNULL:!DHE:!kDHE@STRENGTH' ...
pessimisticConnectivityCheckForAcceptedConnectionsAvailable on Linux only
Type: boolean
Default: false
When set to
true, instructs the server to check the connectivity of accepted connections before processing them and to immediately discard connections that the client terminates.Consider enabling this parameter on smaller instance types. You can use it when you want to trade a small amount of latency on new connection establishment for reduced server work when processing new connections that have already been closed on the client side.
saslauthdPathAvailable for both
mongodandmongos.Note
Available only in MongoDB Enterprise (except MongoDB Enterprise for Windows).
Specify the path to the Unix Domain Socket of the
saslauthdinstance to use for proxy authentication.This parameter is only available at startup. To set the parameter, use the
setParametersetting.
saslHostNameAvailable for both
mongodandmongos.saslHostNameoverrides MongoDB's default hostname detection for the purpose of configuring SASL and Kerberos authentication.saslHostNamedoes not affect the hostname of themongodormongosinstance for any purpose beyond the configuration of SASL and Kerberos.This parameter is only available at startup. To set the parameter, use the
setParametersetting.Note
saslHostNamesupports Kerberos authentication and is only included in MongoDB Enterprise. For more information, see the following:
saslServiceNameAvailable for both
mongodandmongos.Allows users to override the default Kerberos service name component of the Kerberos principal name, on a per-instance basis. If unspecified, the default value is
mongodb.This parameter is only available at startup. To set the parameter, use the
setParametersetting.saslServiceNameis only available in MongoDB Enterprise.Important
Ensure that your driver supports alternate service names.
scramIterationCountAvailable for both
mongodandmongos.Default:
10000Changes the number of hashing iterations used for all new
SCRAM-SHA-1passwords. More iterations increase the amount of time required for clients to authenticate to MongoDB, but makes passwords less susceptible to brute-force attempts. The default value is ideal for most common use cases and requirements.If you modify this value, it does not change the iteration count for existing passwords. The
scramIterationCountvalue must be5000or greater.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
For example, the following sets the
scramIterationCountto12000.mongod --setParameter scramIterationCount=12000 Or, if using the
setParametercommand withinmongosh:db.adminCommand( { setParameter: 1, scramIterationCount: 12000 } )
scramSHA256IterationCountAvailable for both
mongodandmongos.Default:
15000Changes the number of hashing iterations used for all new
SCRAM-SHA-256passwords. More iterations increase the amount of time required for clients to authenticate to MongoDB, but makes passwords less susceptible to brute-force attempts. The default value is ideal for most common use cases and requirements.If you modify this value, it does not change iteration count for existing passwords. The
scramSHA256IterationCountvalue must be5000or greater.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
For example, the following sets the
scramSHA256IterationCountto20000.mongod --setParameter scramSHA256IterationCount=20000 Or, if using the
setParametercommand withinmongosh:db.adminCommand( { setParameter: 1, scramSHA256IterationCount: 20000 } )
sslModeAvailable for both
mongodandmongos.Set the
net.ssl.modeto eitherpreferSSLorrequireSSL. Useful during rolling upgrade to TLS/SSL to minimize downtime.For more information about TLS/SSL and MongoDB, see Configure
mongodandmongosfor TLS/SSL on Self-Managed Deployments and TLS/SSL Configuration for Clients .This parameter is only available at runtime. To set the parameter, use the
setParametercommand.db.adminCommand( { setParameter: 1, sslMode: "preferSSL" } ) Tip
tlsClusterAuthX509OverrideAvailable for both
mongodandmongos.New in version 7.0.
Overrides the
clusterAuthX509configuration options.setParameter: tlsClusterAuthX509Override: "{ attributes: 'O=MongoDB, OU=MongoDB Server' }" The parameter supports
attributesandextensionValueoverrides.When the server authenticates connections from members, it analyzes the X.509 certificate to determine whether it belongs to a cluster member. If the server uses the
attributessetting or theattributesfield on thetlsClusterAuthX509Overrideparameter, it checks the Distinguished Name (DN) values of the certificate. If theextensionValuesetting or theextensionValuefield of thetlsClusterAuthX509Overrideparameter is set, it checks the extension values of the certificate. If it finds a match, it authorizes the connection as a peer.Use this parameter to rotate certificates when the new certificates have different attributes or extension values.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.
tlsModeAvailable for both
mongodandmongos.Set to either:
preferTLSrequireTLS
The
tlsModeparameter is useful during rolling upgrade to TLS/SSL to minimize downtime.This parameter is only available at runtime. To set the parameter, use the
setParametercommand.db.adminCommand( { setParameter: 1, tlsMode: "preferTLS" } ) For more information about TLS/SSL and MongoDB, see Configure
mongodandmongosfor TLS/SSL on Self-Managed Deployments and TLS/SSL Configuration for Clients .Tip
tlsOCSPStaplingTimeoutSecsAvailable for both
mongodandmongos.Available for Linux.
The maximum number of seconds the
mongod/mongosinstance should wait to receive the OCSP status response for its certificates.Specify an integer greater than or equal to (
>=) 1. If unset,tlsOCSPStaplingTimeoutSecsuses thetlsOCSPVerifyTimeoutSecsvalue.This parameter is only available at startup. To set the parameter, use the
setParametersetting.For example, the following sets the
tlsOCSPStaplingTimeoutSecsto 20 seconds:mongod --setParameter tlsOCSPStaplingTimeoutSecs=20 ...
tlsOCSPVerifyTimeoutSecsAvailable for both
mongodandmongos.Available for Linux and Windows.
Default: 5
The maximum number of seconds that the
mongod/mongosshould wait for the OCSP response when verifying server certificates.Specify an integer greater than or equal to (
>=) 1.This parameter is only available at startup. To set the parameter, use the
setParametersetting.For example, the following sets the
tlsOCSPVerifyTimeoutSecsto 20 seconds:mongod --setParameter tlsOCSPVerifyTimeoutSecs=20 ...
tlsUseSystemCAAvailable for
mongodonly.Type: boolean
Default: false
Specifies whether MongoDB loads TLS certificates that are already available to the operating system's certificate authority.
Important
When starting a
mongodinstance with TLS/SSL enabled, you must specify a value for the--tlsCAFileflag, thenet.tls.CAFileconfiguration option, or thetlsUseSystemCAparameter.--tlsCAFile,tls.CAFile, andtlsUseSystemCAare all mutually exclusive.This parameter is only available at startup. To set the parameter, use the
setParametersetting.For example, to set
tlsUseSystemCAtotrue:mongod --setParameter tlsUseSystemCA=true For more information about TLS/SSL and MongoDB, see Configure
mongodandmongosfor TLS/SSL on Self-Managed Deployments and TLS/SSL Configuration for Clients .
tlsWithholdClientCertificateAvailable for both
mongodandmongos.Default: false
A TLS certificate is set for a
mongodormongoseither by the--tlsClusterFileoption or by the--tlsCertificateKeyFileoption when--tlsClusterFileis not set. If the TLS certificate is set, by default, the instance sends the certificate when initiating intra-cluster communications with othermongodormongosinstances in the deployment. SettlsWithholdClientCertificateto1ortrueto direct the instance to withhold sending its TLS certificate during these communications. Use this option with--tlsAllowConnectionsWithoutCertificates(to allow inbound connections without certificates) on all members of the deployment.tlsWithholdClientCertificateis mutually exclusive with--clusterAuthMode x509.This parameter is only available at startup. To set the parameter, use the
setParametersetting.
tlsX509ClusterAuthDNOverrideAvailable for both
mongodandmongos.An alternative Distinguished Name (DN) that the instance can also use to identify members of the deployment.
For a MongoDB deployment that uses X.509 certificates for
clusterAuthMode, deployment members identify each other using X.509 certificates (net.tls.clusterFile, if specified, andnet.tls.certificateKeyFile) during intra-cluster communications. For members of the same deployment, theDNfrom their certificates must have the same Organization attributes (O's), the Organizational Unit attributes (OU's), and the Domain Components (DC's).If
tlsX509ClusterAuthDNOverrideis set for a member, the member can also use the override value when comparing theDNcomponents (O's,OU's, andDC's) of the presented certificates. That is the member checks the presented certificates against itsnet.tls.clusterFile/net.tls.certificateKeyFile. If the DN does not match, the member checks the presented certificate against thetlsX509ClusterAuthDNOverridevalue.Note
If set, you must set this parameter on all members of the deployment.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
You can use this parameter for a rolling update of certificates to new certificates that contain a new
DNvalue. See Rotate X.509 Certificates without clusterAuthX509 Attributes on Self-Managed Clusters.For more information about membership certificate requirements, see Member Certificate Requirements for details.
tlsX509ExpirationWarningThresholdDaysAvailable for both
mongodandmongos.Default : 30
mongod/mongoslogs a warning on connection if the presented X.509 certificate expires within30days of themongod/mongossystem clock. Use thetlsX509ExpirationWarningThresholdDaysparameter to control the certificate expiration warning threshold:Increase the parameter value to trigger warnings farther ahead of the certificate expiration date.
Decrease the parameter value to trigger warnings closer to the certificate expiration date.
Set the parameter to
0to disable the warning.
This parameter has a minimum value of
0.This parameter is only available at startup. To set the parameter, use the
setParametersetting.For more information on X.509 certificate validity, see RFC 5280 4.1.2.5.
userCacheInvalidationIntervalSecsAvailable for
mongosonly.Default: 30
On a
mongosinstance, specifies the interval (in seconds) at which themongosinstance checks to determine whether the in-memory cache of user objects has stale data, and if so, clears the cache. If there are no changes to user objects,mongoswill not clear the cache.This parameter has a minimum value of
1second and a maximum value of86400seconds (24 hours).This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
General Parameters
allowDiskUseByDefaultAvailable for
mongodonly.Default: True
Starting in MongoDB 6.0, pipeline stages that require more than 100 megabytes of memory to execute write temporary files to disk by default. These temporary files last for the duration of the pipeline execution and can influence storage space on your instance. In earlier versions of MongoDB, you must pass
{ allowDiskUse: true }to individualfindandaggregatecommands to enable this behavior.Individual
findandaggregatecommands can override theallowDiskUseByDefaultparameter by either:Using
{ allowDiskUse: true }to allow writing temporary files out to disk whenallowDiskUseByDefaultis set tofalseUsing
{ allowDiskUse: false }to prohibit writing temporary files out to disk whenallowDiskUseByDefaultis set totrue
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
mongod --setParameter allowDiskUseByDefault=false allowDiskUseByDefaultonly works onmongodnotmongos.mongosnever writes temporary files to disk. Use thesetParametercommand in amongoshsession that is connected to a runningmongodto change the value of the parameter while the server is running:db.adminCommand( { setParameter: 1, allowDiskUseByDefault: false } )
connPoolMaxConnsPerHostAvailable for both
mongodandmongos.Default: 200
Sets the maximum size of the legacy connection pools for outgoing connections to other
mongodinstances in the global connection pool. The size of a pool does not prevent the creation of additional connections, but does prevent a connection pool from retaining connections in excess of the value ofconnPoolMaxConnsPerHost.Note
The parameter is separate from the connections in TaskExecutor pools. See
ShardingTaskExecutorPoolMaxSize.Only adjust this setting if your driver does not pool connections and you're using authentication in the context of a sharded cluster.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.mongod --setParameter connPoolMaxConnsPerHost=250
connPoolMaxInUseConnsPerHostAvailable for both
mongodandmongos.Sets the maximum number of in-use connections at any given time for for outgoing connections to other
mongodinstances in the legacy global connection pool.By default, the parameter is unset.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.mongod --setParameter connPoolMaxInUseConnsPerHost=100
cursorTimeoutMillisAvailable for both
mongodandmongos.Default: 600000 (10 minutes)
Sets the expiration threshold in milliseconds for idle cursors before MongoDB removes them; specifically, MongoDB removes cursors that have been idle for the specified
cursorTimeoutMillis.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
For example, the following sets the
cursorTimeoutMillisto300000milliseconds (5 minutes).mongod --setParameter cursorTimeoutMillis=300000 Or, if using the
setParametercommand withinmongosh:db.adminCommand( { setParameter: 1, cursorTimeoutMillis: 300000 } ) Setting
cursorTimeoutMillisto less than or equal to0results in all cursors being immediately eligible for timeout. Generally, the timeout value should be greater than the average amount of time for a query to return results. Use tools like thecursor.explain()cursor modifier to analyze the average query time and select an appropriate timeout period.Warning
MongoDB cleans up orphaned cursors after the
cursorTimeoutMillisthreshold only if they are not tied to sessions.MongoDB cleans up cursors linked to sessions with the
localLogicalSessionTimeoutMinuteslifecycle, regardless of thecursorTimeoutMillisvalue. To handle long idle periods, useMongo.startSession()and refresh the session using therefreshSessionscommand. For details, see Refresh a Cursor withrefreshSessions.
fassertOnLockTimeoutForStepUpDownNew in version 5.3.
Available for both
mongodandmongos.Default: 15 seconds
Allows a server that receives a request to step up or step down, to terminate if it is unable to comply (for example due to faulty server disks) within the timeout. This enables a cluster to successfully elect a new primary node and thus continue to be available.
fassertOnLockTimeoutForStepUpDowndefaults to 15 seconds. To disable nodes from fasserting, setfassertOnLockTimeoutForStepUpDown=0.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example disables nodes from fasserting:
mongod --setParameter fassertOnLockTimeoutForStepUpDown=0
globalConnPoolIdleTimeoutMinutesAvailable for both
mongodandmongos.Sets the time limit that connection in the legacy global connection pool can remain idle before being closed.
By default, the parameter is unset.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.mongos --setParameter globalConnPoolIdleTimeoutMinutes=10
httpVerboseLoggingAvailable for both
mongodandmongos.Adds more verbose tracing for curl on Linux and macOS. Has no affect on Windows.
By default, the parameter is unset.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
mongos --setParameter httpVerboseLogging=true
indexBuildMinAvailableDiskSpaceMBNew in version 7.1.
Available for
mongodonly.Default: 500 MB
Sets the minimum available disk space in megabytes required for index builds.
Must be greater than or equal to 0 MB, and less than or equal to 8 TB. 0 disables the minimum disk space requirement.
A new index build cannot be started and a current index build is cancelled if the available disk space is below
indexBuildMinAvailableDiskSpaceMB.Warning
If you increase
indexBuildMinAvailableDiskSpaceMB, ensure your server has enough available disk space. Also, if you setindexBuildMinAvailableDiskSpaceMBtoo high, you might needlessly prevent index builds when there is enough available disk space andindexBuildMinAvailableDiskSpaceMBcould be set lower.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
indexBuildMinAvailableDiskSpaceMBto 650 MB:db.adminCommand( { setParameter: 1, indexBuildMinAvailableDiskSpaceMB: 650 } ) You can also set
indexBuildMinAvailableDiskSpaceMBat startup. For example:mongod --setParameter indexBuildMinAvailableDiskSpaceMB=650
indexMaxNumGeneratedKeysPerDocumentAvailable for both
mongodandmongos.New in version 5.3.
Default: 100000
Limits the maximum number of keys generated for a document to prevent out of memory errors. It is possible to raise the limit, but if an operation requires more keys than the
indexMaxNumGeneratedKeysPerDocumentparameter specifies, the operation will fail.This parameter is only available at startup. To set the parameter, use the
setParametersetting.
ingressAdmissionControllerTicketPoolSizeAvailable for
mongodonly.Default:
1000000Controls the maximum number of operations admitted concurrently to the ingress queue. The default value of
1000000represents the numerical equivalent of unbounded, which admits all incoming operations up to the default maximum connections that MongoDB allows.Increasing this value while there are operations waiting on the queue unblocks as many operations as the new pool size permits. Decreasing this value does not block any currently executing operations, but incoming controllable operations are blocked until there are tickets available.
mongod --setParameter ingressAdmissionControllerTicketPoolSize=100000 Warning
Avoid modifying
ingressAdmissionControllerTicketPoolSizeunless directed by MongoDB engineers. This setting has major implications across both WiredTiger and MongoDB.
ingressConnectionEstablishmentRateLimiterEnabledNew in version 8.2: (also available in 8.1.1 and 8.0.12)
Available for both
mongodandmongos.Type: boolean
Default:
falseDetermines whether rate limiting for new connection establishment is enabled. When enabled, MongoDB applies rate limiting to control the number of new connections that can be established per second.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
ingressConnectionEstablishmentRatePerSecNew in version 8.2: (also available in 8.1.1 and 8.0.12)
Available for both
mongodandmongos.Type: int32
Default: disabled
Minimum: 1
Specifies the maximum number of new connections that can be established per second when rate limiting is enabled.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
ingressConnectionEstablishmentBurstCapacitySecsNew in version 8.2: (also available in 8.1.1 and 8.0.12)
Available for both
mongodandmongos.Type: double
Default: disabled
Minimum: 1
Describes how many seconds worth of connection establishments that the server can admit before rate limiting begins. This allows the server to handle temporary bursts of connection requests that exceed the rate limit specified by
ingressConnectionEstablishmentRatePerSec.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
ingressConnectionEstablishmentMaxQueueDepthNew in version 8.2: (also available in 8.1.1 and 8.0.12)
Available for both
mongodandmongos.Type: int32
Default:
0(disabled)Specifies the maximum number of connection attempts in the connection establishment queue. After the queue reaches this number of connection attempts, the server rejects new connection attempts.
The default value of
0means that the server rejects all connections that will queue for establishment.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
ingressConnectionEstablishmentRateLimiterBypassNew in version 8.2: (also available in 8.1.1 and 8.0.12)
Available for both
mongodandmongos.Type: string array
Default:
[]Provides a list of IP addresses and CIDR ranges that the server must exempt from the connection establishment rate limits. This allows specific trusted clients to bypass rate limiting restrictions.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
maxIndexBuildMemoryUsageMegabytesAvailable for
mongodonly.Default (absolute): 200Minimum (absolute): 50Maximum (percent): 0.8Limits the amount of memory that simultaneous index builds on one collection may consume for their duration. The specified amount of memory is shared between all indexes built using a single
createIndexescommand or its shell helperdb.collection.createIndexes(). Increasing the limit improves sorting performance when the index build process generates and sorts index keys. The memory consumed by an index build is separate from the WiredTiger cache memory (seecacheSizeGB).Set this value to 0-0.8 to limit builds to a percentage of memory.
Set this value to 1.0 or greater to limit builds to an absolute number of megabytes.
If this setting allocates less than 50 MB,
mongoduses a minimum of 50 MB. If the percentage setting is greater than 0.8,mongoduses a maximum of 80% of available memory.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
maxNumActiveUserIndexBuildsAvailable for
mongodonly.Type: integer
Default: 3
Sets the maximum number of concurrent index builds allowed on the primary. This is a global limit that applies across all collections.
Increasing the value of
maxNumActiveUserIndexBuildsallows additional concurrent index builds at the cost of increased pressure on the WiredTiger cache.System indexes are not limited to
maxNumActiveUserIndexBuilds, however a system index build counts against the limit for user index builds.After the server reaches
maxNumActiveUserIndexBuilds, it blocks additional user index builds until the number of concurrent index builds drops below themaxNumActiveUserIndexBuildslimit. If an index build is blocked, the server logs this message:Too many index builds running simultaneously, waiting until the number of active index builds is below the threshold. This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following command sets a limit of 4 concurrent index builds:
db.adminCommand( { setParameter: 1, maxNumActiveUserIndexBuilds: 4 } ) See also:
notablescanAvailable for
mongodonly.Prevents running some collection scans when an index could be used, whether present or not. If
true, MongoDB will not execute queries that require a collection scan and will return an error. Exclusions include queries without filters and queries against capped collections, such as the oplog.Consider the following example which sets
notablescantotrueor true:db.adminCommand( { setParameter: 1, notablescan: true } ) Setting
notablescantotruecan be useful for testing application queries, for example, to identify queries that scan an entire collection and cannot use an index.To detect unindexed queries without
notablescan, consider reading the Analyze Query Performance section and using thelogLevelparameter,mongostatand profiling.Don't run production
mongodinstances withnotablescanbecause preventing collection scans can potentially affect queries in all databases, including administrative queries.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
Note
notablescandoes not allow unbounded queries that use a clustered index because the queries require a full collection scan. For more information, see Collection Scans.
reportOpWriteConcernCountersInServerStatusAvailable for
mongodonly.Default: false
A boolean flag that determines whether the
db.serverStatus()method andserverStatuscommand returnopWriteConcernCountersinformation. [1]mongod --setParameter reportOpWriteConcernCountersInServerStatus=true [1] Enabling reportOpWriteConcernCountersInServerStatuscan have a negative performance impact; specifically, when running without TLS.
slowConnectionThresholdMillisNew in version 6.3.
Available for both
mongodandmongos.Default: 100
Sets the time limit in milliseconds to log the establishment of slow server connections.
If a connection takes longer to establish than the
slowConnectionThresholdMillisparameter, an event is added to the log with the messagemsgfield set to"Slow connection establishment".This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
slowConnectionThresholdMillisto250milliseconds.mongod --setParameter slowConnectionThresholdMillis=250 Or, if using the
setParametercommand withinmongosh:db.adminCommand( { setParameter: 1, slowConnectionThresholdMillis: 250 } )
Warning
tcmallocAggressiveMemoryDecommit is deprecated in 8.0. MongoDB 8.0 uses an
updated version of tcmalloc that improves memory fragmentation and management.
See tcmalloc upgrade for more information. To release
memory back to the operating system, consider using tcmallocEnableBackgroundThread
instead.
tcmallocEnableBackgroundThreadAvailable for both
mongodandmongos.New in version 8.0.
Type: boolean
Default: true
If set to
true,tcmallocEnableBackgroundThreadcreates a background thread that periodically releases memory back to the operating system. The value oftcmallocReleaseRatedetermines the rate, in bytes per second, at which the background thread releases memory.Note
If
tcmallocEnableBackgroundThreadistrueandtcmallocReleaseRateis0, MongoDB still releases memory.For improved memory usage, we recommend using the default value of
true. To learn more about improvements to performance and memory management, see Upgraded TCMalloc.This parameter is only available at startup. To set the parameter, use the
setParametersetting.The following operation sets
tcmallocEnableBackgroundThreadtofalse:mongod --setParameter "tcmallocEnableBackgroundThread=false"
tcmallocReleaseRateAvailable for both
mongodandmongos.Changed in version 8.0.
Default: 0
Specifies the TCMalloc release rate in bytes per second. Release rate refers to the rate at which MongoDB releases unused memory to the system. If
tcmallocReleaseRateis set to0MongoDB doesn't release memory back to the system. Increase this value to return memory faster; decrease it to return memory slower.Note
If
tcmallocEnableBackgroundThreadistrueandtcmallocReleaseRateis0, MongoDB still releases memory.Starting in MongoDB 8.0, the default value of
tcmallocReleaseRateis reduced to0due to a tcmalloc upgrade that prioritizes CPU performance over memory release.In earlier versions, MongoDB used an older version of
tcmallocthat:Set the default
tcmallocReleaseRateto1.Accepted values for
tcmallocReleaseRatebetween0and10, inclusive.
Important
If you run MongoDB on a platform that uses
tcmalloc-gperfsuch as Windows, PPC, or s390x,tcmallocReleaseRatehas the same behavior as earlier MongoDB versions.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
To modify the release rate during run time, you can use the
setParametercommand. For example:db.adminCommand( { setParameter: 1, tcmallocReleaseRate: 2097152 } ) You can also set
tcmallocReleaseRateat startup time; for example:mongod --setParameter "tcmallocReleaseRate=2097152"
tcpFastOpenClientAvailable for both
mongodandmongos.Default:
trueLinux Operating System Only
Enables support for outbound TCP Fast Open (TFO) connections from the
mongod/mongosto a client. TFO requires both the client and themongod/mongoshost machine support and enable TFO.Linux operating systems running Linux Kernel 4.11 or later can support outbound TFO.
Set the value of
/proc/sys/net/ipv4/tcp_fastopento enable outbound TFO connections:1to enable only outbound TFO connections.3to enable inbound and outbound TFO connections.
This parameter has no effect if the host operating system does not support or is not configured to support TFO connections.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.Tip
tcpFastOpenQueueSizeAvailable for both
mongodandmongos.Default:
1024As part of establishing a TCP Fast Open (TFO) connection, the client submits a valid TFO cookie to the
mongod/mongosbefore completion of the standard TCP 3-way handshake. Themongod/mongoskeeps a queue of all such pending TFO connections.The
tcpFastOpenQueueSizeparameter sets the size of the queue of pending TFO connections. While the queue is full, themongod/mongosfalls back to the normal three-way handshake for incoming client requests and ignores the presence of TFO cookies. Once the queue size falls back below the limit, themongod/mongosbegins accepting new TFO cookies.Increasing the default queue size may improve the effect of TFO on network performance. However, large queue sizes also increase the risk of server resource exhaustion due to excessive incoming TFO requests.
Decreasing the default queue size may reduce the risk of resource server resource exhaustion due to excessive incoming TFO requests. However, small queue sizes may also reduce the effect of TFO on network performance.
The minimum queue size is
0. A queue of0effectively disables TFO.
This parameter has no effect on host operating systems that do not support or are not configured for TFO connections.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.
tcpFastOpenServerAvailable for both
mongodandmongos.Default:
trueEnables support for accepting inbound TCP Fast Open (TFO) connections to the
mongod/mongosfrom a client. TFO requires both the client andmongod/mongoshost machine support and enable TFO:- Windows
The following Windows operating systems support TFO:
Microsoft Windows Server 2016 and later.
Microsoft Windows 10 Update 1607 and later.
- macOS
- macOS 10.11 (El Capitan) and later support TFO.
- Linux
Linux operating systems running Linux Kernel 3.7 or later can support inbound TFO.
Set the value of
/proc/sys/net/ipv4/tcp_fastopento enable inbound TFO connections:Set to
2to enable only inbound TFO connections.Set to
3to enable inbound and outbound TFO connections.
This parameter has no effect if the host operating system does not support or is not configured to support TFO connections.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.Tip
ttlMonitorEnabledAvailable for
mongodonly.Default:
trueTo support TTL Indexes,
mongodinstances have a background thread that is responsible for deleting documents from collections with TTL indexes.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
To disable this worker thread for a
mongod, setttlMonitorEnabledtofalse, as in the following operations:db.adminCommand( { setParameter: 1, ttlMonitorEnabled: false } ) Alternately, you may disable the thread at startup time by starting the
mongodinstance with the following option:mongod --setParameter ttlMonitorEnabled=false Important
Do not run production
mongodinstances withttlMonitorEnableddisabled, except under guidance from MongoDB support. Preventing TTL document removal can negatively impact MongoDB internal system operations that depend on TTL Indexes.
watchdogPeriodSecondsAvailable for
mongodonly.Type: integer
Default: -1 (disabled)
Determines how frequent the Storage Node Watchdog checks the status of the monitored filesystems:
The
--dbpathdirectoryThe
journaldirectory inside the--dbpathdirectoryThe directory of
--logpathfileThe directory of
--auditPathfile
Valid values for
watchdogPeriodSecondsare:-1(the default), to disable/pause Storage Node Watchdog, orAn integer greater than or equal to 60.
Note
If a filesystem on a monitored directory becomes unresponsive, it can take a maximum of nearly twice the value of
watchdogPeriodSecondsto terminate themongod.If any of its monitored directory is a symlink to other volumes, the Storage Node Watchdog does not monitor the symlink target. For example, if the
mongodusesstorage.directoryPerDB: true(or--directoryperdb) and symlinks a database directory to another volume, the Storage Node Watchdog does not follow the symlink to monitor the target.
To enable Storage Node Watchdog,
watchdogPeriodSecondsmust be set during startup.mongod --setParameter watchdogPeriodSeconds=60 You can only enable the Storage Node Watchdog at startup. However, once enabled, you can pause the Storage Node Watchdog or change the
watchdogPeriodSecondsduring run time.Once enabled,
To pause the Storage Node Watchdog during run time, set
watchdogPeriodSecondsto -1.db.adminCommand( { setParameter: 1, watchdogPeriodSeconds: -1 } ) To resume or change the period during run time, set
watchdogPeriodSecondsto a number greater than or equal to 60.db.adminCommand( { setParameter: 1, watchdogPeriodSeconds: 120 } )
Note
It is an error to set
watchdogPeriodSecondsat run time if the Storage Node Watchdog was not enabled at startup time.
Logging Parameters
enableDetailedConnectionHealthMetricLogLinesNew in version 7.0.
Available for both
mongodandmongos.Type: boolean
Default: true
Determines whether to enable specific log messages related to cluster connection health metrics. If
enableDetailedConnectionHealthMetricLogLinesis set tofalse, the following log messages are turned off, but MongoDB still collects data on the cluster connection health metrics:Log MessageDescriptionAccepted TLS connection from peer
Indicates that the server successfully parsed the peer certificate during the TLS handshake with an accepted ingress connection.
Ingress TLS handshake complete
Indicates that the TLS handshake with an ingress connection is complete.
Hello completed
Indicates that the initial connection handshake completed on an incoming client connection.
MongoDB displays the log message only with the first
hellocommand.Auth metrics report
Specifies the completion of a step in the authentication conversation.
Received first command on ingress connection since session start or auth handshake
Indicates that an ingress connection received the first command that is not part of the handshake.
Slow network response send time
Indicates that the time spent, in milliseconds, to send the response back to the client over an ingress connection takes more time than the duration defined by the
slowMSserver parameter.Completed client-side verification of OCSP request
If the peer doesn't include an OCSP response to the TLS handshake when an egress TLS connection is established, the server must send an OCSP request to the certificate authority. MongoDB writes this log message when the certificate authority receives the OCSP response.
Slow connection establishment
Indicates that the time taken to send a response back to the client over an ingress connection takes longer than the threshold specified with the
slowConnectionThresholdMillisparameter. MongoDB also emits this log message when the connection establishment times out.Operation timed out while waiting to acquire connection
Indicates that an operation timed out while waiting to acquire an egress connection.
Acquired connection for remote operation and completed writing to wire
Indicates that the server took one millisecond or longer to write an outgoing request on an egress connection, counting from the instant when the connection establishes.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
logComponentVerbosityAvailable for both
mongodandmongos.Default: 0
Sets the verbosity levels of various components for log messages. The verbosity level determines the amount of Informational and Debug messages MongoDB outputs. [2]
The verbosity level can range from
0to5:0is the MongoDB's default log verbosity level, to include Informational messages.1to5increases the verbosity level to include Debug messages.
For a component, you can also specify
-1to inherit the parent's verbosity level.To specify the verbosity level, use a document similar to the following:
{ verbosity: <int>, <component1>: { verbosity: <int> }, <component2>: { verbosity: <int>, <component3>: { verbosity: <int> } }, ... } For the components, you can specify just the
<component>: <int>in the document, unless you are setting both the parent verbosity level and that of the child component(s) as well:{ verbosity: <int>, <component1>: <int> , <component2>: { verbosity: <int>, <component3>: <int> } ... } The top-level
verbosityfield corresponds tosystemLog.verbositywhich sets the default level for all components. The default value ofsystemLog.verbosityis0.The components correspond to the following settings:
Unless explicitly set, the component has the verbosity level of its parent. For example,
storageis the parent ofstorage.journal. That is, if you specify astorageverbosity level, this level also applies to:storage.journalcomponents unless you specify the verbosity level forstorage.journal.storage.recoverycomponents unless you specify the verbosity level forstorage.recovery.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
For example, the following sets the
default verbosity levelto1, thequeryto2, thestorageto2, and thestorage.journalto1.db.adminCommand( { setParameter: 1, logComponentVerbosity: { verbosity: 1, query: { verbosity: 2 }, storage: { verbosity: 2, journal: { verbosity: 1 } } } } ) You can also set parameter
logComponentVerbosityat startup time, passing the verbosity level document as a string.mongod --setParameter "logComponentVerbosity={command: 3}" mongoshalso provides thedb.setLogLevel()to set the log level for a single component. For various ways to set the log verbosity level, see Configure Log Verbosity Levels.[2] Starting in version 4.2, MongoDB includes the Debug verbosity level (1-5) in the log messages. For example, if the verbosity level is 2, MongoDB logs D2. In previous versions, MongoDB log messages only specifiedDfor Debug level.
logLevelAvailable for both
mongodandmongos.Default: 0 (informational)
Specify an integer between
0and5signifying the verbosity of the logging, where5is the most verbose. [3]This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets the
logLevelto2:db.adminCommand( { setParameter: 1, logLevel: 2 } ) [3] Starting in version 4.2, MongoDB includes the Debug verbosity level (1-5) in the log messages. For example, if the verbosity level is 2, MongoDB logs D2. In previous versions, MongoDB log messages only specifiedDfor Debug level.
maxLogSizeKBAvailable for both
mongodandmongos.Type: non-negative integer
Default: 10
Specifies the maximum size, in kilobytes, for an individual attribute field in a log entry; attributes exceeding this limit are truncated.
Truncated attribute fields print field content up to the
maxLogSizeKBlimit and excise field content past that limit, retaining valid JSON formatting. Log entries that contain truncated attributes append atruncatedobject to the end of the log entry.See log message truncation for more information.
A value of
0disables truncation entirely. Negative values for this parameter are not valid.Warning
Using a large value, or disabling truncation with a value of
0, may adversely affect system performance and negatively impact database operations.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets the maximum log line size to
20kilobytes:mongod --setParameter maxLogSizeKB=20
quietAvailable for both
mongodandmongos.Sets quiet logging mode. If
1,mongodwill go into a quiet logging mode which will not log the following events/activities:connection events;
the
dropcommand, thedropIndexescommand, thevalidatecommand; andreplication synchronization activities.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
Consider the following example which sets the
quietparameter to1:db.adminCommand( { setParameter: 1, quiet: 1 } )
redactClientLogDataAvailable for both
mongodandmongos.Type: boolean
Note
Enterprise Feature
Available in MongoDB Enterprise only.
Configure the
mongodormongosto redact any message accompanying a given log event before logging. This prevents the program from writing potentially sensitive data stored on the database to the diagnostic log. Metadata such as error or operation codes, line numbers, and source file names are still visible in the logs.Use
redactClientLogDatain conjunction with Encryption at Rest and TLS/SSL (Transport Encryption) to assist compliance with regulatory requirements.To enable log redaction at startup, you can either:
Start
mongodwith the--redactClientLogDataoption:mongod --redactClientLogData Set the
security.redactClientLogDataoption in the configuration file:security: redactClientLogData: true ...
You can't use the
--setParameteroption to setredactClientLogDataat startup.To enable log redaction on a running
mongodormongos, use the following command:db.adminCommand( { setParameter: 1, redactClientLogData : true } )
redactEncryptedFieldsNew in version 6.1.0.
Available for both
mongodandmongos.Type: boolean
Default:
trueConfigures
mongodandmongosto redact field values of encryptedBinarydata from all log messages.If the
redactClientLogDataparameter or thesecurity.redactClientLogDatasetting is set tofalseandredactEncryptedFieldsis set totrue(the default), encrypted fields are redacted from all log messages.If the
redactClientLogDataparameter orsecurity.redactClientLogDatasetting is set totrue, all fields are redacted, regardless of theredactEncryptedFieldssetting.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
suppressNoTLSPeerCertificateWarningAvailable for both
mongodandmongos.Type: boolean
Default: false
By default, a
mongodormongoswith TLS/SSL enabled andnet.ssl.allowConnectionsWithoutCertificates:truelets clients connect without providing a certificate for validation while logging an warning. SetsuppressNoTLSPeerCertificateWarningto1ortrueto suppress those warnings.This parameter is only available at startup. To set the parameter, use the
setParametersetting.The following operation sets
suppressNoTLSPeerCertificateWarningtotrue:db.adminCommand( { setParameter: 1, suppressNoTLSPeerCertificateWarning: true} )
traceExceptionsAvailable for both
mongodandmongos.Configures
mongodto log full source code stack traces for every database and socket C++ exception, for use with debugging. Iftrue,mongodwill log full stack traces.This parameter is only available at runtime. To set the parameter, use the
setParametercommand.Consider the following example which sets the
traceExceptionstotrue:db.adminCommand( { setParameter: 1, traceExceptions: true } )
Diagnostic Parameters
To facilitate analysis of the MongoDB server behavior by MongoDB engineers, MongoDB logs server statistics to diagnostic files at periodic intervals.
For mongod, the diagnostic data files are stored in the
diagnostic.data directory under the mongod instance's
--dbpath or storage.dbPath.
For mongos, the diagnostic data files, by default, are
stored in a directory under the mongos instance's
--logpath or systemLog.path directory. The diagnostic
data directory is computed by truncating the logpath's file
extension(s) and concatenating diagnostic.data to the remaining
name.
For example, if mongos has --logpath
/var/log/mongodb/mongos.log.201708015, then the diagnostic data
directory is /var/log/mongodb/mongos.diagnostic.data/ directory. To
specify a different diagnostic data directory for mongos,
set the diagnosticDataCollectionDirectoryPath parameter.
The following parameters support diagnostic data capture (FTDC):
Note
The default values for the diagnostic data capture interval and the maximum sizes are chosen to provide useful data to MongoDB engineers with minimal impact on performance and storage size. Typically, these values will only need modifications as requested by MongoDB engineers for specific diagnostic purposes.
diagnosticDataCollectionDirectoryPathAvailable for
mongosonly.Type: String
Warning
If Full Time Diagnostic Data Capture (FTDC) is disabled with
diagnosticDataCollectionEnabledor ifsystemLog.destinationis set tosyslog, you must restartmongosafter settingdiagnosticDataCollectionDirectoryPath.Specify the directory for the diagnostic directory for
mongos. If the directory does not exist,mongoscreates the directory.If unspecified, the diagnostic data directory is computed by truncating the
mongosinstance's--logpathorsystemLog.pathfile extension(s) and concatenatingdiagnostic.data.For example, if
mongoshas--logpath /var/log/mongodb/mongos.log.201708015, then the diagnostic data directory is/var/log/mongodb/mongos.diagnostic.data/.If the
mongoscannot create the specified directory, the diagnostic data capture is disabled for that instance.mongosmay not be able to create the specified directory if a file with the same name already exists in the path or if the process does not have permissions to create the directory.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
diagnosticDataCollectionDirectorySizeMBAvailable for both
mongodandmongos.Type: integer
Default:
250(500in sharded clusters)Specifies the maximum size, in megabytes, of the
diagnostic.datadirectory. If directory size exceeds this number, the oldest diagnostic files in the directory are automatically deleted based on the timestamp in the file name.Changed in version 8.0:
diagnosticDataCollectionDirectorySizeMBhas a default value of 400 MB formongosandmongodinstances used in sharded clusters.mongodinstances used in replica set or as standalone servers have a default value of 200 MB.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
For example, the following sets the maximum size of the directory to
250megabytes:mongod --setParameter diagnosticDataCollectionDirectorySizeMB=250 The minimum value for
diagnosticDataCollectionDirectorySizeMBis10megabytes.diagnosticDataCollectionDirectorySizeMBmust be greater than maximum diagnostic file sizediagnosticDataCollectionFileSizeMB.
diagnosticDataCollectionEnabledAvailable for both
mongodandmongos.Type: boolean
Default: true
Determines whether to enable the collecting and logging of data for diagnostic purposes. Diagnostic logging is enabled by default.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
For example, the following disables the diagnostic collection:
mongod --setParameter diagnosticDataCollectionEnabled=false
diagnosticDataCollectionFileSizeMBAvailable for both
mongodandmongos.Type: integer
Default: 10
Specifies the maximum size, in megabytes, of each diagnostic file. If the file exceeds the maximum file size, MongoDB creates a new file.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
For example, the following sets the maximum size of each diagnostic file to
20megabytes:mongod --setParameter diagnosticDataCollectionFileSizeMB=20 The minimum value for
diagnosticDataCollectionFileSizeMBis1megabyte.
diagnosticDataCollectionPeriodMillisAvailable for both
mongodandmongos.Type: integer
Default: 1000
Specifies the interval, in milliseconds, at which to collect diagnostic data.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
For example, the following sets the interval to
5000milliseconds or 5 seconds:mongod --setParameter diagnosticDataCollectionPeriodMillis=5000 The minimum value for
diagnosticDataCollectionPeriodMillisis100milliseconds.
Replication and Consistency
allowMultipleArbitersNew in version 5.3.
Available for
mongodonly.Type: boolean
Default: false
Specifies whether the replica set allows the use of multiple arbiters.
The use of multiple arbiters is not recommended:
Multiple arbiters prevent the reliable use of the majority write concern. MongoDB counts arbiters in calculating a membership majority, but arbiters do not store data. With the inclusion of multiple arbiters, it's possible for a majority write operation to return success before the write replicates to a majority of data bearing nodes.
Multiple arbiters allow replica sets to accept writes even when the replica set doesn't have sufficient secondaries for data replication.
For more information, see Concerns with Multiple Arbiters.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.mongod --setParameter allowMultipleArbiters=true
connectTimeoutMsAvailable for both
mongodandmongos.Type: integer
Default: 10000
Sets the connection timeout, in milliseconds, for the replica set monitor.
This parameter is only available at startup. If you set this parameter, it must be greater than or equal to 500.
The following example sets
connectTimeoutMsfor amongodinstance to 700 milliseconds:mongod --setParameter connectTimeoutMs=700
createRollbackDataFilesAvailable for
mongodonly.Type: boolean
Default: true
Flag that determines whether MongoDB creates rollback files that contains documents affected during a rollback.
By default,
createRollbackDataFilesistrueand MongoDB creates the rollback files.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
createRollbackDataFilesto false so that the rollback files are not created:mongod --setParameter createRollbackDataFiles=false During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, createRollbackDataFiles: false } ) For more information, see Collect Rollback Data.
disableSplitHorizonIPCheckNew in version 5.0.0.
Available for both
mongodandmongos.Type: boolean
Default: false
To configure cluster nodes for split horizon DNS, use host names instead of IP addresses.
Starting in MongoDB v5.0,
replSetInitiateandreplSetReconfigreject configurations that use IP addresses instead of hostnames.Use
disableSplitHorizonIPCheckto modify nodes that cannot be updated to use host names. The parameter only applies to the configuration commands.mongodandmongosdo not rely ondisableSplitHorizonIPCheckfor validation at startup. Legacymongodandmongosinstances that use IP addresses instead of host names can start after an upgrade.Instances that are configured with IP addresses log a warning to use host names instead of IP addresses.
To allow configuration changes using IP addresses, set
disableSplitHorizonIPCheck=trueusing the command line:/usr/local/bin/mongod --setParameter disableSplitHorizonIPCheck=true -f /etc/mongod.conf This parameter is only available at startup. To set the parameter, use the
setParametersetting.setParameter: disableSplitHorizonIPCheck: true
enableFlowControlAvailable for both
mongodandmongos.Type: boolean
Default: true
Enables or disables the mechanism that controls the rate at which the primary applies its writes with the goal of keeping the secondary members'
majority committedlag under a configurable maximum value.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
enableOverrideClusterChainingSettingNew in version 5.0.2.
Available for both
mongodandmongos.Type: boolean
Default: false
If
enableOverrideClusterChainingSettingistrue, replica set secondary members can replicate data from other secondary members even ifsettings.chainingAllowedisfalse.This parameter is only available at startup. To set the parameter, use the
setParametersetting.For example, to set the
enableOverrideClusterChainingSettingfor amongodinstance totrue:mongod --setParameter enableOverrideClusterChainingSetting=true
flowControlTargetLagSecondsAvailable for both
mongodandmongos.Type: integer
Default: 10
The target maximum
majority committedlag when running with flow control. When flow control is enabled, the mechanism attempts to keep themajority committedlag under the specified seconds. The parameter has no effect if flow control is disabled.The specified value must be greater than 0.
In general, the default settings should suffice; however, if modifying from the default value, decreasing, rather than increasing, the value may prove to be more useful.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
flowControlWarnThresholdSecondsAvailable for both
mongodandmongos.Type: integer
Default: 10
The amount of time to wait to log a warning once the flow control mechanism detects the majority commit point has not moved.
The specified value must be greater than or equal to 0, with 0 to disable warnings.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
heartBeatFrequencyMsAvailable for both
mongodandmongos.Type: integer
Default: 10000
When
replicaSetMonitorProtocolis set to'sdam',heartBeatFrequencyMsdetermines how long, in milliseconds, to wait betweenhellorequests.When
replicaSetMonitorProtocolis set to'streamable',heartBeatFrequencyMsdetermines how long, in milliseconds, to wait betweenhelloround trip time (RTT) measurements. RTT measurements are used in server selection.This parameter is only available at startup. If you set this parameter, it must be greater than or equal to 500.
The following example sets
heartBeatFrequencyMsin amongodinstance to 700 milliseconds:mongod --setParameter heartBeatFrequencyMs=700
initialSyncIndexBuildMemoryPercentageNew in version 8.2.
Available for
mongodonly.Type: double
Default: 10.0
The percentage of system memory that MongoDB allocates for index builds during initial sync. The amount of system memory used is bound by the values of
initialSyncIndexBuildMemoryMinMBandinitialSyncIndexBuildMemoryMaxMB.You can specify a value between
0.0and80.0, inclusive.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
For example, to set the
initialSyncIndexBuildMemoryPercentagefor amongodinstance to 40%:mongod --setParameter initialSyncIndexBuildMemoryPercentage=40
initialSyncIndexBuildMemoryMaxMBNew in version 8.2.
Available for
mongodonly.Type: integer
Default: 16384
The maximum amount of system memory, in megabytes, that MongoDB can use for index builds during initial sync.
You can specify a value between
50and10000000.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
For example, to set the
initialSyncIndexBuildMemoryMaxMBfor amongodinstance to 20000 MB:mongod --setParameter initialSyncIndexBuildMemoryMaxMB=20000
initialSyncIndexBuildMemoryMinMBNew in version 8.2.
Available for
mongodonly.Type: Integer
Default: 200
The minimum amount of system memory, in megabytes, that MongoDB can use for index builds during initial sync.
You can specify a value between
50and10000000.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
For example, to set the
initialSyncIndexBuildMemoryMinMBfor amongodinstance to 60 MB:mongod --setParameter initialSyncIndexBuildMemoryMinMB=60
initialSyncMethodNew in version 5.2.
Available for
mongodonly.Type: String
Default:
logicalAvailable only in MongoDB Enterprise.
Method used for initial sync.
Set to
logicalto use logical initial sync. Set tofileCopyBasedto use file copy based initial sync.This parameter only affects the sync method for the member on which it is specified. Setting this parameter on a single replica set member does not affect the sync method of any other replica set members.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.
initialSyncSourceReadPreferenceAvailable for
mongodonly.Type: String
The preferred source for performing initial sync. Specify one of the following read preference modes:
primaryPreferred(Default for voting replica set members)nearest(Default for newly added or non-voting replica set members)
If the replica set has disabled
chaining, the defaultinitialSyncSourceReadPreferenceread preference mode isprimary.You cannot specify a tag set or
maxStalenessSecondstoinitialSyncSourceReadPreference.If the
mongodcannot find a sync source based on the specified read preference, it logs an error and restarts the initial sync process. Themongodexits with an error if it cannot complete the initial sync process after10attempts. For more information on sync source selection, see Initial Sync Source Selection.initialSyncSourceReadPreferencetakes precedence over the replica set'ssettings.chainingAllowedsetting when selecting an initial sync source. After a replica set member successfully completes initial sync, it defers to the value ofchainingAllowedwhen selecting a replication sync source.This parameter is only available at startup. To set the parameter, use the
setParametersetting.
initialSyncTransientErrorRetryPeriodSecondsAvailable for both
mongodandmongos.Type: integer
Default: 86400
The amount of time in seconds a secondary performing initial sync attempts to resume the process if interrupted by a transient network error. The default value is equivalent to 24 hours.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
localLogicalSessionTimeoutMinutesAvailable for both
mongodandmongos.Type: integer
Default: 30
Warning
For testing purposes only
This parameter is intended for testing purposes only and not for production use.
The time in minutes that a session remains active after its most recent use. Sessions that have not received a new read/write operation from the client or been refreshed with
refreshSessionswithin this threshold are cleared from the cache. State associated with an expired session may be cleaned up by the server at any time.This parameter applies only to the instance on which it is set. To set this parameter on replica sets and sharded clusters, you must specify the same value on every member; otherwise, sessions will not function properly.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.For example, to set the
localLogicalSessionTimeoutMinutesfor a testmongodinstance to 20 minutes:mongod --setParameter localLogicalSessionTimeoutMinutes=20
localThresholdMsAvailable for both
mongodandmongos.Type: integer
Default: 15
Defines the length of the latency window used in server selection in milliseconds.
This parameter is only available at startup. If you set this parameter, it must be greater than or equal to 0.
The following example sets
localThresholdMsfor amongodinstance to 20 milliseconds:mongod --setParameter localThresholdMs=20
logicalSessionRefreshMillisAvailable for both
mongodandmongos.Type: integer
Default: 300000 (5 minutes)
The interval (in milliseconds) at which the cache refreshes its logical session records against the main session store.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.For example, to set the
logicalSessionRefreshMillisfor amongodinstance to 10 minutes:mongod --setParameter logicalSessionRefreshMillis=600000
maxAcceptableLogicalClockDriftSecsAvailable for both
mongodandmongos.Type: integer
Default: 31536000 (1 year)
The maximum amount by which the current cluster time can be advanced; specifically,
maxAcceptableLogicalClockDriftSecsis the maximum difference between the new value of the cluster time and the current cluster time. Cluster time is a logical time used for ordering of operations.You cannot advance the cluster time to a new value if the new cluster time differs from the current cluster time by more than
maxAcceptableLogicalClockDriftSecs.This parameter is only available at startup. To set the parameter, use the
setParametersetting.For example, to set the
maxAcceptableLogicalClockDriftSecsfor amongodinstance to 15 minutes:mongod --setParameter maxAcceptableLogicalClockDriftSecs=900
maxNumSyncSourceChangesPerHourAvailable for both
mongodandmongos.New in version 5.0.
Type: integer
Default: 3
Sync sources are evaluated each time a sync source is updated and each time a node fetches a batch of oplog entries. If there are more than
maxNumSyncSourceChangesPerHoursource changes in an hour, the node temporarily stops re-evaluating that sync source. If this parameter is set with a high value, the node may make unnecessary source changes.This parameter will not prevent a node from starting to sync from another node if it doesn't have a sync source. The node will re-evaluate if a sync source becomes invalid. Similarly, if the primary changes and chaining is disabled, the node will update to sync from the new primary.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
maxSessionsAvailable for both
mongodandmongos.Type: integer
Default: 1000000
The maximum number of sessions that can be cached.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.For example, to set the
maxSessionsfor amongodinstance to 1000:mongod --setParameter maxSessions=1000
mirrorReadsAvailable for
mongodonly.Type: Document
Default:
{ samplingRate: 0.01, maxTimeMS: 1000 }Specifies the settings for mirrored reads for the
mongodinstance. The settings only take effect when the member is a primary.The parameter
mirrorReadstakes a JSON document with the following fields:FieldDescriptionsamplingRateThe sampling rate used to mirror a subset of operations that support mirroring to a subset of electable (specifically,
priority greater than 0) secondaries. That is, the primary mirrors reads to each electable secondary at the specified sampling rate.Valid values are:
0.0Turns off mirroring.
1.0The primary mirrors all operations that supports mirroring to each electable secondary.
Number between
0.0and1.0(exclusive)The primary randomly samples each electable secondary at the specified rate to be sent mirrored reads.
For example, given a replica set with a primary and two electable secondaries and a sampling rate of
0.10, the primary mirrors reads to each electable secondary at the sampling rate of 10 percent such that one read may be mirrored to one secondary and not to the other or to both or to neither. That is, if the primary receives100operations that can be mirrored, the sampling rate of0.10may result in8reads being mirrored to one secondary and13reads to the other or10to each, etc.The default value is
0.01.maxTimeMSThe maximum time in milliseconds for the mirrored reads. The default value is
1000.The
maxTimeMSfor the mirrored reads is separate from themaxTimeMSof the original read being mirrored.targetedMirroringContains fields to configure how you target specific nodes for cache warming. For more information on targeted mirroring, see Targeted Mirrored Reads.
Includes the following fields:
tagDefaults to an empty
BSONObj. The replica set tag that you can use to target nodes for mirroring. You can configure a node for targeted mirroring using the following syntax:tag: { "<tag1>": "<string1>" }You can only supply one tag. All nodes within the same replica set that have these tags are targeted.
samplingRateType: Float
Range:
0.0to1.0(inclusive)The rate at which targeted reads are mirrored to the host or hosts. A rate of
0.0means no reads are mirrored, and a rate of1.0means all reads are mirrored. AlthoughsamplingRatedefaults to0.01, thetargetedMirroringfeature is off by default, since thetagfield defaults to empty.maxTimeMSType: int
The maximum time in milliseconds before the mirrored read times out. The minumum value for
maxTimeMSis0. Defaults to1000.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
If you specify from the configuration file or on the command line, enclose the
mirrorReadsdocument in quotes.For example, the following sets the mirror reads sampling rate to
0.10from the command line:mongod --setParameter mirrorReads='{ samplingRate: 0.10 }' Or, to specify in a configuration file:
setParameter: mirrorReads: '{samplingRate: 0.10}' Or if using the
setParametercommand in amongoshsession that is connected to a runningmongod, do not enclose the document in quotes:db.adminCommand( { setParameter: 1, mirrorReads: { samplingRate: 0.10 } } )
mirrorReadsMaxConnPoolSizeNew in version 8.2.
Type: int
Default: 4
Controls the maximum number of connections in the mirroring pool. This parameter affects both general and targeted mirrored reads.
mirrorReadsMaxConnPoolSizehas a minimum value of 1.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
oplogBatchDelayMillisNew in version 6.0.
Available for both
mongodandmongos.Type: integer
Default: 0
The number of milliseconds to delay applying batches of oplog operations on secondary nodes. By default,
oplogBatchDelayMillisis0, meaning oplog batches are applied with no delay. When there is no delay, MongoDB may apply frequent, small oplog batches to secondaries.Increasing
oplogBatchDelayMilliscauses MongoDB to apply oplog batches less frequently on secondaries, with each batch containing larger amounts of data. This reduces IOPS on secondaries, but adds latency for writes with write concern"majority".This parameter is only available at startup. To set the parameter, use the
setParametersetting.For example, run the following command to set the
oplogBatchDelayMillisfor amongodinstance to 20 milliseconds:mongod --setParameter oplogBatchDelayMillis=20
oplogFetcherUsesExhaustAvailable for
mongodonly.Type: boolean
Default: true
Enables or disables streaming replication. Set the value to
trueto enable streaming replication.Set the value to
falseto disable streaming replication. If disabled, secondaries fetch batches of oplog entries by issuing a request to their sync from source and waiting for a response. This requires a network roundtrip for each batch of oplog entries.This parameter is only available at startup. To set the parameter, use the
setParametersetting.
oplogInitialFindMaxSecondsAvailable for
mongodonly.Type: integer
Default: 60
Maximum time in seconds for a member of a replica set to wait for the
findcommand to finish during data synchronization.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
periodicNoopIntervalSecsAvailable for
mongodonly.Type: integer
Default: 10
The duration in seconds between noop writes on each individual node.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.Note
To modify this value for a MongoDB Atlas cluster, you must contact Atlas Support.
The following example sets the
periodicNoopIntervalSecsto 1 second at startup:mongod --setParameter periodicNoopIntervalSecs=1
replBatchLimitBytesAvailable for both
mongodandmongos.Default: 104857600 (100MB)
Sets the maximum oplog application batch size in bytes.
Values can range from 16777216 (16MB) to 104857600 (100MB) inclusive.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
replBatchLimitBytesto 64 MB to limit the oplog application batch size:mongod --setParameter replBatchLimitBytes=67108864 During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, replBatchLimitBytes: 64 * 1024 * 1024 } )
replicaSetMonitorProtocolAvailable for both
mongodandmongos.Type: string
Default: "streamable"
Determines which replica set monitor protocol to use. You can set this parameter to
"streamable", which is compliant with Server Discovery and Monitoring (SDAM) specification and allows for constanthellorequests. You can also set this parameter to"sdam", which is compliant with SDAM specification.This parameter is only available at startup.
The following example sets
replicaSetMonitorProtocolto"sdam"on amongodinstance:mongod --setParameter replicaSetMonitorProtocol='sdam'
replWriterMinThreadCountNew in version 5.0.
Available for
mongodonly.Type: integer
Default: 0
Minimum number of threads to use to apply replicated operations in parallel. Values can range from 0 to 256 inclusive. You can only set
replWriterMinThreadCountat startup and cannot change this setting with thesetParametercommand.Parallel application of replication operations uses up to
replWriterThreadCountthreads. IfreplWriterMinThreadCountis configured with a value less thanreplWriterThreadCount, the thread pool will timeout idle threads until the total count of threads in the thread pool is equal toreplWriterMinThreadCount.replWriterMinThreadCountmust be configured with a value that is less than or equal toreplWriterThreadCount.This parameter is only available at startup. To set the parameter, use the
setParametersetting.
replWriterThreadCountAvailable for
mongodonly.Type: integer
Default: 16
Maximum number of threads to use to apply replicated operations in parallel. Values can range from 1 to 256 inclusive. However, the maximum number of threads used is capped at twice the number of available cores.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.
rollbackTimeLimitSecsAvailable for
mongodonly.Type: 64-bit integer
Default: 86400 (1 day)
Maximum age of data that can be rolled back. Negative values for this parameter are not valid.
If the time between the end of the to-be-rolledback instance's oplog and the first operation after the common point (the last point where the source node and the to-be-rolledback node had the same data) exceeds this value, the rollback will fail.
To effectively have an unlimited rollback period, set the value to
2147483647which is the maximum value allowed and equivalent to roughly 68 years.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
TransactionRecordMinimumLifetimeMinutesAvailable for
mongodonly.Type: integer
Default: 30
The minimum lifetime a transaction record exists in the
transactionscollection before the record becomes eligible for cleanup.This parameter is only available at startup. To set the parameter, use the
setParametersetting.For example, to set the
TransactionRecordMinimumLifetimeMinutesfor amongodinstance to 20 minutes:mongod --setParameter TransactionRecordMinimumLifetimeMinutes=20
waitForSecondaryBeforeNoopWriteMSAvailable for
mongodonly.Type: integer
Default: 10
The length of time (in milliseconds) that a secondary must wait if the
afterClusterTimeis greater than the last applied time from the oplog. After thewaitForSecondaryBeforeNoopWriteMSpasses, if theafterClusterTimeis still greater than the last applied time, the secondary makes a no-op write to advance the last applied time.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets the
waitForSecondaryBeforeNoopWriteMSto 20 milliseconds:mongod --setParameter waitForSecondaryBeforeNoopWriteMS=20 During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, waitForSecondaryBeforeNoopWriteMS: 20 } )
Sharding Parameters
analyzeShardKeyCharacteristicsDefaultSampleSizeNew in version 7.0.
Available for
mongodonly.Type: integer
Default: 10000000
If
sampleRateandsampleSizeare not set when you runanalyzeShardKey, specifies the number of documents to sample when calculating shard key characteristics metrics. Must be greater than0.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
This example sets
analyzeShardKeyCharacteristicsDefaultSampleSizeto10000at startup:mongod --setParameter analyzeShardKeyCharacteristicsDefaultSampleSize=10000 During run time, you can set or modify the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, analyzeShardKeyCharacteristicsDefaultSampleSize: 10000 } )
analyzeShardKeyMonotonicityCorrelationCoefficientThresholdNew in version 7.0.
Available for
mongodonly.Type: double
Default: 0.7
Specifies the
RecordIdcorrelation coefficient threshold used to determine if a shard key is monotonically changing in insertion order. Must be greater than0and less than or equal to1.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
This example sets
analyzeShardKeyMonotonicityCorrelationCoefficientThresholdto1at startup:mongod --setParameter analyzeShardKeyMonotonicityCorrelationCoefficientThreshold=1 During run time, you can set or modify the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, analyzeShardKeyMonotonicityCorrelationCoefficientThreshold: 1 } )
analyzeShardKeyNumMostCommonValuesNew in version 7.0.
Available for
mongodonly.Type: integer
Default: 5
Specifies the number of most common shard key values to return. If the collection contains fewer unique shard keys than this value,
analyzeShardKeyNumMostCommonValuesreturns that number of most common values. Must be greater than0and less than or equal to1000.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
This example sets
analyzeShardKeyNumMostCommonValuesto3at startup:mongod --setParameter analyzeShardKeyNumMostCommonValues=3 During run time, you can set or modify the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, analyzeShardKeyNumMostCommonValues: 3 } )
analyzeShardKeyNumRangesNew in version 7.0.
Available for
mongodonly.Type: integer
Default: 100
Specifies the number of ranges to partition the shard key space into when calculating the hotness of shard key ranges. Must be greater than
0and less than or equal to10000.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
This example sets
analyzeShardKeyNumRangesto50at startup:mongod --setParameter analyzeShardKeyNumRanges=50 During run time, you can set or modify the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, analyzeShardKeyNumRanges: 50 } )
analyzeShardKeyNumSamplesPerRangeNew in version 7.0.
Available for
mongodonly.Type: Non-negative integer
Default: 10
The number of documents to sample per shard key range. Must be a value greater than zero and less than or equal to
10000.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
This example sets
analyzeShardKeyNumSamplesPerRangeto50at startup:mongod --setParameter analyzeShardKeyNumSamplesPerRange=50 During run time, you can set or modify the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, analyzeShardKeyNumSamplesPerRange: 50 } )
autoMergerIntervalSecsNew in version 7.0.
Available for
mongodonly.Type: integer
Default: 3600
When AutoMerger is enabled, specifies the amount of time between automerging rounds, in seconds. The default value is 3600 seconds, or one hour.
autoMergerIntervalSecscan only be set on config servers.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
This example sets
autoMergerIntervalSecsto 7200 seconds, or two hours, at startup:mongod --setParameter autoMergerIntervalSecs=7200 During run time, you can set or modify the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, autoMergerIntervalSecs: 7200 } )
autoMergerThrottlingMSNew in version 7.0.
Available for
mongodonly.Type: integer
Default: 15000
When AutoMerger is enabled, specifies the minimum amount time between merges initiated by the AutoMerger on the same collection, in milliseconds.
autoMergerThrottlingMScan only be set on config servers.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
This example sets
autoMergerThrottlingMSto 60000 milliseconds, or one minute, at startup:mongod --setParameter autoMergerThrottlingMS=60000 During run time, you can set or modify the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, autoMergerThrottlingMS: 60000 } )
balancerMigrationsThrottlingMsNew in version 7.0: (Also available starting in 6.3.1, 6.0.6, 5.0.18)
Available for
mongodonly.Type: integer
Default: 1000
Specifies the minimum amount of time between two consecutive balancing rounds. This allows you to throttle the balancing rate. This parameter only takes effect on config server nodes.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
This example sets
balancerMigrationsThrottlingMsto 2000 milliseconds at startup:mongod --setParameter balancerMigrationsThrottlingMs=2000 During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, balancerMigrationsThrottlingMs: 2000 } )
catalogCacheCollectionMaxEntriesNew in version 8.1: (also available starting in 8.0.10, 7.0.22)
Type: integer
Default: 10000
Available for both
mongodandmongos.Maximum number of entries allowed in the catalog cache for collections.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.
catalogCacheDatabaseMaxEntriesNew in version 8.1: (also available starting in 8.0.10, 7.0.22)
Type: integer
Default: 10000
Available for both
mongodandmongos.Maximum number of entries allowed in the catalog cache for databases.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.
chunkDefragmentationThrottlingMSNew in version 5.3.
Available for both
mongodandmongos.Type: integer
Default: 0
Specifies the minimum time period (in milliseconds) between consecutive split and merge commands run by the balancer when the chunks in a sharded collection are defragmented.
chunkDefragmentationThrottlingMSlimits the rate of split and merge commands.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
chunkDefragmentationThrottlingMSto10milliseconds:mongod --setParameter chunkDefragmentationThrottlingMS=10 During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, chunkDefragmentationThrottlingMS: 10 } )
disableResumableRangeDeleterAvailable for
mongodonly.Type: boolean
Default: false
If set on a shard's primary, specifies if MongoDB pauses range deletion on the shard. If set to
true, MongoDB pauses cleanup of ranges containing orphaned documents. The shard can continue to donate chunks to other shards, but the shard does not remove donated documents until you set this parameter tofalse. This shard can continue to receive chunks from other shards as long as it does not have a pending range deletion task in theconfig.rangeDeletionscollection that overlaps with the incoming chunk's range.When
disableResumableRangeDeleteristrue, chunk migrations fail if orphaned documents exist on the recipient shard's primary in the same range as the incoming chunks.The parameter has no effect on the
mongodif it is not the shard's primary.Important
If you set
disableResumableRangeDeleterparameter totrue, ensure that you apply it consistently for all members in the shard's replica set. In the event of a failover, this setting's value on the new primary dictates the behavior of the range deleter.Starting in MongoDB 8.2, you can set
disableResumableRangeDeleterduring both startup and run time.To set
disableResumableRangeDeleterat startup, use the following command:mongod --setParameter disableResumableRangeDeleter=false To set
disableResumableRangeDeleterduring run time, use the following command:db.adminCommand( { setParameter: 1, disableResumableRangeDeleter: false } )
enableFinerGrainedCatalogCacheRefreshNote
Deprecated in 8.0
Starting in MongoDB 8.0, the parameter is deprecated and doesn't cause any changes or errors.
Available for both
mongodandmongos.Type: boolean
Default: true
This parameter allows the catalog cache to be refreshed only if the shard needs to be refreshed. If disabled, any stale chunk will cause the entire chunk distribution for a collection to be considered stale and force all routers who contact the shard to refresh their shard catalog cache.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.mongod --setParameter enableFinerGrainedCatalogCacheRefresh=true mongos --setParameter enableFinerGrainedCatalogCacheRefresh=true
enableShardedIndexConsistencyCheckAvailable for
mongodonly.Type: boolean
Default: true
If set on the config server's primary, enables or disables the index consistency check for sharded collections. The parameter has no effect on the
mongodif it is not the config server's primary.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
enableShardedIndexConsistencyChecktofalsefor a config server primary:mongod --setParameter enableShardedIndexConsistencyCheck=false During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, enableShardedIndexConsistencyCheck: false } ) Tip
shardedIndexConsistencyCheckIntervalMSparametershardedIndexConsistencymetrics returned by theserverStatuscommand.
findChunksOnConfigTimeoutMSNew in version 5.0.
Available for both
mongodandmongos.Type: Non-negative integer
Default: 900000
The timeout in milliseconds for find operations on
chunks.If there is a large number of chunks in the cluster and chunk loading fails with the error
ExceededTimeLimit, increase the parameter value:mongod --setParameter findChunksOnConfigTimeoutMS=1000000 This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
findShardsOnConfigTimeoutMSAvailable for both
mongodandmongos.New in version 8.3.
Type: Non-negative integer
Default: 10000 milliseconds
The timeout in milliseconds for
findoperations against theconfig.shardsnamespace.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
findShardsOnConfigTimeoutMSto15000milliseconds during runtime:db.adminCommand( { setParameter: 1, findShardsOnConfigTimeoutMS: 15000 } ) The following example sets
findShardsOnConfigTimeoutMSto15000milliseconds at startup:mongos --setParameter findShardsOnConfigTimeoutMS=15000
loadRoutingTableOnStartupAvailable for
mongosonly.Type: boolean
Default: true
Configures a
mongosinstance to preload the routing table for a sharded cluster on startup. With this setting enabled, themongoscaches the cluster-wide routing table for each sharded collection as part of its startup procedure, before it begins accepting client connections.Without this setting enabled, the
mongosonly loads a routing table as needed for incoming client connections, and only loads the specific routing table for the namespace of a given request.A
mongosinstance with theloadRoutingTableOnStartupparameter enabled may experience longer startup times, but will result in faster servicing of initial client connections once started.loadRoutingTableOnStartupis enabled by default.This parameter is only available at startup. To set the parameter, use the
setParametersetting.
maxCatchUpPercentageBeforeBlockingWritesNew in version 5.0.
Available for
mongodonly.Type: integer
Default: 10
For
moveChunkandmoveRangeoperations, specifies the maximum percentage of untrasferred data allowed by the migration protocol (expressed in percentage of the total chunk size) to transition from thecatchupphase to thecommitphase.Setting a higher catchup percentage can decrease the amount of time it takes for the migration to complete at the cost of increased latency during concurrent
upsertanddeleteoperations.This parameter is only available at startup. To set the parameter, use the
setParametersetting.Starting in MongoDB 7.1 (and 7.0.1), you can set the parameter during runtime.
For example, to set the maximum percentage to 20, you can issue the following during startup:
mongod --setParameter maxCatchUpPercentageBeforeBlockingWrites=20 Starting in MongoDB 7.1 (and 7.0.1), you can set the parameter during runtime with the
setParametercommand:db.adminCommand( { setParameter: 1, maxCatchUpPercentageBeforeBlockingWrites: 20} )
maxTimeMSForHedgedReadsImportant
Starting in MongoDB 8.1, hedged reads are removed and this parameter has no effect.
metadataRefreshInTransactionMaxWaitBehindCritSecMSDeprecated
Note
Starting in MongoDB 8.1, the old
metadataRefreshInTransactionMaxWaitBehindCritSecMSparameter is renamedmetadataRefreshInTransactionMaxWaitMS. You can continue to usemetadataRefreshInTransactionMaxWaitBehindCritSecMSas the parameter name, but it is deprecated and will be removed in a future MongoDB release.New in version 5.2: (Also available starting in 5.1.0, 5.0.4)
Changed in version 8.1.
Available for
mongodonly.Type: integer
Default: 500
Limits the time a shard waits for a critical section within a transaction.
When a query accesses a shard, a chunk migration or DDL operation may already hold the critical section for the collection. If the query finds the critical section is taken, the shard waits until the critical section has been released. When the shard returns control to
mongos,mongosretries the query. However, if a multi-shard transaction interacts with an operation that takes the critical section on multiple shards, the interaction can result in a distributed deadlock.metadataRefreshInTransactionMaxWaitBehindCritSecMSlimits the maximum time a shard waits within a transaction for the critical section to be released.To reduce the maximum wait time for the critical section within a transaction, lower the value of
metadataRefreshInTransactionMaxWaitBehindCritSecMS.Warning
If
metadataRefreshInTransactionMaxWaitBehindCritSecMSis too low,mongoscould use all of its retry attempts and return an error.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
For example, to set
metadataRefreshInTransactionMaxWaitBehindCritSecMSto 400 milliseconds:db.adminCommand( { setParameter: 1, metadataRefreshInTransactionMaxWaitBehindCritSecMS: 400 } )
metadataRefreshInTransactionMaxWaitMSChanged in version 8.1.
Available for
mongodonly.Type: integer
Default: 500
Limits the time a shard waits for a critical section within a transaction.
Note
Starting in MongoDB 8.1, the old
metadataRefreshInTransactionMaxWaitBehindCritSecMSparameter is renamedmetadataRefreshInTransactionMaxWaitMS. You can continue to usemetadataRefreshInTransactionMaxWaitBehindCritSecMSas the parameter name, but it is deprecated and will be removed in a future MongoDB release.When a query accesses a shard, a chunk migration or DDL operation may already hold the critical section for the collection. If the query finds the critical section is taken, the shard waits until the critical section has been released. When the shard returns control to
mongos,mongosretries the query. However, if a multi-shard transaction interacts with an operation that takes the critical section on multiple shards, the interaction can result in a distributed deadlock.metadataRefreshInTransactionMaxWaitMSlimits the maximum time a shard waits within a transaction for the critical section to be released.To reduce the maximum wait time for the critical section within a transaction, lower the value of
metadataRefreshInTransactionMaxWaitMS.Warning
If
metadataRefreshInTransactionMaxWaitMSis too low,mongoscould use all of its retry attempts and return an error.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
For example, to set
metadataRefreshInTransactionMaxWaitMSto 400 milliseconds:db.adminCommand( { setParameter: 1, metadataRefreshInTransactionMaxWaitMS: 400 } )
migrateCloneInsertionBatchDelayMSAvailable for
mongodonly.Type: Non-negative integer
Default: 0
Time in milliseconds to wait between batches of insertions during cloning step of the migration process. This wait is in addition to the
secondaryThrottle.The default value of
0indicates no additional wait.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following sets the
migrateCloneInsertionBatchDelayMSto 200 milliseconds:mongod --setParameter migrateCloneInsertionBatchDelayMS=200 The parameter may also be set using the
setParametercommand:db.adminCommand( { setParameter: 1, migrateCloneInsertionBatchDelayMS: 200 } )
migrateCloneInsertionBatchSizeAvailable for
mongodonly.Type: Non-negative integer
Default: 0
The maximum number of documents to insert in a single batch during the cloning step of the migration process.
The default value of
0indicates no maximum number of documents per batch. However, in practice, this results in batches that contain up to 16 MB of documents.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following sets the
migrateCloneInsertionBatchSizeto 100 documents:mongod --setParameter migrateCloneInsertionBatchSize=100 The parameter may also be set using the
setParametercommand:db.adminCommand( { setParameter: 1, migrateCloneInsertionBatchSize: 100 } )
mongosShutdownTimeoutMillisForSignaledShutdownNew in version 5.0.
Available for
mongosonly.Type: integer
Default: 15000
Specifies the time (in milliseconds) to wait for any ongoing database operations to complete before initiating a shutdown of
mongosin response to aSIGTERMsignal.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
For example, to set the time to 250 milliseconds, you can issue the following during startup:
mongos --setParameter mongosShutdownTimeoutMillisForSignaledShutdown=250 Or if using the
setParametercommand in amongoshsession that is connected to a runningmongos:db.adminCommand( { setParameter: 1, mongosShutdownTimeoutMillisForSignaledShutdown: 250 } )
opportunisticSecondaryTargetingImportant
Starting in MongoDB 8.1, hedged reads are removed and this parameter has no effect.
orphanCleanupDelaySecsChanged in version 8.2.
Available for
mongodonly.Default: 3600 (60 minutes)
Minimum delay before a migrated chunk is deleted from the source shard.
Before deleting a migrated chunk, MongoDB waits for in-progress queries involving the chunk to complete on the shard primary and then waits an additional
orphanCleanupDelaySecsseconds.Starting in 8.2, the behavior of in-progress queries on shard secondaries is determined by
terminateSecondaryReadsOnOrphanCleanup.If a shard has storage constraints, consider reducing this value temporarily. If running queries that exceed 60 minutes on shard secondaries, consider increasing this value.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following sets the
orphanCleanupDelaySecsto 20 minutes:mongod --setParameter orphanCleanupDelaySecs=1200 This may also be set using the
setParametercommand:db.adminCommand( { setParameter: 1, orphanCleanupDelaySecs: 1200 } ) Tip
In all versions, the new value of
orphanCleanupDelaySecsis only applied to range deletions created after the value is changed. To apply the new value to existing range deletions, force a step down.
persistedChunkCacheUpdateMaxBatchSizeNew in version 7.2: (and 7.1.1, 7.0.4, 6.0.13, 5.0.25)
Available for
mongodonly.Type: Integer
Default: 1000
To route and serve operations, shards must know the routing and ownership information associated with their collections. This information propogates from a shard's primary node to its secondary nodes through the replication of the internal cache collections
config.cache.collectionsandconfig.cache.chunks.<collectionName>.In previous versions, updates on the chunk cache collection were performed individually (meaning that an entry was deleted and a new entry was inserted). Starting in MongoDB 7.2, these updates are performed as a batch of deletions followed by a batch of insertions. The updated logic improves performance for collections that contain a large number of chunks.
The
persistedChunkCacheUpdateMaxBatchSizeparameter specifies the maximum batch size used for updating the persisted chunk cache.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
persistedChunkCacheUpdateMaxBatchSizeto 700 at startup:mongod --setParameter persistedChunkCacheUpdateMaxBatchSize=700 You can also set
persistedChunkCacheUpdateMaxBatchSizeduring runtime:db.adminCommand( { setParameter: 1, persistedChunkCacheUpdateMaxBatchSize: 700 } )
queryAnalysisSampleExpirationSecsNew in version 7.0.
Available for
mongodonly.Type: integer
Default: 7 * 24 * 3600
Amount of time that a sampled query document exists before being removed by the TTL monitor, in seconds. Must be greater than
0.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
This example sets
queryAnalysisSampleExpirationSecsto691200(8 * 24 * 3600) at startup on amongodinstance:mongod --setParameter queryAnalysisSampleExpirationSecs=691200 During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, queryAnalysisSampleExpirationSecs: 691200 } )
queryAnalysisSamplerConfigurationRefreshSecsNew in version 7.0.
Changed in version 7.0.1.
Available for both
mongodandmongos.Type: integer
Default: 10
Interval that a sampler (
mongosormongod) refreshes its query analyzer sample rates.The sample rate configured by the
configureQueryAnalyzercommand is divided amongmongosinstances in the sharded cluster ormongodinstances in the replica set based on the traffic going through them. To make the sample rate assignment for amongosormongodmore responsive to the traffic going through it, decrease this value.We recommend using the default value.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.Starting in MongoDB 7.0.1, you can set
queryAnalysisSamplerConfigurationRefreshSecsduring run time.This example sets
queryAnalysisSamplerConfigurationRefreshSecsto 60 seconds at startup on amongodinstance:mongod --setParameter queryAnalysisSamplerConfigurationRefreshSecs=60 This example sets
queryAnalysisSamplerConfigurationRefreshSecsto 60 seconds at startup on amongosinstance:mongos --setParameter queryAnalysisSamplerConfigurationRefreshSecs=60 To set the value to 30 seconds, run the following:
db.adminCommand( { setParameter: 1, queryAnalysisSamplerConfigurationRefreshSecs: 30 } )
queryAnalysisWriterIntervalSecsNew in version 7.0.
Changed in version 7.0.1.
Available for
mongodonly.Type: integer
Default: 90
Interval that sampled queries are written to disk, in seconds.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.Starting in MongoDB 7.0.1, you can set
queryAnalysisWriterIntervalSecsduring run time.This example sets
queryAnalysisWriterIntervalSecsto 60 seconds at startup on amongodinstance:mongod --setParameter queryAnalysisWriterIntervalSecs=60 To set the value to 60 seconds, run the following:
db.adminCommand( { setParameter: 1, queryAnalysisWriterIntervalSecs: 60 } )
queryAnalysisWriterMaxBatchSizeNew in version 7.0.
Available for
mongodonly.Type: integer
Default: 100000
Maximum number of sampled queries to write to disk at once. Must be greater than
0and less than or equal to100000.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
This example sets
queryAnalysisWriterMaxBatchSizeto1000at startup on amongodinstance:mongod --setParameter queryAnalysisWriterMaxBatchSize=1000 During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, queryAnalysisWriterMaxBatchSize: 1000 } )
queryAnalysisWriterMaxMemoryUsageBytesNew in version 7.0.
Available for
mongodonly.Type: integer
Default: 100 * 1024 * 1024
Maximum amount of memory in bytes that the query sampling writer is allowed to use. Once the limit is reached, all new queries and diffs are discarded from sampling until the buffer is flushed. Must be greater than
0.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
This example sets
queryAnalysisWriterMaxMemoryUsageBytesto10000000at startup on amongodinstance:mongod --setParameter queryAnalysisWriterMaxMemoryUsageBytes=10000000
rangeDeleterBatchDelayMSAvailable for
mongodonly.Type: Non-negative integer
Default: 20
The amount of time in milliseconds to wait before the next batch of deletion during the cleanup stage of range migration.
The _secondaryThrottle replication delay occurs after each batch deletion.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following sets the
rangeDeleterBatchDelayMSto 200 milliseconds:mongod --setParameter rangeDeleterBatchDelayMS=200 The parameter may also be set using the
setParametercommand:db.adminCommand( { setParameter: 1, rangeDeleterBatchDelayMS: 200 } ) Tip
In versions prior to 6.0.3, the new value of
rangeDeleterBatchDelayMSis only applied to range deletions created after the value is changed. To apply the new value to existing range deletions, force a step down.From 6.0.3 on, the new value of the parameter is applied to all the range deletions processed after the update, regardless of when the range deletion was created.
rangeDeleterBatchSizeAvailable for
mongodonly.Type: Non-negative integer
Default: 2147483647 starting in MongoDB 5.1.2 and 5.0.6
The maximum number of documents in each batch to delete during the cleanup stage of range migration.
A value of
0indicates that the system chooses the default value.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
rangeDeleterBatchSizeto 32 documents:mongod --setParameter rangeDeleterBatchSize=32 The parameter may also be set using the
setParametercommand:db.adminCommand( { setParameter: 1, rangeDeleterBatchSize: 32 } ) Tip
In versions prior to 6.0.3, the new value of
rangeDeleterBatchSizeis only applied to range deletions created after the value is changed. To apply the new value to existing range deletions, force a step down.From 6.0.3 on, the new value of the parameter is applied to all the range deletions processed after the update, regardless of when the range deletion was created.
readHedgingModeImportant
Starting in MongoDB 8.1, hedged reads are removed and this parameter has no effect.
routingTableCacheChunkBucketSizeNew in version 7.0.1.
Changed in version 7.2.
Available for both
mongodandmongos.Type: integer
Default: 500
Specifies the size of the routing table cache buckets used to implement chunk grouping optimization. Must be greater than
0.This parameter is only available at startup. To set the parameter, use the
setParametersetting.For example, to set the cache chunk bucket size to
250on amongod, issue the following command at startup:mongod --setParameter routingTableCacheChunkBucketSize=250
shardedIndexConsistencyCheckIntervalMSAvailable for
mongodonly.Type: integer
Default: 600000
If set on the config server's primary, the interval, in milliseconds, at which the config server's primary checks the index consistency of sharded collections. The parameter has no effect on the
mongodif it is not the config server's primary.This parameter is only available at startup. To set the parameter, use the
setParametersetting.For example, the following sets the interval at 300000 milliseconds (5 minutes) at startup:
mongod --setParameter shardedIndexConsistencyCheckIntervalMS=300000 Tip
enableShardedIndexConsistencyCheckparametershardedIndexConsistencymetrics returned by theserverStatuscommand.
ShardingTaskExecutorPoolHostTimeoutMSAvailable for both
mongodandmongos.Type: integer
Default: 300000 (5 minutes)
Maximum time that
mongosgoes without communication to a host beforemongosdrops all connections to the host.If set,
ShardingTaskExecutorPoolHostTimeoutMSshould be greater than the sum ofShardingTaskExecutorPoolRefreshRequirementMSandShardingTaskExecutorPoolRefreshTimeoutMS. Otherwise,mongosadjusts the value ofShardingTaskExecutorPoolHostTimeoutMSto be greater than the sum.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
ShardingTaskExecutorPoolHostTimeoutMSto120000during startup:mongos --setParameter ShardingTaskExecutorPoolHostTimeoutMS=120000 During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolHostTimeoutMS: 120000 } )
ShardingTaskExecutorPoolMaxConnectingAvailable for both
mongodandmongos.Type: integer
Default: 2
Maximum number of simultaneous initiating connections (including pending connections in setup/refresh state) each TaskExecutor connection pool can have to a
mongodinstance. You can set this parameter to control the rate at whichmongosadds connections to amongodinstance.If set,
ShardingTaskExecutorPoolMaxConnectingshould be less than or equal toShardingTaskExecutorPoolMaxSize. If it is greater,mongosignores theShardingTaskExecutorPoolMaxConnectingvalue.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
ShardingTaskExecutorPoolMaxConnectingto20during startup:mongos --setParameter ShardingTaskExecutorPoolMaxConnecting=20 During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolMaxConnecting: 20 } )
ShardingTaskExecutorPoolMaxSizeAvailable for both
mongodandmongos.Type: integer
Default: 2 64 - 1
Maximum number of outbound connections each TaskExecutor connection pool can open to any given
mongodinstance. The maximum possible connections to any given host across all TaskExecutor pools is:ShardingTaskExecutorPoolMaxSize * taskExecutorPoolSize This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
ShardingTaskExecutorPoolMaxSizeto20during startup:mongos --setParameter ShardingTaskExecutorPoolMaxSize=20 During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolMaxSize: 20 } ) mongoscan have up tonTaskExecutor connection pools, wherenis the number of cores. SeetaskExecutorPoolSize.
ShardingTaskExecutorPoolMaxSizeForConfigServersNew in version 6.0.
Available for both
mongodandmongos.Type: integer
Default: -1
Optional override for
ShardingTaskExecutorPoolMaxSizeto set the maximum number of outbound connections each TaskExecutor connection pool can open to a configuration server.When set to:
-1,ShardingTaskExecutorPoolMaxSizeis used. This is the default.an integer value greater than
-1, overrides the maximum number of outbound connections each TaskExecutor connection pool can open to a configuration server.
Parameter only applies to sharded deployments.
The following example sets
ShardingTaskExecutorPoolMaxSizeto2during startup, which sets the maximum number of outbound connections each TaskExecutor connection pool can open to a configuration server to2:This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
mongos --setParameter ShardingTaskExecutorPoolMaxSizeForConfigServers=2 During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolMaxSizeForConfigServers: 2 } )
ShardingTaskExecutorPoolMinSizeAvailable for both
mongodandmongos.Type: integer
Default: 1
Minimum number of outbound connections each TaskExecutor connection pool can open to any given
mongodinstance.ShardingTaskExecutorPoolMinSizeconnections are created the first time a connection to a new host is requested from the pool. While the pool is idle, the pool maintains this number of connections untilShardingTaskExecutorPoolHostTimeoutMSmilliseconds pass without any application using that pool.For a
mongosusing thewarmMinConnectionsInShardingTaskExecutorPoolOnStartupparameter, theShardingTaskExecutorPoolMinSizeparameter also controls how many connections to each shard host are established on startup of themongosinstance before it begins accepting incoming client connections.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
ShardingTaskExecutorPoolMinSizeto2during startup:mongos --setParameter ShardingTaskExecutorPoolMinSize=2 During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolMinSize: 2 } ) mongoscan have up tonTaskExecutor connection pools, wherenis the number of cores. SeetaskExecutorPoolSize.
ShardingTaskExecutorPoolMinSizeForConfigServersNew in version 6.0.
Available for both
mongodandmongos.Type: integer
Default: -1
Optional override for
ShardingTaskExecutorPoolMinSizeto set the minimum number of outbound connections each TaskExecutor connection pool can open to a configuration server.When set to:
-1,ShardingTaskExecutorPoolMinSizeis used. This is the default.an integer value greater than
-1, overrides the minimum number of outbound connections each TaskExecutor connection pool can open to a configuration server.
Parameter only applies to sharded deployments.
The following example sets
ShardingTaskExecutorPoolMinSizeto2during startup, which sets the minimum number of outbound connections each TaskExecutor connection pool can open to a configuration server to2:This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
mongos --setParameter ShardingTaskExecutorPoolMinSizeForConfigServers=2 During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolMinSizeForConfigServers: 2 } )
ShardingTaskExecutorPoolRefreshRequirementMSAvailable for both
mongodandmongos.Type: integer
Default: 60000 (1 minute)
Maximum time the
mongoswaits before attempting to heartbeat an idle connection in the pool. An idle connection may be discarded during the refresh if the pool is above its minimum size.If set,
ShardingTaskExecutorPoolRefreshRequirementMSshould be greater thanShardingTaskExecutorPoolRefreshTimeoutMS. Otherwise,mongosadjusts the value ofShardingTaskExecutorPoolRefreshTimeoutMSto be less thanShardingTaskExecutorPoolRefreshRequirementMS.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
ShardingTaskExecutorPoolRefreshRequirementMSto90000during startup:mongos --setParameter ShardingTaskExecutorPoolRefreshRequirementMS=90000 During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolRefreshRequirementMS: 90000 } )
ShardingTaskExecutorPoolRefreshTimeoutMSAvailable for both
mongodandmongos.Type: integer
Default: 20000 (20 seconds)
Maximum time the
mongoswaits for a heartbeat before timing out the heartbeat.If set,
ShardingTaskExecutorPoolRefreshTimeoutMSshould be less thanShardingTaskExecutorPoolRefreshRequirementMS. Otherwise,mongosadjusts the value ofShardingTaskExecutorPoolRefreshTimeoutMSto be less thanShardingTaskExecutorPoolRefreshRequirementMS.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
ShardingTaskExecutorPoolRefreshTimeoutMSto30000during startup:mongos --setParameter ShardingTaskExecutorPoolRefreshTimeoutMS=30000 During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolRefreshTimeoutMS: 30000 } )
ShardingTaskExecutorPoolReplicaSetMatchingChanged in version 5.0.
Available for both
mongodandmongos.Type: string
Default: "automatic"
On a
mongosinstance, this parameter sets the policy that determines the minimum size limit of its connection pools to nodes within replica sets.On a
mongodinstance, this parameter sets the policy that determines the minimum size limit of its connection pools to nodes within other replica sets.Note that this parameter only manages connections for operations that are directly related to user requests and CRUD operations.
Available values are:
Matching PolicyDescription"automatic"(Default)Starting in 5.0,
"automatic"is the new default value.When set for a
mongos, the instance follows the behavior specified for the"matchPrimaryNode"option.When set for a
mongod, the instance follows the behavior specified for the"disabled"option.WARNING: If the
ShardingTaskExecutorPoolReplicaSetMatchingis set to"automatic", thereplicaSetMatchingStrategystill describes the actual policy being used, not"automatic". To find the value of theShardingTaskExecutorPoolReplicaSetMatching, usegetParameterwhich returns the value of the server parameter."matchPrimaryNode"When set for a
mongos, the minimum size limit of the instance's connection pool to each secondary of a replica set in the sharded cluster (specifically, shard replica set and config servers) is equal to the size of its connection pool to that replica set's primary.When set for a
mongod, the minimum size limit of the instance's connection pool to each secondary of another replica set in the sharded cluster (specifically, shard replica set and config servers) is equal to the size of its connection pool to that replica set's primary.WARNING: If multiple shard servers in your topology can experience a rapid influx of cross-shard operations, do not set this option on your
mongodinstances.In case of a primary stepdown,
matchPrimaryNodeensures that any secondary that becomes the primary can handle the current level of primary reads and writes."matchBusiestNode"When set for a
mongos, the instance's minimum size limit of the connection pool to each member of a replica set in the sharded cluster (specifically, shard replica set and config servers) is equal to the largest among the active connection counts to the primary and each secondary member of that replica set.When set for a
mongod, the instance's minimum size limit of the connection pool to each member of another replica set in the sharded cluster (specifically, shard replica set and config servers) is equal to the largest among the active connection counts to the primary and each secondary member of that replica set.With
"matchBusiestNode",mongosmaintains enough connections to each secondary to handle the current level of primary and secondary reads and writes. The number of connections to maintain in the pool decreases as the number of active connections decreases."disabled"When set for a
mongos, the instance's minimum number of connections in the instance's connection pool to each node of a replica set in the sharded clusterv (specifically, shard replica set and config servers) is equal to theShardingTaskExecutorPoolMinSize.When set for a
mongod, the instance's minimum number of connections in the instance's connection pool to each node of another replica set in the sharded cluster (specifically, shard replica set and config servers) is equal to theShardingTaskExecutorPoolMinSize.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets the
ShardingTaskExecutorPoolReplicaSetMatchingto"automatic"during startup:mongod --setParameter ShardingTaskExecutorPoolReplicaSetMatching="automatic" During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolReplicaSetMatching: "automatic" } )
shutdownTimeoutMillisForSignaledShutdownNew in version 5.0.
Available for
mongodonly.Type: integer
Default: 15000
Specifies the time (in milliseconds) to wait for any ongoing database operations to complete before initiating a shutdown of
mongodin response to aSIGTERMsignal.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
For example, to set the time to 250 milliseconds, you can issue the following during startup:
mongod --setParameter shutdownTimeoutMillisForSignaledShutdown=250 Or if using the
setParametercommand in amongoshsession that is connected to a runningmongod:db.adminCommand( { setParameter: 1, shutdownTimeoutMillisForSignaledShutdown: 250 } )
skipShardingConfigurationChecksAvailable for
mongodonly.Type: boolean
Default: false
When
true, allows for starting a shard member or config server member as a standalone for maintenance operations. This parameter is mutually exclusive with the--configsvror--shardsvroptions.This parameter is only available at startup. To set the parameter, use the
setParametersetting.mongod --setParameter skipShardingConfigurationChecks=true Important
Once maintenance has completed, remove the
skipShardingConfigurationChecksparameter when restarting themongod.
taskExecutorPoolSizeAvailable for
mongosonly.Type: integer
Default: 1
The number of Task Executor connection pools to use for a given
mongos.If the parameter value is
0or less, the number of Task Executor connection pools is the number of cores with the following exceptions:If the number of cores is less than 4, the number of Task Executor connection pools is 4.
If the number of cores is greater than 64, the number of Task Executor connection pools is 64.
The default value of
taskExecutorPoolSizeis1:This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
mongos --setParameter taskExecutorPoolSize=6
terminateSecondaryReadsOnOrphanCleanupAvailable for
mongodonly.New in version 8.2.
Type: boolean
Default: true
Controls whether long-running read operations on secondary nodes automatically terminate before orphaned document deletion following a chunk migration.
In sharded clusters, when a chunk successfully migrates from the source shard to the destination shard, MongoDB does not immediately remove the migrated documents from the source shard. Instead, the primary of the source shard waits for any in-progress reads involving the namespace of the migrated chunk to complete, and after that, waits an additional period controlled by
orphanCleanupDelaySecs(default: 1 hour). This additional delay allows any long-running secondary reads to finish before orphaned documents are deleted from the source shard.After the orphaned documents are deleted from the source shard, any ongoing reads running on secondary nodes that started before the chunk migration may silently miss documents without returning an error unless
terminateSecondaryReadsOnOrphanCleanupis set totrue.When
terminateSecondaryReadsOnOrphanCleanupis set totrue, read operations on secondary nodes that began before the chunk migration commit are automatically terminated before the orphaned documents are removed from the secondary node. This prevents long-running secondary reads from silently missing documents that were moved during migration.When set to
false, read operations on secondary nodes continue executing even after orphaned documents are deleted. Operations may silently miss documents without returning an error. This matches the behavior in MongoDB versions before 8.2.Note
This behavior only affects read operations that start before the chunk migration commit. It applies to all read operations on secondaries, including queries, aggregations, and operations spanning multiple namespaces.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
Error Response
When a read operation terminates due to
terminateSecondaryReadsOnOrphanCleanup, MongoDB returns the following error:{ code: 175, name: QueryPlanKilled, categories: [CursorInvalidatedError], errmsg: "Read has been terminated due to orphan range cleanup" } This error is not retryable by design. To learn more about handling these errors, see Long-Running Secondary Reads in Sharded Clusters.
warmMinConnectionsInShardingTaskExecutorPoolOnStartupAvailable for
mongosonly.Type: boolean
Default: true
Configures a
mongosinstance to prewarm its connection pool on startup. With this parameter enabled, themongosattempts to establishShardingTaskExecutorPoolMinSizenetwork connections to each shard server as part of its startup procedure, before it begins accepting client connections.A timeout for this behavior can be configured with the
warmMinConnectionsInShardingTaskExecutorPoolOnStartupWaitMSparameter. If this timeout is reached, themongoswill begin accepting client connections regardless of the size of its connection pool.A
mongosinstance with this parameter enabled may experience longer startup times, but will result in faster servicing of initial client connections once started.warmMinConnectionsInShardingTaskExecutorPoolOnStartupis enabled by default.This parameter is only available at startup. To set the parameter, use the
setParametersetting.
warmMinConnectionsInShardingTaskExecutorPoolOnStartupWaitMSAvailable for
mongosonly.Type: integer
Default: 2000 (2 seconds)
Sets the timeout threshold in milliseconds for a
mongosto wait forShardingTaskExecutorPoolMinSizeconnections to be established per shard host when using thewarmMinConnectionsInShardingTaskExecutorPoolOnStartupparameter. If this timeout is reached, themongoswill begin accepting client connections regardless of the size of its connection pool.This parameter is only available at startup. To set the parameter, use the
setParametersetting.
Health Manager Parameters
activeFaultDurationSecsAvailable for
mongosonly.Type: Document
The amount of time to wait from a Health Managers Overview failure until the mongos is removed from the cluster, in seconds.
When a failure is detected and a Health Manager is configured as
critical, the server waits for the specified interval before removing themongosfrom the cluster.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
For example, to set the duration from failure to crash to five minutes, issue the following at startup:
mongos --setParameter activeFaultDurationSecs=300 Or if using the
setParametercommand in amongoshsession that is connected to a runningmongos:db.adminCommand( { setParameter: 1, activeFaultDurationSecs: 300 } ) Parameters set with
setParameterdo not persist across restarts. See the setParameter page for details.To make this setting persistent, set
activeFaultDurationSecsin your mongos config file using thesetParameteroption as in the following example:setParameter: activeFaultDurationSecs: 300
healthMonitoringIntensitiesAvailable for
mongosonly.Type: Array of documents
Use this parameter to set intensity levels for Health Managers.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
healthMonitoringIntensitiesaccepts an array of documents,values. Each document invaluestakes two fields:type, the Health Manager facetintensity, the intensity level
Health Managers
FacetWhat the Health Observer ChecksconfigServerCluster health issues related to connectivity to the config server.
dnsCluster health issues related to DNS availability and functionality.
ldapCluster health issues related to LDAP availability and functionality.
Intensity Levels
Intensity LevelDescriptioncriticalThe Health Manager on this facet is enabled and has the ability to move the failing mongos out of the cluster if an error occurs. The Health Manager waits the amount of time specified by
activeFaultDurationSecsbefore stopping and moving the mongos out of the cluster automatically.non-criticalThe Health Manager on this facet is enabled and logs errors, but the mongos remains in the cluster if errors are encountered.
offThe Health Manager on this facet is disabled. The mongos does not perform any health checks on this facet. This is the default intensity level.
For example, to set the
dnsHealth Manager facet to thecriticalintensity level, issue the following at startup:mongos --setParameter 'healthMonitoringIntensities={ values:[ { type:"dns", intensity: "critical"} ] }' Or if using the
setParametercommand in amongoshsession that is connected to a runningmongos:db.adminCommand( { setParameter: 1, healthMonitoringIntensities: { values: [ { type: "dns", intensity: "critical" } ] } } ) } ) Parameters set with
setParameterdo not persist across restarts. See the setParameter page for details.To make this setting persistent, set
healthMonitoringIntensitiesin your mongos config file using thesetParameteroption as in the following example:setParameter: healthMonitoringIntensities: "{ values:[ { type:\"dns\", intensity: \"critical\"} ] }"
healthMonitoringIntervalsAvailable for
mongosonly.Type: Array of documents
How often this Health Manager will run, in milliseconds.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
healthMonitoringIntervalsaccepts an array of documents,values. Each document invaluestakes two fields:type, the Health Manager facetinterval, the time interval it runs at, in milliseconds
Health Managers
FacetWhat the Health Observer ChecksconfigServerCluster health issues related to connectivity to the config server.
dnsCluster health issues related to DNS availability and functionality.
ldapCluster health issues related to LDAP availability and functionality.
For example, to set the
ldapHealth Manager facet to the run health checks every 30 seconds, issue the following at startup:mongos --setParameter 'healthMonitoringIntervals={ values:[ { type:"ldap", interval: "30000"} ] }' Or if using the
setParametercommand in amongoshsession that is connected to a runningmongos:db.adminCommand( { setParameter: 1, healthMonitoringIntervals: { values: [ { type: "ldap", interval: "30000" } ] } } ) } ) Parameters set with
setParameterdo not persist across restarts. See the setParameter page for details.To make this setting persistent, set
healthMonitoringIntervalsin your mongos config file using thesetParameteroption as in the following example:setParameter: healthMonitoringIntervals: "{ values: [{type: \"ldap\", interval: 200}] }"
progressMonitorAvailable for
mongosonly.Type: Document
Progress Monitor runs tests to ensure that Health Manager checks do not become stuck or unresponsive. Progress Monitor runs these tests in intervals specified by
interval. If a health check begins but does not complete within the timeout given bydeadline, Progress Monitor stops the mongos and removes it from the cluster.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
progressMonitorFieldsFieldDescriptionUnitsintervalHow often to ensure Health Managers are not stuck or unresponsive.
Milliseconds
deadlineTimeout before automatically failing the mongos if a Health Manager check is not making progress.
Seconds
To set the
intervalto 1000 milliseconds and thedeadlineto 300 seconds, issue the following at startup:mongos --setParameter 'progressMonitor={"interval": 1000, "deadline": 300}' Or if using the
setParametercommand in amongoshsession that is connected to a runningmongos:db.adminCommand( { setParameter: 1, progressMonitor: { interval: 1000, deadline: 300 } ) } ) Parameters set with
setParameterdo not persist across restarts. See the setParameter page for details.To make this setting persistent, set
progressMonitorin your mongos config file using thesetParameteroption as in the following example:setParameter: progressMonitor: "{ interval: 1000, deadline: 300 }"
Storage Parameters
enableAutoCompactionAvailable for both
mongodandmongos.New in version 8.1.0.
Type: boolean
Default: false
Specifies whether the instance runs automatic background compaction.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.The following example enables automatic background compaction on the instance:
mongod --setParameter "enableAutoCompaction=true"
honorSystemUmaskAvailable for
mongodonly.Default:
falseIf
honorSystemUmaskis set totrue, new files created by MongoDB have permissions in accordance with the user'sumasksettings. You cannot setprocessUmaskifhonorSystemUmaskis set totrue.If
honorSystemUmaskis set tofalse, new files created by MongoDB have permissions set to600, which gives read and write permissions only to the owner. New directories have permissions set to700. You can useprocessUmaskto override the default permissions for groups and other users on all new files created by MongoDB.This parameter is only available at startup. To set the parameter, use the
setParametersetting.mongod --setParameter honorSystemUmask=true Note
honorSystemUmaskis not available on Windows systems.
journalCommitIntervalAvailable for
mongodonly.Specify an integer between
1and500signifying the number of milliseconds (ms) between journal commits.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
Consider the following example which sets the
journalCommitIntervalto200ms:db.adminCommand( { setParameter: 1, journalCommitInterval: 200 } )
minSnapshotHistoryWindowInSecondsNew in version 5.0.
Available for
mongodonly.Default:
300The minimum time window in seconds for which the storage engine keeps the snapshot history. If you query data using read concern
"snapshot"and specify an atClusterTime value older than the specifiedminSnapshotHistoryWindowInSeconds,mongodreturns aSnapshotTooOlderror.Warning
In sharded clusters, changing the default
minSnapshotHistoryWindowInSecondsvalue on config server nodes may cause internal operations to fail.Do not set
minSnapshotHistoryWindowInSecondsto0on config server nodes. Setting this parameter to0causes internal operations conductingsnapshotreads targeting the config server with a specifiedatClusterTimeto fail.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
Specify an integer greater than or equal to (
>=) 0.Consider the following example which sets the
minSnapshotHistoryWindowInSecondsto600seconds:db.adminCommand( { setParameter: 1, minSnapshotHistoryWindowInSeconds: 600 } ) Note
Increasing the value of
minSnapshotHistoryWindowInSecondsincreases disk usage. For more information, see Snapshot History Retention.To modify this value for a MongoDB Atlas cluster, you must contact Atlas Support.
processUmaskAvailable for
mongodonly.Overrides the default permissions used for groups and other users when
honorSystemUmaskis set tofalse. By default, whenhonorSystemUmaskis set tofalse, new files created by MongoDB have permissions set to600. Use theprocessUmaskparameter to override this default with a customumaskvalue. The file owner inherits permissions from the systemumask.This parameter is only available at startup. To set the parameter, use the
setParametersetting.You cannot set this parameter if
honorSystemUmaskis set totrue.Consider the following example, which sets the permissions for groups and other users to read/write only and retains the system
umasksettings for the owner:mongod --setParameter processUmask=011 Note
processUmaskis not available on Windows systems.
storageEngineConcurrentReadTransactionsChanged in version 7.0.
Available for
mongodonly.Type: integer
Specifies the maximum number of concurrent read transactions (read tickets) allowed into the storage engine.
Note
Starting in version 7.0, MongoDB dynamically adjusts the number of tickets to optimize performance, with a highest possible value of 128.
Modifying this value can cause performance issues or errors. To determine if disabling the dynamic concurrent storage engine transactions algorithm is optimal for the cluster, contact MongoDB Support.
Starting in MongoDB 7.0, this parameter is available for all storage engines. In earlier versions, this parameter is available for the WiredTiger storage engine only.
storageEngineConcurrentWriteTransactionsChanged in version 7.0.
Available for
mongodonly.Type: integer
Specifies the maximum number of concurrent write transactions allowed into the WiredTiger storage engine.
Note
Starting in version 7.0, MongoDB dynamically adjusts the number of tickets to optimize performance, with a highest possible value of 128.
Modifying this value can cause performance issues or errors. To determine if disabling the dynamic concurrent storage engine transactions algorithm is optimal for the cluster, contact MongoDB Support.
Starting in MongoDB 7.0, this parameter is available for all storage engines. In earlier versions, this parameter is available for the WiredTiger storage engine only.
syncdelayAvailable for
mongodonly.Default: 60
Specify the interval in seconds when
mongodflushes its working memory to disk. By default,mongodflushes memory to disk every 60 seconds. In almost every situation you should not set this value and use the default setting.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
Consider the following example which sets the
syncdelayto60seconds:db.adminCommand( { setParameter: 1, syncdelay: 60 } ) To provide durable data, WiredTiger uses checkpoints. For more details, see Journaling and the WiredTiger Storage Engine.
temporarilyUnavailableBackoffBaseMsAvailable for
mongodonly.Default: 1000
Specifies the initial delay before retying a write operation that was rolled back due to cache pressure.
In rare circumstances, a write can fail due to cache pressure. When this happens MongoDB issues a
TemporarilyUnavailableerror and increments thetemporarilyUnavailableErrorscounter in two places: the slow query log and the Full Time Diagnostic Data Capture (FTDC).Individual operations within multi-document transactions never return
TemporarilyUnavailableerrors.Adjust the write retry properties by modifying the
temporarilyUnavailableBackoffBaseMsandtemporarilyUnavailableMaxRetriesparameters.The parameter accepts:
ValueDescriptioninteger >= 0Defaults to 1 second. The initial delay between retries. The value increases with each retry to a maximum of 55 seconds. A larger value increases the chance that the cache pressure will be reduced before the next retry.
To configure number of retries, use
temporarilyUnavailableMaxRetries.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
To set a new value, use
db.adminCommand():db.adminCommand( { setParameter: 1, temporarilyUnavailableBackoffBaseMs: 3 } ) New in version 6.1.0.
temporarilyUnavailableMaxRetriesAvailable for
mongodonly.Default: 10
Specifies the maximum number of retries when a write operation is rolled back due to cache pressure.
In rare circumstances, a write can fail due to cache pressure. When this happens MongoDB issues a
TemporarilyUnavailableerror and increments thetemporarilyUnavailableErrorscounter in two places: the slow query log and the Full Time Diagnostic Data Capture (FTDC).Individual operations within multi-document transactions never return
TemporarilyUnavailableerrors.Adjust the write retry properties by modifying the
temporarilyUnavailableBackoffBaseMsandtemporarilyUnavailableMaxRetriesparameters.The parameter accepts:
ValueDescriptioninteger >= 0The maximum number of retries.
There is an increasing delay between retries. To configure the backoff time, use
temporarilyUnavailableBackoffBaseMs.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
To set a new value, use
db.adminCommand():db.adminCommand( { setParameter: 1, temporarilyUnavailableMaxRetries: 5 } ) New in version 6.1.0.
upsertMaxRetryAttemptsOnDuplicateKeyErrorAvailable for both
mongodandmongos.New in version 8.1.0.
Maximum number of retry attempts when an
upsertoperation encounters a duplicate key error.Type: Integer
Default: 100
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
Important
Starting in MongoDB 8.1, if an
upsertoperation runs in a multidocument transaction, then theupsertdoes not retry when it encounters a duplicate key error.The following example sets the maximum number of times the server retries an
upsertoperation when encountering a duplicate key error to50.mongod --setParameter "upsertMaxRetryAttemptsOnDuplicateKeyError=50" During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, upsertMaxRetryAttemptsOnDuplicateKeyError: 50 } )
WiredTiger Parameters
wiredTigerConcurrentReadTransactionsAvailable for
mongodonly.Type: integer
Specifies the maximum number of concurrent read transactions (read tickets) allowed into the storage engine.
Note
Starting in version 7.0, MongoDB dynamically adjusts the number of tickets to optimize performance, with a highest possible value of 128.
Modifying this value can cause performance issues or errors. To determine if disabling the dynamic concurrent storage engine transactions algorithm is optimal for the cluster, contact MongoDB Support.
Starting in MongoDB 7.0, this parameter is available for all storage engines. In earlier versions, this parameter is available for the WiredTiger storage engine only.
Changed in version 6.0.
The
wiredTigerConcurrentReadTransactionsparameter was renamed tostorageEngineConcurrentReadTransactions.
wiredTigerConcurrentWriteTransactionsAvailable for
mongodonly.Type: integer
Specifies the maximum number of concurrent write transactions allowed into the WiredTiger storage engine.
Note
Starting in version 7.0, MongoDB dynamically adjusts the number of tickets to optimize performance, with a highest possible value of 128.
Modifying this value can cause performance issues or errors. To determine if disabling the dynamic concurrent storage engine transactions algorithm is optimal for the cluster, contact MongoDB Support.
Starting in MongoDB 7.0, this parameter is available for all storage engines. In earlier versions, this parameter is available for the WiredTiger storage engine only.
Changed in version 6.0.
The
wiredTigerConcurrentWriteTransactionsparameter was renamed tostorageEngineConcurrentWriteTransactions.
wiredTigerEngineRuntimeConfigAvailable for
mongodonly.Specify
wiredTigerstorage engine configuration options for a runningmongodinstance.This parameter is only available at runtime. To set the parameter, use the
setParametercommand.Warning
Avoid modifying the
wiredTigerEngineRuntimeConfigunless under the direction from MongoDB engineers as this setting has major implication across both WiredTiger and MongoDB.Consider the following operation prototype:
db.adminCommand({ "setParameter": 1, "wiredTigerEngineRuntimeConfig": "<option>=<setting>,<option>=<setting>" })
wiredTigerFileHandleCloseIdleTimeAvailable for
mongodonly.Type: integer
Default: 600
Specifies the amount of time in seconds that a file handle in
wiredTigercan remain idle before being closed.If you set
wiredTigerFileHandleCloseIdleTimeto0, idle handles are not closed.Tip
This parameter is case sensitive. If you capitalize the
winwiredTigerFileHandleCloseIdleTimeand run the parameter, the operation returns the following error message:{ "code":2,"codeName":"BadValue","errmsg":"Unknown --setParameter 'WiredTigerFileHandleCloseIdleTime'" } This parameter is only available at startup. To set the parameter, use the
setParametersetting.For example:
mongod --setParameter wiredTigerFileHandleCloseIdleTime=100000
wiredTigerSessionMaxNew in version 8.1.
Type: 32-bit integer
Default: 33000
Available for
mongodonly.Maximum number of sessions allowed by WiredTiger.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.
See the WiredTiger documentation for all available WiredTiger configuration options.
Auditing Parameters
auditAuthorizationSuccessAvailable for both
mongodandmongos.Type: boolean
Default: false
Note
Available only in MongoDB Enterprise and MongoDB Atlas.
Enables the auditing of authorization successes for the authCheck action.
When
auditAuthorizationSuccessisfalse, the audit system only logs the authorization failures forauthCheck.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
To enable the audit of authorization successes, issue the following command:
db.adminCommand( { setParameter: 1, auditAuthorizationSuccess: true } ) Enabling
auditAuthorizationSuccessdegrades performance more than logging only the authorization failures.If runtime audit configuration is enabled, the
auditAuthorizationSuccessparameter should not appear in themongodormongosconfiguration file. The server will fail to start if the parameter is present.Tip
auditConfigPollingFrequencySecsAvailable for both
mongodandmongos.New in version 5.0.
Type: integer
Default: 300
A sharded cluster may have servers which maintain audit configuration settings for the cluster. Set the interval, in seconds, for non-configured servers to poll a config server for the current audit generation. If this value returned differs from the previously known value, the initiating node will request the current configuration and update its internal state.
Note
Using the default value of 300 seconds, non-config nodes may lag up to 5 minutes after you set the
auditConfigcluster parameter.This parameter is only available at startup. To set the parameter, use the
setParametersetting.
auditEncryptionHeaderMetadataFileNew in version 6.0.
Available for both
mongodandmongos.Type: string
Note
Available only in MongoDB Enterprise. MongoDB Enterprise and Atlas have different configuration requirements.
Path and file name for logging metadata audit headers for audit log encryption. A header is placed at the top of each audit log file and contains metadata for decrypting the audit log. The headers are also stored in the audit log.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.For example, the following sets the path and file for
auditEncryptionHeaderMetadataFile:mongod --setParameter auditEncryptionHeaderMetadataFile=/auditFiles/auditHeadersMetadataFile.log
auditEncryptKeyWithKMIPGetNew in version 6.0.
Available for both
mongodandmongos.Type: boolean
Default: false
Note
Available only in MongoDB Enterprise. MongoDB Enterprise and Atlas have different configuration requirements.
Enables audit log encryption for Key Management Interoperability Protocol (KMIP) servers that only support KMIP protocol version 1.0 or 1.1.
This parameter is only available at startup. To set the parameter, use the
setParametersetting.The following example sets
auditEncryptKeyWithKMIPGettotrue:mongod --setParameter auditEncryptKeyWithKMIPGet=true
Transaction Parameters
AbortExpiredTransactionsSessionCheckoutTimeoutNew in version 8.1: (also available in 8.0.13)
Available for
mongodonly.Type: integer
Default: 100 milliseconds
A session is checked out from a session pool to run database operations.
AbortExpiredTransactionsSessionCheckoutTimeoutsets the maximum number of milliseconds for a session to be checked out when attempting to end an expired transaction.If the expired transaction is successfully ended, MongoDB increments
metrics.abortExpiredTransactions.successfulKills. If the transaction isn't successfully ended because it timed out when attempting to check out a session, MongoDB incrementsmetrics.abortExpiredTransactions.timedOutKills.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
AbortExpiredTransactionsSessionCheckoutTimeoutto120milliseconds:db.adminCommand( { setParameter: 1, AbortExpiredTransactionsSessionCheckoutTimeout: 120 } ) You can also set this parameter during startup. For example:
mongod --setParameter AbortExpiredTransactionsSessionCheckoutTimeout=120
coordinateCommitReturnImmediatelyAfterPersistingDecisionNew in version 5.0.
Updated in version 6.1
Available for
mongodonly.Type: boolean
Default: false
When set to
false, the shard transaction coordinator waits for all participating shards to acknowledge the decision to either commit or cancel a multi-document transaction before returning the result to the client.When set to
true, the shard transaction coordinator returns a multi-document transaction commit decision to the client as soon as the decision is made durable with the requested transaction write concern.If the client requested a write concern that is less than
"majority", the commit may roll back after the decision is returned to the client.Transactions may not have "read your writes" consistency. That is, a read operation may not show the results of write operations that preceded it. This can happen if:
A transaction has to write to multiple shards.
The read and the earlier write take place in different sessions.
Causal consistency only guarantees the causal relationship of reads and writes that occur within the same session.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
coordinateCommitReturnImmediatelyAfterPersistingDecisiontotrue:mongod --setParameter coordinateCommitReturnImmediatelyAfterPersistingDecision=true During run time, you can also set the parameter with the
setParametercommand:db.adminCommand( { setParameter: 1, coordinateCommitReturnImmediatelyAfterPersistingDecision: true } )
internalSessionsReapThresholdNew in version 6.0.
Available for both
mongodandmongos.Default: 1000
Session limit for internal session metadata deletion. The metadata:
Contains session transaction information for user operations.
Is stored in the
config.transactionscollection.
When the number of internal sessions is greater than
internalSessionsReapThreshold, the metadata is deleted.If you set
internalSessionsReapThresholdto0, the internal session metadata is only deleted when the user session ends.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following example sets
internalSessionsReapThresholdto500sessions:db.adminCommand( { setParameter: 1, internalSessionsReapThreshold: 500 } ) You can also set
internalSessionsReapThresholdat startup. For example:mongod --setParameter internalSessionsReapThreshold=500
transactionLifetimeLimitSecondsAvailable for
mongodonly.Default: 60
Specifies the lifetime of multi-document transactions. Transactions that exceed this limit are considered expired and will be aborted by a periodic cleanup process. The cleanup process runs every
transactionLifetimeLimitSeconds/2 seconds or at least once every 60 seconds.The cleanup process helps relieve storage cache pressure.
The minimum value for transactionLifetimeLimitSeconds is
1second.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following sets the
transactionLifetimeLimitSecondsto30seconds:db.adminCommand( { setParameter: 1, transactionLifetimeLimitSeconds: 30 } ) You can also set parameter
transactionLifetimeLimitSecondsat startup time.mongod --setParameter "transactionLifetimeLimitSeconds=30" To set the parameter for a sharded cluster, the parameter must be modified for all shard replica set members.
Starting in MongoDB 5.0, if you change the
transactionLifetimeLimitSecondsparameter, you must also changetransactionLifetimeLimitSecondsto the same value on all config server replica set members. Keeping this value consistent:Ensures the routing table history is retained for at least as long as the transaction lifetime limit on the shard replica set members.
Reduces the transaction retry frequency and therefore improves performance.
transactionTooLargeForCacheThresholdNew in version 6.2.
Available for
mongodonly.Type: decimal
Default: 0.75
The threshold value for retrying transactions that fail due to cache pressure. The value is a percentage of the dirty cache size. The default value,
0.75, means 75% of the dirty cache.The dirty cache is limited to 20% of the total cache size. When
transactionTooLargeForCacheThresholdis set to0.75, the server only retries transactions that use less than 15% (0.75 * 20%) of the total storage engine cache.The limit only applies to retries. Large transactions can use more than
transactionTooLargeForCacheThresholdpercent of the dirty cache. However, if a large transaction is rolled back due to cache pressure, the server issues aTransactionTooLargeForCacheerror and does not retry the transaction.To disable this behavior, set
transactionTooLargeForCacheThresholdto1.0.This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
For more information on WiredTiger storage, see:
storage.wiredTigerOptions.
maxTransactionLockRequestTimeoutMillisAvailable for
mongodonly.Type: integer
Default: 5
The maximum amount of time in milliseconds that multi-document transactions should wait to acquire locks required by the operations in the transaction.
If the transaction cannot acquire the locks after waiting
maxTransactionLockRequestTimeoutMillis, the transaction aborts.By default, multi-document transactions wait
5milliseconds. That is, if the transaction cannot acquire the locks within5milliseconds, the transaction aborts. If an operation provides a greater timeout in a lock request,maxTransactionLockRequestTimeoutMillisoverrides the operation-specific timeout.You can set
maxTransactionLockRequestTimeoutMillisto:0such that if the transaction cannot acquire the required locks immediately, the transaction aborts.A number greater than
0to wait the specified time to acquire the required locks. This can help obviate transaction aborts on momentary concurrent lock acquisitions, like fast-running metadata operations. However, this could possibly delay the abort of deadlocked transaction operations.-1to use the operation specific timeout.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following sets the
maxTransactionLockRequestTimeoutMillisto20milliseconds:db.adminCommand( { setParameter: 1, maxTransactionLockRequestTimeoutMillis: 20 } ) You can also set this parameter during start-up:
mongod --setParameter maxTransactionLockRequestTimeoutMillis=20
Slot-Based Execution Parameters
planCacheSizeNew in version 6.3.
Available for
mongodonly.Type: string
Default: 5%
Note
Although the
planCacheSizeparameter existed in prior versions of MongoDB, it had no effect on the plan cache until version 6.3.Sets the size of the plan cache only for the slot-based query execution engine.
You can set the
planCacheSizevalue to either:A percentage of the system's total physical memory to allocate for the plan cache. For example,
"8.5%".The exact amount of data to allocate for the plan cache in either
MBorGB. For example,"100MB"or"1GB".
Increasing the plan cache size adds more cached plan cache query shapes for the query planner. This can improve query performance, but increases memory usage.
This parameter is available both at runtime and at startup:
To set the parameter at runtime, use the
setParametercommand.To set the parameter at startup, use the
setParametersetting.
The following startup command sets
planCacheSizeto 80 megabytes:mongod --setParameter planCacheSize="80MB" You can also use the
setParametercommand within the MongoDB Shell:db.adminCommand( { setParameter: 1, planCacheSize: "80MB" } )