MongoDB Server Parameters


MongoDB provides a number of configuration options that are accessible via the --setParameter option to mongod. This document documents all of these options.

For additional run time configuration options, see Configuration File Options and Manual Page for mongod.



New in version 3.0.0.

Specify wiredTiger storage engine configuration options for a running mongod instance. You can only set this parameter using the setParameter command and not using the command line or configuration file option. To change wiredTiger storage engine configurations when starting mongod, use the --wiredTigerEngineConfig option.

Consider the following operation prototype:

db.adminCommand( { "setParameter": 1,
             "wiredTigerEngineRuntimeConfigSetting": "<option>=<setting>,<option>=<setting>" })

See the WiredTiger documentation for all available WiredTiger configuration options.


New in version 2.4.

Specify 0 to disable localhost authentication bypass. Enabled by default.

enableLocalhostAuthBypass is not available using setParameter database command. Use the setParameter option in the configuration file or the --setParameter option on the command line.

See Localhost Exception for more information.


New in version 2.4.

enableTestCommands enables a set of internal commands useful for internal testing operations. enableTestCommands is only available when starting mongod and you cannot use setParameter to modify this parameter. Consider the following mongod invocation, which sets enableTestCommands:

mongod --setParameter enableTestCommands=1

enableTestCommands provides access to the following internal commands:


Specify an integer between 1 and 500 signifying the number of milliseconds (ms) between journal commits.

Consider the following example which sets the journalCommitInterval to 200 ms:

db.getSiblingDB("admin").runCommand( { setParameter: 1, journalCommitInterval: 200 } )

See also



New in version 2.4.

Specify 1 to enable logging of userids.

Disabled by default.


Specify an integer between 0 and 5 signifying the verbosity of the logging, where 5 is the most verbose.

Consider the following example which sets the logLevel to 2:

use admin
db.runCommand( { setParameter: 1, logLevel: 2 } )

See also



New in version 3.0.0.

Sets the verbosity levels of various components for log messages. The verbosity level determines the amount of Informational and Debug messages MongoDB outputs.

The verbosity level can range from 0 to 5:

  • 0 is the MongoDB’s default log verbosity level, to include Informational messages.
  • 1 to 5 increases the verbosity level to include Debug messages.

For a component, you can also specify -1 to 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 verbosity field corresponds to systemLog.verbosity which sets the default level for all components. The default value of systemLog.verbosity is 0.

The components correspond to the following settings:

Unless explicitly set, the component has the verbosity level of its parent. For example, storage is the parent of storage.journal. That is, if you specify a storage verbosity level, this level also applies to storage.journal components unless you specify the verbosity level for storage.journal.

For example, the following sets the default verbosity level to 1, the query to 2, the storage to 2, and the storage.journal to 1.

use admin
db.runCommand( {
   setParameter: 1,
   logComponentVerbosity: {
      verbosity: 1,
      query: { verbosity: 2 },
      storage: {
         verbosity: 2,
         journal: {
            verbosity: 1
} )

You can also set parameter logComponentVerbosity at run-time, passing the verbosity level document as a string.

mongo shell also provides the db.setLogLevel() to set the log level for a single component. For various ways to set the log verbosity level, see Configure Log Verbosity Levels.


Specify whether all queries must use indexes. If 1, MongoDB will not execute queries that require a table scan and will return an error.

Consider the following example which sets notablescan to 1 or true:

db.getSiblingDB("admin").runCommand( { setParameter: 1, notablescan: 1 } )

Setting notablescan to 1 can 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 Evaluate Performance of Current Operations and Optimize Query Performance sections and using the logLevel parameter, mongostat and profiling.

Don’t run production mongod instances with notablescan because preventing table scans can potentially affect queries in all databases, including administrative queries.


New in version 2.2.

Use replIndexPrefetch in conjunction with replSetName when configuring a replica set. The default value is all and available options are:

  • none
  • all
  • _id_only

By default secondary members of a replica set will load all indexes related to an operation into memory before applying operations from the oplog. You can modify this behavior so that the secondaries will only load the _id index. Specify _id_only or none to prevent the mongod from loading any index into memory.


New in version 1.6.

Specify the number of oplog entries to apply as a single batch. replApplyBatchSize must be an integer between 1 and 1024. The default value is 1. This option only applies to master/slave configurations and is valid only on a mongod started with the --slave command line option.

Batch sizes must be 1 for members with slavedelay configured.


New in version 2.4.

saslHostName overrides MongoDB’s default hostname detection for the purpose of configuring SASL and Kerberos authentication.

saslHostName does not affect the hostname of the mongod or mongos instance for any purpose beyond the configuration of SASL and Kerberos.

You can only set saslHostName during start-up, and cannot change this setting using the setParameter database command.


saslHostName supports Kerberos authentication and is only included in MongoDB Enterprise. For Linux systems, see Configure MongoDB with Kerberos Authentication on Linux for more information.


New in version 2.4.

Deprecated since version 2.6: supportCompatibilityFormPrivilegeDocuments has no effect in 2.6 and will be removed in 3.0.

supportCompatibilityFormPrivilegeDocuments is not available using setParameter database command. Use the setParameter option in the configuration file or the --setParameter option on the command line.


Specify the interval in seconds between fsync operations where mongod flushes its working memory to disk. By default, mongod flushes memory to disk every 60 seconds. In almost every situation you should not set this value and use the default setting.

Consider the following example which sets the syncdelay to 60 seconds:

db.getSiblingDB("admin").runCommand( { setParameter: 1, syncdelay: 60 } )

See also

syncPeriodSecs and journalCommitInterval.


New in version 2.2.

Configures mongod to log full source code stack traces for every database and socket C++ exception, for use with debugging. If true, mongod will log full stack traces.

Consider the following example which sets the traceExceptions to true:

db.getSiblingDB("admin").runCommand( { setParameter: 1, traceExceptions: true } )

Sets quiet logging mode. If 1, mongod will go into a quiet logging mode which will not log the following events/activities:

Consider the following example which sets the quiet to 1:

db = db.getSiblingDB("admin")
db.runCommand( { setParameter: 1, quiet: 1 } )

See also



Deprecated since version 2.6: MongoDB enables the text search feature by default. Manual enabling of this feature is unnecessary.

Enables the text search feature. When manually enabling, you must enable on each and every mongod for replica sets.


New in version 2.6.

Default: 200

mongos instances reuse connections to the shards to service multiple requests. However, in some situations very active mongos instances may need to maintain a pool larger than the default maximum of 200 connections.

The connPoolMaxShardedConnectionsPerHost value defines the size of the largest connection pool that mongos instances will maintain for communication to the shards. The size of a pool does not prevent mongos instances from creating additional connections, but does prevent the connection pools from retaining connections above this limit.

Increase the connPoolMaxShardedConnectionsPerHost value only if the number of connections in a connection pool has a high level of churn, or if the total number of created connections increase.

connPoolMaxShardedConnectionsPerHost only applies for mongos instances. You can only set connPoolMaxShardedConnectionsPerHost during start up in the config file or on the command line, as follows to increase the size of the connection pool:

mongos --setParameter connPoolMaxShardedConnectionsPerHost=250

New in version 2.6.

Default: 200

mongod maintains connection pools for outgoing connections to other mongod instances to maximize connection reuse.

The connPoolMaxConnectionsPerHost value defines the size of the largest connection pool that mongod instances will maintain for inter-process communication. The size of a pool does not prevent a mongod from creating additional connections, but does prevent a connection pool from retaining connections in excess of the value of connPoolMaxConnectionsPerHost.

Only adjust this setting if your driver does not pool connections and you’re using authentication in the context of a sharded cluster.

connPoolMaxShardedConnectionsPerHost applies to mongod instances only. You can only set connPoolMaxShardedConnectionsPerHost during start up in the config file or on the command line, as follows to increase the size of the connection pool:

mongos --setParameter connPoolMaxConnectionsPerHost=250

Changed in version 2.6: Added support for the PLAIN and MONGODB-X509 authentication mechanisms.

Changed in version 3.0: Added support for the SCRAM-SHA-1 authentication mechanism.

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.

Value Description
SCRAM-SHA-1 RFC 5802 standard Salted Challenge Response Authentication Mechanism using the SHA-1 hash function.
MONGODB-CR MongoDB challenge/response authentication.
MONGODB-X509 MongoDB 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 PLAIN for authenticating in-database users. PLAIN transmits passwords in plain text. This mechanism is available only in MongoDB Enterprise.

For example, to specify PLAIN as the authentication mechanism, use the following command:

mongod --setParameter authenticationMechanisms=PLAIN --auth


Available only in MongoDB Enterprise (except MongoDB Enterprise for Windows).

Specify the path to the Unix Domain Socket of the saslauthd instance to use for proxy authentication.


New in version 2.6.

Set the net.ssl.mode to either preferSSL or requireSSL. Useful during rolling upgrade to SSL to minimize downtime.

The default distribution of MongoDB does not contain support for SSL. To use SSL you can either compile MongoDB with SSL support or use MongoDB Enterprise. See Configure mongod and mongos for SSL for more information about SSL and MongoDB.

db.getSiblingDB('admin').runCommand( { setParameter: 1, sslMode: "preferSSL" } )

New in version 2.6.

Set the clusterAuthMode to either sendX509 or x509. Useful during rolling upgrade to use x509 for membership authentication to minimize downtime.

The default distribution of MongoDB does not contain support for SSL. To use SSL you can either compile MongoDB with SSL support or use MongoDB Enterprise. See Configure mongod and mongos for SSL for more information about SSL and MongoDB.

db.getSiblingDB('admin').runCommand( { setParameter: 1, clusterAuthMode: "sendX509" } )

New in version 3.0.0.

Default: 10000

Changes the number of hashing iterations used for all new stored passwords. 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 number of iterations for existing passwords.

You can set scramIterationCount when starting MongoDB or on running mongod instances.


New in version 2.4.6.

To support TTL Indexes, mongod instances have a background thread that is responsible for deleting documents from collections with TTL indexes.

To disable this worker thread for a mongod, set ttlMonitorEnabled to false, as in the following operations:

db.getSiblingDB('admin').runCommand( { setParameter: 1, ttlMonitorEnabled: false } )

Alternately, you may disable the thread at run-time by starting the mongod instance with the following option:

mongod --setParameter ttlMonitorEnabled=false

New in version 2.4.6.

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.

MongoDB only permits setting saslServiceName at startup. The setParameter command can not change this setting.

saslServiceName is only available in MongoDB Enterprise.


Ensure that your driver supports alternate service names.


Available for the MMAPv1 storage engine only.

Deprecated since version 3.0.0: MongoDB deprecates the newCollectionsUsePowerOf2Sizes parameter such that you cannot set the newCollectionsUsePowerOf2Sizes to false and newCollectionsUsePowerOf2Sizes set to true is a no-op. To disable the power of 2 allocation for a collection, use the collMod command with the noPadding flag or the db.createCollection() method with the noPadding option.

Default: true.


Changed in version 3.0: Default value has changed to 30 seconds, and the minimum value allowed has changed to 1 second. mongos only clears the user cache if there are changes.

Default: 30.

On a mongos instance, specifies the interval (in seconds) at which the mongos instance 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, mongos will not clear the cache.

This parameter has a minimum value of 1 second and a maximum value of 86400 seconds (24 hours).


New in version 2.6.

In MongoDB 2.6, if you attempt to insert or update a document so that the value of an indexed field is longer than the Index Key Length Limit, the operation will fail and return an error to the client. In previous versions of MongoDB, these operations would successfully insert or modify a document but the index or indexes would not include references to the document.

To avoid this issue, consider using hashed indexes or indexing a computed value. If you have an existing data set and want to disable this behavior so you can upgrade and then gradually resolve these indexing issues, you can use:parameter:failIndexKeyTooLong to disable this behavior.

failIndexKeyTooLong defaults to true. When false, a 2.6 mongod instance will provide the 2.4 behavior.

Issue the following command to disable the index key length validation: for a running:program:mongod instance:

db.getSiblingDB('admin').runCommand( { setParameter: 1, failIndexKeyTooLong: false } )

You can also set failIndexKeyTooLong at run-time with the following operation.

mongod --setParameter failIndexKeyTooLong=false


Available only in MongoDB Enterprise.

New in version 2.6.5.

Default: false

Enables the auditing of authorization successes for the authCheck action.

When auditAuthorizationSuccess is false, the audit system only logs the authorization failures for authCheck.

To enable the audit of authorization successes, issue the following command:

db.runAdminCommand( { setParameter: 1, auditAuthorizationSuccess: true } )

Enabling auditAuthorizationSuccess degrades performance more than logging only the authorization failures.