Docs 菜单

Docs 主页开发应用程序MongoDB Manual

MongoDB Server 参数

在此页面上

  • 概要
  • 参数
  • 身份验证参数
  • 一般参数
  • 记录参数
  • 诊断参数
  • 复制性和一致性
  • 分片参数
  • 健康管理器参数
  • 存储参数
  • WiredTiger 参数
  • 审核参数
  • 事务参数

MongoDB 提供许多可以使用以下命令进行设置的配置选项:

  • setParameter命令:

    db.adminCommand( { setParameter: 1, <parameter>: <value> } )
  • setParameter 配置设置:

    setParameter:
    <parameter1>: <value1>
    ...
  • mongodmongos--setParameter 命令行选项:

    mongod --setParameter <parameter>=<value>
    mongos --setParameter <parameter>=<value>

有关其他配置选项,请参阅配置文件选项mongodmongos

authenticationMechanisms

适用于 mongodmongos

指定服务器接受的身份验证机制列表。将其设置为以下一个或多个以下值。如果指定多个值,则使用逗号分隔的列表,并且不要使用空格。有关身份验证机制的说明,请参阅身份验证

说明
SCRAM-SHA-1
RFC5802 使用 SHA-1 哈希函数的标准 Salted 挑战响应身份验证机制。
RFC7677 使用 SHA-256 哈希函数的标准 Salted 挑战响应身份验证机制。
MongoDB TLS/SSL 证书身份验证。
GSSAPI (Kerberos)
使用 Kerberos 的外部身份验证。此机制仅在MongoDB Enterprise中可用。
PLAIN (LDAP SASL)
使用 LDAP 进行外部身份验证。您还可以使用PLAIN对数据库内用户进行身份验证。 PLAIN以纯文本形式传输密码。此机制仅在MongoDB Enterprise中可用。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

例如,要将 PLAINSCRAM-SHA-256 指定为身份验证机制,使用以下命令:

mongod --setParameter authenticationMechanisms=PLAIN,SCRAM-SHA-256 --auth
awsSTSRetryCount

在版本7中进行了更改。 0 :(也从6 . 0 . 7和5 . 0 . 18开始)

在上一个版本中,仅当服务器返回 HTTP 500 错误时,AWS IAM 身份验证才会重试。

适用于 mongodmongos

类型:整型

默认值:2

对于使用 AWS IAM 档案 的 MongoDB 部署 或 AWS IAM 环境变量。

连接失败后 AWS IAM 身份验证重试的最大次数。

以下示例将awsSTSRetryCount设置为15重试:

mongod --setParameter awsSTSRetryCount=15

或者,以下示例使用 mongosh 中的setParameter命令

db.adminCommand( { setParameter: 1, awsSTSRetryCount: 15 } )
clusterAuthMode

适用于 mongodmongos

clusterAuthMode 设置为 sendX509x509滚动升级期间使用 x509 进行成员身份验,以最大限度地减少停机时间。

有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

此参数仅在运行时可用。要设置参数,请使用setParameter命令。

db.adminCommand( { setParameter: 1, clusterAuthMode: "sendX509" } )
enableLocalhostAuthBypass

适用于 mongodmongos

指定 0false,禁用绕过本地主机身份验证。默认启用。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

更多信息,请参阅本地主机异常

KeysRotationIntervalSec

版本 3.6 中的新增功能

默认:7776000 秒(90 天)

指定 HMAC 签名密钥 在轮换到下一个之前有效。此参数主要用于促进身份验证测试。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

ldapForceMultiThreadMode

4.2 版本中的新增功能

默认:false

启用并发 LDAP 操作的性能。

注意

仅当您确定 libldap 实例在此模式下可以安全使用时,才可启用此标志。如果您使用的 libldap 版本非安全线程,您可能会遇到 MongoDB 进程崩溃。

必须使用ldapForceMultiThreadMode才能使用 LDAP 连接池。要启用 LDAP 连接池,请将ldapForceMultiThreadModeldapUseConnectionPool设置为true

提示

如果您对 MongoDB 版本、OS 版本或 libldap 版本有任何疑问,请联系 MongoDB 支持。

ldapQueryPassword

适用于 mongodmongos

类型:字符串

用于绑定到 LDAP 服务器的密码。您必须将ldapQueryUser与此参数一起使用。

如果未设置,mongod 或 mongos 不会尝试绑定到 LDAP 服务器。

ldapQueryUser

适用于 mongodmongos

类型:字符串

绑定到 LDAP 服务器的用户。您必须将ldapQueryPassword与此参数一起使用。

如果未设置,mongod 或 mongos 不会尝试绑定到 LDAP 服务器。

ldapRetryCount

6.1 版本新增内容

适用于 mongodmongos

类型:整型

默认值:0

对于使用 LDAP 授权的MongoDB 部署。

在出现网络错误后服务器 LDAP 管理器重试的操作数。

例如,以下操作将ldapRetryCount设置为3秒:

mongod --ldapRetryCount=3

或者,如果在 mongosh 中使用setParameter命令

db.adminCommand( { setParameter: 1, ldapRetryCount: 3 } )
ldapUserCacheInvalidationInterval

用于使用LDAP 授权的 MongoDB 部署。仅适用于mongod实例。

mongod 实例在外部用户缓存刷新之间的等待间隔(以秒为单位)。MongoDB 刷新外部用户缓存后,下次 LDAP 授权用户发出操作时,MongoDB 会从 LDAP 服务器重新获取授权数据。

增加指定的值会增加 MongoDB 和 LDAP 服务器不同步的时间,但会减少 LDAP 服务器的负载。相反,减少指定的值会减少 MongoDB 和 LDAP 服务器不同步的时间,但会增加 LDAP 服务器的负载。

默认为 30 秒。

ldapUseConnectionPool

指定在连接 LDAP 服务器进行身份验证/授权时,MongoDB 是否应使用连接池化。

MongoDB 使用以下默认值:

  • 在 Windows 上为 true。

  • 在 Linux 上运行为 true:MongoDB Enterprise 二进制文件链接到 libldap_r

  • 在 Linux 上运行为 false:MongoDB Enterprise 二进制文件链接到 libldap

您只能在启动期间设置ldapUseConnectionPool ,并且无法使用setParameter数据库命令更改此设置。

ldapConnectionPoolUseLatencyForHostPriority

4.2.1 版本中的新增内容

默认值:true

一个布尔值,用于确定 LDAP 连接池(请参阅ldapUseConnectionPool )是否应使用 LDAP 服务器的延迟来确定连接顺序(从最低延迟到最高延迟)。

您只能在启动期间设置ldapConnectionPoolUseLatencyForHostPriority ,而无法在运行期间使用setParameter数据库命令更改此设置。

ldapConnectionPoolMinimumConnectionsPerHost

4.2.1 版本中的新增内容

默认值:1

保持向 LDAP 服务器开放的最小连接数。

您只能在启动期间设置ldapConnectionPoolMinimumConnectionsPerHost ,而无法在运行期间使用setParameter数据库命令更改此设置。

ldapConnectionPoolMaximumConnectionsPerHost

4.2.1 版本中的新增内容

从 MongoDB 5版本开始进行了更改。 0 。 9已将默认值更改为2147483647 。在以前的版本中,默认值未设置。

默认值:2147483647

保持向 LDAP 服务器开放的最大连接数。

您只能在启动期间设置ldapConnectionPoolMaximumConnectionsPerHost ,而无法在运行期间使用setParameter数据库命令更改此设置。

ldapConnectionPoolMaximumConnectionsInProgressPerHost

4.2.1 版本中的新增内容

从 MongoDB 5版本开始进行了更改。 0 。 9已将默认值更改为2 。在以前的版本中,默认值未设置。

默认值:2

每个 LDAP 服务器正在进行的连接操作的最大数量。

您只能在启动期间设置ldapConnectionPoolMaximumConnectionsInProgressPerHost ,并且无法使用setParameter数据库命令更改此设置。

ldapConnectionPoolHostRefreshIntervalMillis

4.2.1 版本中的新增内容

默认值:60000

LDAP 连接池中进行运行状况检查之间的毫秒数。

您只能在启动期间设置ldapConnectionPoolHostRefreshIntervalMillis ,并且无法使用setParameter数据库命令更改此设置。

ldapConnectionPoolIdleHostTimeoutSecs

4.2.1 版本中的新增内容

默认值:300

连接到 LDAP 服务器的池连接在关闭前保持空闲状态的最大秒数。

您只能在启动期间设置ldapConnectionPoolIdleHostTimeoutSecs ,并且无法使用setParameter数据库命令更改此设置。

maxValidateMemoryUsageMB

版本 5.0 中的新增功能

默认值:200

validate 命令的最大内存使用限制(以兆字节为单位)。如果超出限制,validate 会返回尽可能多的结果,并警告由于内存限制,可能无法报告所有损坏。

此参数在运行时和初创企业时都可用:

ocspEnabled

适用于 Linux 和 macOS。

默认值:true

启用或禁用 OCSP 的标志。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

例如,以下命令禁用 OCSP:

mongod --setParameter ocspEnabled=false ...

提示

另请参阅:

ocspValidationRefreshPeriodSecs

在 Linux 上可用。

刷新装订的 OCSP 状态响应之前等待的秒数。指定一个大于或等于 1 的数字。

您只能在启动期间在ocspValidationRefreshPeriodSecs configuration file中或使用命令行上的 选项设置--setParameter 。以下示例将该参数设置为3600 秒:

mongod --setParameter ocspValidationRefreshPeriodSecs=3600 ...

从 MongoDB 5.0 开始,rotateCertificates 命令和 db.rotateCertificates() 方法也会刷新任何已装订 OCSP 响应。

opensslCipherConfig

版本 3.6 中的新增功能

仅适用于 Linux

通过使用原生 TLS/SSL 库,参数opensslCipherConfig在 Linux/BSD 中受支持,而在 Windows 和 macOS 中不再受支持。

使用 TLS/SSL 加密时,指定 OpenSSL 的密码字符串。有关密码字符串的列表,请参阅 https://www.openssl.org/docs/man 。 。 111/man1 /ciphers.html 。可以以冒号分隔的列表形式提供多个密码字符串。

注意

此参数仅适用于 TLS 1 。 2或更早版本。要指定与 TLS 1一起使用的密码套件。 3 ,使用opensslCipherSuiteConfig参数。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

对于版本4 。2 及更高版本,则优先使用TLS 选项而非SSL 选项。 TLS 选项与SSL 选项功能相同。例如,以下示例在mongod opensslCipherConfig'HIGH:!EXPORT:!aNULL@STRENGTH'MongoDB 中使用 的 密码字符串配置4 }。2 :

mongod --setParameter opensslCipherConfig='HIGH:!EXPORT:!aNULL@STRENGTH' --tlsMode requireTLS --tlsCertificateKeyFile Certs/server.pem
opensslCipherSuiteConfig

版本 5.0 中的新增功能

仅适用于 Linux

指定 OpenSSL 在使用 TLS 1.3 加密时应允许的受支持的密码套件列表。

有关用于 TLS1 的密码套件列表。3 ,请参阅 https://www.openssl.org/docs/man1 1。 。1 /man3 /SSL_CTX_set_cipher_list.html 。可以以冒号分隔的列表形式提供多个密码套件。

注意

此参数仅适用于 TLS 1 。 3 。要指定与 TLS 1一起使用的密码字符串。 2或更早版本,请使用opensslCipherConfig参数。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

例如,以下代码使用mongodopensslCipherSuiteConfig 密码套件配置 ,以与'TLS_AES_256_GCM_SHA384' TLS1 一起使用。3 :

mongod --setParameter opensslCipherSuiteConfig='TLS_AES_256_GCM_SHA384' --tlsMode requireTLS --tlsCertificateKeyFile Certs/server.pem
opensslDiffieHellmanParameters

版本 3.6 中的新增功能

仅适用于 Linux

使用 TLS 1.2 或更早版本时,指定包含 OpenSSL Diffie-Hellman 参数的 PEM 文件的路径。指定 OpenSSL Diffie-Hellman 参数可在 TLS/SSL 加密期间支持临时 Diffie-Hellman (DHE) 密码套件。

不支持将此参数与 TLS 1.3 一起使用。

临时 Diffie-Hellman (DHE) 密码套件(和临时椭圆曲线 Diffie-Hellman (ECDHE) 密码套件)提供前向保密前向保密密码套件创建一个临时会话密钥,该密钥受服务器私钥保护但从未传输。这确保即使服务器的私钥被泄露,您也无法使用泄露的密钥解密过去的会话。

注意

从 MongoDB4 开始。2 ,如果未设置opensslDiffieHellmanParameters 但启用了 ECDHE ,则 MongoDB 使用ffdhe3072 Diffie-Hellman 参数启用 DHE,如 RFC-7919 #appendix-A2 中所定义。 。ffdhe3072 是一个强参数(具体来说,大小大于1024 )。 Java6 和 不支持强参数,除非从7 Oracle 购买了扩展支持。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

如果出于性能考虑,您需要禁用对 DHE 密码套件的支持,请使用opensslCipherConfig参数:

mongod --setParameter opensslCipherConfig='HIGH:!EXPORT:!aNULL:!DHE:!kDHE@STRENGTH' ...
saslauthdPath

注意

仅适用于 MongoDB Enterprise(适用于 Windows 的 MongoDB Enterprise 除外)。

适用于 mongodmongos

指定用于代理身份验证的 saslauthd 实例的 Unix 域套接字的路径。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

saslHostName

适用于 mongodmongos

saslHostName 覆盖 MongoDB 的默认主机名检测,以配置 SASL 和 Kerberos 身份验证。

除 SASL 和 Kerberos 配置之外, saslHostName不会出于任何目的影响mongodmongos实例的主机名。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

注意

saslHostName 支持 Kerberos 身份验证,并且仅包含在 MongoDB Enterprise 中。有关详细信息,请参阅以下:

saslServiceName

适用于 mongodmongos

允许用户在每个实例的基础上覆盖 Kerberos 主名称的默认 Kerberos 服务名称组件。如果未指定,则默认值为 mongodb

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

saslServiceName 仅在 MongoDB Enterprise 中可用。

重要

确保您的驱动程序支持备用服务名称。

scramIterationCount

默认值10000

适用于 mongodmongos

更改用于所有新的 SCRAM-SHA-1 密码的哈希迭代次数。更多的迭代次数会增加客户端向 MongoDB 进行身份验证所需的时间,但会使密码不易受到暴力攻击。默认值适用于最常见的使用案例和要求。

如果修改此值,不会更改现有密码的迭代计数。 scramIterationCount值必须为5000或更大。

此参数在运行时和初创企业时都可用:

例如,以下示例将scramIterationCount设置为12000

mongod --setParameter scramIterationCount=12000

或者,如果在 mongosh 中使用setParameter命令

db.adminCommand( { setParameter: 1, scramIterationCount: 12000 } )
scramSHA256IterationCount

默认值15000

适用于 mongodmongos

更改用于所有新的 SCRAM-SHA-256 密码的哈希迭代次数。更多的迭代次数会增加客户端向 MongoDB 进行身份验证所需的时间,但会使密码不易受到暴力攻击。默认值适用于最常见的使用案例和要求。

如果修改此值,不会更改现有密码的迭代计数。 scramSHA256IterationCount值必须为5000或更大。

此参数在运行时和初创企业时都可用:

例如,以下示例将scramSHA256IterationCount设置为20000

mongod --setParameter scramSHA256IterationCount=20000

或者,如果在 mongosh 中使用setParameter命令

db.adminCommand( { setParameter: 1, scramSHA256IterationCount: 20000 } )
sslMode

适用于 mongodmongos

net.ssl.mode 设置为 preferSSLrequireSSL滚动升级到 TLS/SSL 时很有用,可最大限度地减少停机时间。

有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

此参数仅在运行时可用。要设置参数,请使用setParameter命令。

db.adminCommand( { setParameter: 1, sslMode: "preferSSL" } )

提示

另请参阅:

tlsMode

4.2 版本中的新增功能

适用于 mongodmongos

设置为:

  • preferTLS

  • requireTLS

滚动升级到tlsMode TLS/SSL 期间, 参数非常有用,可最大限度地减少停机时间。

此参数仅在运行时可用。要设置参数,请使用setParameter命令。

db.adminCommand( { setParameter: 1, tlsMode: "preferTLS" } )

有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

提示

另请参阅:

tlsOCSPStaplingTimeoutSecs

适用于 Linux。

mongod/mongos 实例等待接收其证书的 OCSP 状态响应的最大秒数。

指定一个大于或等于 ( >= ) 1的整数。如果未设置, tlsOCSPStaplingTimeoutSecs将使用tlsOCSPVerifyTimeoutSecs值。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

例如,以下代码将tlsOCSPStaplingTimeoutSecs设置为20秒:

mongod --setParameter tlsOCSPStaplingTimeoutSecs=20 ...
tlsOCSPVerifyTimeoutSecs

适用于 Linux 和 Windows。

默认值:5

mongod/mongos 在验证服务器证书时应等待 OCSP 响应的最大秒数。

指定一个大于或等于 (>=) 1 的整数。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

例如,以下代码将tlsOCSPVerifyTimeoutSecs设置为20秒:

mongod --setParameter tlsOCSPVerifyTimeoutSecs=20 ...
tlsUseSystemCA

仅适用于 mongod

类型:布尔值

默认:false

指定 MongoDB 是否加载已提供给操作系统的证书颁发机构的 TLS 证书。

重要

启动mongod 启用了 TLS/SSL 的 实例时,您必须指定--tlsCAFile 标志、net.tls.CAFile 配置选项或tlsUseSystemCA 参数的值。

--tlsCAFiletls.CAFiletlsUseSystemCA 是互斥的。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

例如,要将tlsUseSystemCA设置为true

mongod --setParameter tlsUseSystemCA=true

有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

tlsWithholdClientCertificate

默认:false

4.2 版本中的新增功能

适用于 mongodmongos

可通过 --tlsClusterFile 选项或在 --tlsClusterFile 未设置时通过 --tlsCertificateKeyFile 选项为 mongodmongos 设置 TLS 证书。如果已设置 TLS 证书,默认情况下,实例会在与部署中其他 mongodmongos 实例启动集群内通信时发送证书。将 tlsWithholdClientCertificate 设置为 1true 以指示实例在这些通信期间拒绝发送其 TLS 证书。在部署的所有成员上将此选项与 --tlsAllowConnectionsWithoutCertificates 一起使用(以允许没有证书的入站连接)。tlsWithholdClientCertificate--clusterAuthMode x509 互斥。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

tlsX509ClusterAuthDNOverride

4.2 版本中的新增功能

适用于 mongodmongos

实例还可以使用的用于识别部署成员的可分辨名称 (DN)。

对于使用 x.509 证书进行 clusterAuthMode 的 MongoDB 部署,部署成员在集群内通信期间使用 x.509 证书(net.tls.clusterFile(如指定)和 net.tls.certificateKeyFile)相互识别。对于相同部署的成员,其证书中的 DN 必须具有相同的组织属性 (O)、组织单位属性 (OU) 和域组件 (DC)。

如果为成员设置了tlsX509ClusterAuthDNOverride ,则该成员还可以在比较所提供证书的DN组件( OOUDC )时使用覆盖值。也就是说,成员根据其net.tls.clusterFile / net.tls.certificateKeyFile检查所提供的证书。如果 DN 不匹配,成员会对照tlsX509ClusterAuthDNOverride值检查所提供的证书。

注意

如设置,则必须在部署的所有成员上设置此参数。

此参数在运行时和初创企业时都可用:

您可以使用此参数将证书滚动更新为包含新 DN 值的新证书。请参阅对包含新 DN 的 x.509 集群证书进行滚动更新

有关会员证书要求的更多信息,请参阅会员证书要求了解详情。

tlsX509ExpirationWarningThresholdDays

适用于 mongodmongos

默认值:30

如果提供的 x,则mongod / mongos会记录连接警告。 509证书将在mongod/mongos系统时钟后的30天内过期。使用tlsX509ExpirationWarningThresholdDays参数控制证书过期警告阈值:

  • 增加参数值以在证书到期日期之前触发警告。

  • 减小参数值可在接近证书到期日期时触发警告。

  • 将参数设置为 0 以禁用警告。

该参数的最小值为 0

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

请参阅x。 509证书即将过期trigger警告,了解有关 x 的更多信息。 509过期警告。

有关 x509 的更多信息。 证书有效性,请参阅 RFC52804 。1 。2 。5 。

sslWithholdClientCertificate

默认:false

自版本 4.2 起已被弃用:请改用 tlsWithholdClientCertificate

适用于 mongodmongos

可通过 --tlsClusterFile 选项或在 --tlsClusterFile 未设置时通过 --tlsCertificateKeyFile 选项为 mongodmongos 设置 TLS 证书。如果已设置 TLS 证书,默认情况下,实例会在与部署中其他 mongodmongos 实例启动集群内通信时发送证书。将 sslWithholdClientCertificate 设置为 1true 以指示实例在这些通信期间拒绝发送其 TLS 证书。在部署的所有成员上将此选项与 --tlsAllowConnectionsWithoutCertificates 一起使用(以允许没有证书的入站连接)。sslWithholdClientCertificate--clusterAuthMode x509 互斥。

userCacheInvalidationIntervalSecs

默认值:30

仅适用于 mongos

mongos 实例上,指定 mongos 实例检查以确定用户对象的内存缓存是否有过时数据的间隔(以秒为单位),如有,则清除缓存。如果用户对象没有任何更改,则 mongos 将不会清除缓存。

此参数的最小值为 1 秒,最大值为 86400 秒(24 小时)。

此参数在运行时和初创企业时都可用:

authFailedDelayMs

默认值:0

适用于 mongodmongos

版本 3.4 中的新增功能

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

通知客户端其身份验证尝试失败之前等待的毫秒数。该参数范围介于 05000 之间(含)。

设置此参数会使对数据库暴力登录攻击更加耗时。但是,等待 MongoDB Server 响应的客户端仍然会消耗服务器资源,并且如果服务器同时拒绝对多个其他客户端的访问,这可能会对良性登录尝试产生不利影响。

allowRolesFromX509Certificates

默认值:true

适用于 mongodmongos

一个布尔标志,允许或禁止从客户端 x.509 证书检索授权角色。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

httpVerboseLogging

适用于 mongodmongos

在 Linux 和 macOS 上为 curl 添加了更详细的跟踪。对 Windows 没有影响。

默认情况下,该参数未设置。

此参数在运行时和初创企业时都可用:

mongos --setParameter httpVerboseLogging=true
connPoolMaxConnsPerHost

默认值:200

适用于 mongodmongos

设置传统连接池的最大大小,用于传出连接到全局连接池中的其他mongod实例。池的大小不会阻止创建额外的连接,但阻止连接池保留超过connPoolMaxConnsPerHost值的连接。

注意

该参数与 TaskExecutor 池中的连接分开。请参阅ShardingTaskExecutorPoolMaxSize

当您的驱动程序不使用连接池且您在分片集群的环境下使用身份验证时,才调整此设置。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

mongod --setParameter connPoolMaxConnsPerHost=250
connPoolMaxInUseConnsPerHost

版本3中的新增功能。 6 。 3

适用于 mongodmongos

为传出连接至传统全局连接中的其他 mongod 实例设置给定时间内正在使用的最大连接数。

默认情况下,该参数未设置。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

mongod --setParameter connPoolMaxInUseConnsPerHost=100

提示

另请参阅:

globalConnPoolIdleTimeoutMinutes

版本3中的新增功能。 6 。 3

适用于 mongodmongos

设置传统全局连接池中的连接在关闭之前可以保持空闲状态的时间限制。

默认情况下,该参数未设置。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

mongos --setParameter globalConnPoolIdleTimeoutMinutes=10
cursorTimeoutMillis

默认值:600000(10 分钟)

适用于 mongodmongos

设置 MongoDB 删除空闲游标之前的过期阈值(以毫秒为单位);具体来说,MongoDB 会删除在指定cursorTimeoutMillis时间内处于空闲状态的游标。

此参数在运行时和初创企业时都可用:

例如,以下操作将cursorTimeoutMillis设置为300000毫秒( 5分钟)。

mongod --setParameter cursorTimeoutMillis=300000

或者,如果在 mongosh 中使用setParameter命令

db.adminCommand( { setParameter: 1, cursorTimeoutMillis: 300000 } )

cursorTimeoutMillis设置为小于或等于0会导致所有游标立即符合超时条件。通常,超时值应大于查询返回结果的平均时间。使用cursor.explain()游标修饰符等工具分析平均查询时间并选择适当的超时时间。

警告

作为会话管理的一部分,MongoDB 会清理链接到会话的孤立游标。这意味着具有会话 ID 的孤立游标不使用cursorTimeoutMillis来控制超时。

对于返回游标且空闲时间长于localLogicalSessionTimeoutMinutes的操作,请使用Mongo.startSession()在显式会话中执行该操作。要刷新会话,请运行refreshSessions命令。有关详细信息,请参阅使用refreshSessions刷新游标。

maxNumActiveUserIndexBuilds

仅适用于 mongod

类型:整型

默认值:3

设置主节点上允许并发索引的最大构建次数。这是适用于所有集合的全局限制。

增加 maxNumActiveUserIndexBuilds 的值允许构建额外的并发索引,但这会增加 WiredTiger 缓存的压力。

系统索引不限于 maxNumActiveUserIndexBuilds,但是系统索引构建将计入用户索引构建的限制。

服务器达到 maxNumActiveUserIndexBuilds 后,会阻止构建额外的用户索引,直到并发索引构建的数量低于 maxNumActiveUserIndexBuilds 限制。如果索引构建被阻止,则服务器会记录此消息:

Too many index builds running simultaneously, waiting until the
number of active index builds is below the threshold.

此参数在运行时和初创企业时都可用:

以下命令设置同时进行索引构建的个数上限为 4:

db.adminCommand( { setParameter: 1, maxNumActiveUserIndexBuilds: 4 } )

另请参阅:

notablescan

仅适用于 mongod

指定是否所有查询都必须使用索引。若为 1,MongoDB 将不会执行需要集合扫描的查询,并将返回错误。

考虑以下示例,其中将notablescan设置为1或 true:

db.adminCommand( { setParameter: 1, notablescan: 1 } )

notablescan设置为1对于测试应用程序查询非常有用,例如,可识别扫描整个集合且无法使用索引的查询。

要在没有notablescan的情况下检测未编制索引的查询,请考虑阅读“评估当前操作的性能”和“优化查询性能”部分,并使用logLevel参数、 mongostat分析。

请勿使用 运行生产mongod notablescan实例,因为阻止集合扫描可能会影响所有数据库中的查询,包括管理查询。

此参数在运行时和初创企业时都可用:

ttlMonitorEnabled

仅适用于 mongod

默认值true

为了支持 TTL 索引,为 mongod 实例配备一个后台线程,负责从带有 TTL 索引的集合中删除文档。

此参数在运行时和初创企业时都可用:

要为mongod禁用此工作线程,请将ttlMonitorEnabled设置为false ,如以下操作所示:

db.adminCommand( { setParameter: 1, ttlMonitorEnabled: false } )

或者,你可以在启动时通过使用以下选项启动 mongod 实例来禁用线程:

mongod --setParameter ttlMonitorEnabled=false

重要

除非在 MongoDB 支持部门的指导下,否则请勿在禁用ttlMonitorEnabled的情况下运行生产mongod实例。 阻止 TTL 文档删除可能会对依赖于TTL 索引的 MongoDB 内部系统操作产生负面影响。

tcpFastOpenServer

适用于 mongodmongos

默认值true

能够支持接受来自客户端到 mongod/mongos 的入站 TCP 快速打开 (TFO) 连接。TFO 需要客户端和 mongod/mongos 主机支持并启用 TFO:

Windows

以下 Windows 操作系统支持 TFO:

  • Microsoft Windows Server 2016 及更高版本。

  • Microsoft Windows 10 更新 1607 及更高版本。

macOS
macOS 10.11 (El Capitan) 及更高版本支持 TFO。
Linux

运行 Linux Kernel 3.7 或更高版本 Linux 操作系统可以支持入站 TFO。

设置 /proc/sys/net/ipv4/tcp_fastopen 的值以启用入站 TFO 连接:

  • 设置为 2 以仅启用入站 TFO 连接。

  • 设置为 3 以启用入站和出站 TFO 连接。

如果主机操作系统不支持未配置为支持 TFO 连接,则此参数无效。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

有关 MongoDB TFO 支持的更多信息,请参阅 TCP 快速打开支持

提示

另请参阅:

tcpFastOpenClient

适用于 mongodmongos

默认值true

仅 Linux 操作系统

能够支持从 mongod/mongos 到客户端的出站 TCP 快速打开 (TFO) 连接。TFO 需要客户端和 mongod/mongos 主机支持并启用 TFO。

运行 Linux Kernel 4.11 或更高版本的 Linux 操作系统可以支持出站 TFO。

设置 /proc/sys/net/ipv4/tcp_fastopen 的值以启用出站 TFO 连接:

  • 1 只能启用出站 TFO 连接。

  • 3 启用入站和出站 TFO 连接。

如果主机操作系统不支持未配置为支持 TFO 连接,则此参数无效。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

有关 MongoDB TFO 支持的更多信息,请参阅 TCP 快速打开支持

提示

另请参阅:

tcpFastOpenQueueSize

适用于 mongodmongos

默认值1024

作为建立 TCP 快速打开 (TFO) 连接的一部分,客户端会在完成标准 TCP 3 次握手之前mongod/mongos 提交有效的 TFO cookie。mongod/mongos 保留所有此类待处理 TFO 连接的队列。

tcpFastOpenQueueSize 参数可设置待处理 TFO 连接的队列大小。当队列已满时,mongod/mongos 会回退到对传入客户端请求的正常三次握手,并忽略 TFO cookie 的存在。一旦队列大小回落到限制以下,mongod/mongos 就会开始接受新的 TFO cookie。

  • 增加默认队列大小可能会改善 TFO 对网络性能的影响。然而,队列大小较大也会增加由于传入的 TFO 请求而导致服务器资源耗尽的风险。

  • 减小默认队列大小可以降低由于过多传入 TFO 请求而导致资源服务器资源耗尽的风险。然而,较小的队列大小也可能会降低 TFO 对网络性能的影响。

    最小队列大小为 00 的队列有效禁用 TFO。

此参数对不支持 TFO 连接或未配置 TFO 连接的主机操作系统没有影响。有关 MongoDB TFO 支持的更多信息,请参阅 TCP 快速打开支持

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

disableJavaScriptJIT

仅适用于 mongod

MongoDB JavaScript 引擎使用 SpiderMonkey,实施即时 (JIT) 编译以提高运行脚本时的性能。

此参数在运行时和初创企业时都可用:

要启用 JIT,请将disableJavaScriptJIT设置为false ,如以下示例所示:

db.adminCommand( { setParameter: 1, disableJavaScriptJIT: false } )

注意

$where将重用现有的 JavaScript 解释器上下文,因此对disableJavaScriptJIT的更改可能不会立即对这些操作生效。

或者,您可以在启动时通过使用以下选项启动 mongod 实例来启用 JIT:

mongod --setParameter disableJavaScriptJIT=false
maxIndexBuildMemoryUsageMegabytes

版本 3.4 中的新增功能

默认值

  • 200(对于 4.2.3 及更高版本)

  • 500(对于 4.2.2 及更早版本)

限制在索引构建期间,一个集合上并行构建索引可能消耗的内存量。指定的内存量将在使用单个 createIndexes 命令或其 shell 助手 db.collection.createIndexes() 构建的所有索引之间共享。

此参数在运行时和初创企业时都可用:

索引构建消耗的内存与 WiredTiger 缓存内存是分开的(请参阅 cacheSizeGB)。

索引构建可以通过用户命令(如创建索引)或管理过程(如初始同步)启动。二者均受到maxIndexBuildMemoryUsageMegabytes设置的限制的约束。

初始同步操作一次仅填充一个集合,并且不存在超过内存限制的风险。但是,用户有可能同时在多个数据库中的多个集合上启动索引构建,消耗的内存量可能会大于maxIndexBuildMemoryUsageMegabytes中设置的限制。

提示

为了最大限度减少在副本集和带有副本集分片的分片集群上构建索引的影响,使用滚动索引构建过程,如副本集上构建滚动索引中所述。

reportOpWriteConcernCountersInServerStatus

默认:false

一个布尔类型标志,用于确定 db.serverStatus() 方法和 serverStatus 命令是否返回 opWriteConcernCounters 信息。[1]

mongod --setParameter reportOpWriteConcernCountersInServerStatus=true
[1] 启用reportOpWriteConcernCountersInServerStatus可能会对性能产生负面影响;特别是在没有TLS 的情况下运行时。
watchdogPeriodSeconds

仅适用于 mongod

类型:整型

默认值:-1(已禁用)

确定存储节点看门狗检查受监控文件系统状态的频率:

watchdogPeriodSeconds的有效值为:

注意

  • 如果受监控目录上的文件系统无响应,则最多可能需要接近两倍watchdogPeriodSeconds值的时间才能终止mongod

  • 如果存储节点看门狗的任何监控目录是通往其他卷的符号链接,则该存储节点看门狗不会监控该符号链接目标。例如,如果 mongod 使用 storage.directoryPerDB: true(或 --directoryperdb)并将数据库目录符号链接到另一个卷,则 Storage Node Watchdog 不会沿着该符号链接来监控目标。

要启用存储节点看门狗,必须在启动期间设置watchdogPeriodSeconds

mongod --setParameter watchdogPeriodSeconds=60

您只能在启动时启用存储节点监测。但是,一旦启用,您可以暂停存储节点监测或在运行期间更改watchdogPeriodSeconds

一旦启用,

  • 要在运行期间暂停存储节点监测,请将watchdogPeriodSeconds设置为 - 1 。

    db.adminCommand( { setParameter: 1, watchdogPeriodSeconds: -1 } )
  • 要恢复或更改运行时期间,请将watchdogPeriodSeconds设置为大于或等于60的数字。

    db.adminCommand( { setParameter: 1, watchdogPeriodSeconds: 120 } )
tcmallocAggressiveMemoryDecommit

类型:整数(仅限 01

默认值:0

如果您启用 tcmallocAggressiveMemoryDecommit,MongoDB:

  • 释放一块内存到系统,并且

  • 尝试返回所有相邻的可用内存块。

值为 1 时启用 tcmallocAggressiveMemoryDecommit0 时禁用该参数。

此参数在运行时和初创企业时都可用:

如果您启用此参数,系统将需要新的内存分配以供使用。请考虑仅在内存受限的系统上,且在已经尝试过其他内存和性能选项后再启用 tcmallocAggressiveMemoryDecommit

尽管使用tcmallocAggressiveMemoryDecommit可能会导致性能下降,但它通常比使用tcmallocReleaseRate更好。

tcmallocReleaseRate

4.2.3 版本新增

默认值:1.0

指定 tcmalloc 释放率 ( TCMALLOC_RELEASE_RATE )。根据 https://gperftools.github.io/gperftools/tcmalloc.html#runtime TCMALLOC_RELEASE_RATE 被描述为“在支持它的系统上,我们通过 madvise(MADV_DONTNEED) 将未使用的内存释放到系统的速率”。零表示我们从不将内存释放回系统。增加此标志可更快地返回内存;减少此标志以较慢地返回内存。合理的比率在 [0 ,10 ] 范围内。

注意

请考虑使用tcmallocAggressiveMemoryDecommit而不是tcmallocReleaseRate ,除非在使用tcmallocAggressiveMemoryDecommit时发现性能明显下降。

此参数在运行时和初创企业时都可用:

要在运行期间修改释放率,可以使用 setParameter 命令,例如:

db.adminCommand( { setParameter: 1, tcmallocReleaseRate: 5.0 } )

您也可以在启动时设置tcmallocReleaseRate ;例如:

mongod --setParameter "tcmallocReleaseRate=5.0"
logLevel

适用于 mongodmongos

指定一个介于 05 之间的整数,表示日志记录的详细程度,其中 5 为最详细。[2]

默认logLevel0 (信息)。

以下示例将logLevel设置为2

db.adminCommand( { setParameter: 1, logLevel: 2 } )
[2] 从版本 4.2 开始,MongoDB 在日志消息中包含调试详细级别(1 至 5 级)。例如,如果详细级别为 2,则 MongoDB 记录 D2。在以前版本中,MongoDB 日志消息仅为调试级别指定 D
logComponentVerbosity

适用于 mongodmongos

设置 日志消息 的各种 组件 的详细级别。详细程度级别决定 MongoDB 输出的信息和调试消息的数量。[3]

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

对于组件,您还可以指定 -1 以继承父级的详细程度级别。

要指定详细等级级别,使用类似以下的文档:

{
verbosity: <int>,
<component1>: { verbosity: <int> },
<component2>: {
verbosity: <int>,
<component3>: { verbosity: <int> }
},
...
}

对于组件,您可以在文档中仅指定 <component>: <int>,除非您同时设置父组件和子组件的详细程度级别:

{
verbosity: <int>,
<component1>: <int> ,
<component2>: {
verbosity: <int>,
<component3>: <int>
}
...
}

顶层 verbosity 字段对应于 systemLog.verbosity,其为所有组件设置默认级别。systemLog.verbosity 的默认值为 0

这些组件对应于以下设置:

除非明确设置,否则组件拥有其父级的详细程度。例如,storagestorage.journal 的父级。也就是说,如果您指定了 storage 详细程度级别,则此级别也适用于:

例如,以下将 default verbosity level 设置为 1,将 query 设置为 2,将 storage 设置为 2,将 storage.journal 设置为 1

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

您还可以在启动时设置参数logComponentVerbosity ,将详细级别文档作为字符串传递。

mongod --setParameter "logComponentVerbosity={command: 3}"

mongosh还提供了db.setLogLevel()来设置单个组件的日志级别。有关设置日志详细程度级别的各种方法,请参阅配置日志详细程度级别。

[3] 从版本 4.2 开始,MongoDB 在日志消息中包含调试详细级别(1 至 5 级)。例如,如果详细级别为 2,则 MongoDB 记录 D2。在以前版本中,MongoDB 日志消息仅为调试级别指定 D
maxLogSizeKB

版本 3.4 中的新增功能

适用于 mongodmongos

类型:非负整数

默认值:10

指定日志条目中单个属性字段的最大大小(以字节为单位);超过此限制的属性将被截断。

截断的属性字段会打印不超过maxLogSizeKB限制的字段内容,并打印超过该限制的字段内容,同时保留有效的 JSON 格式。包含截断属性的日志全文会将truncated对象附加到日志条目的末尾。

更多信息,请参阅日志信息截断

0 的值会完全禁用截断。该参数的负值无效。

警告

使用较大的值或禁用值为 0 的截断可能会对系统性能产生不利影响,并对数据库操作产生负面影响。

以下示例将最大日志行大小设置为 20 千字节:

mongod --setParameter maxLogSizeKB=20
quiet

适用于 mongodmongos

设置静默记录模式。若为 1mongod 将进入静默记录模式,不记录以下事件/活动:

考虑以下示例,其中将 quiet 参数设置为 1

db.adminCommand( { setParameter: 1, quiet: 1 } )

提示

另请参阅:

redactClientLogData

版本 3.4 中的新增功能

适用于 mongodmongos

类型:布尔值

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

在登录之前,配置 mongodmongos 以编辑与给定日志事件相关的任何消息。这可以防止程序将存储在数据库上的潜在敏感数据写入诊断日志。错误或操作代码、行号和源文件名等元数据在日志中仍然可见。

redactClientLogData静态加密TLS/SSL(传输加密)结合使用,以帮助遵守监管要求。

要能够启动时启用日志校订,您可以:

您不能使用--setParameter选项在启动时设置redactClientLogData

要在正在运行的 mongodmongos 上记录日志校订,使用以下命令:

db.adminCommand( { setParameter: 1, redactClientLogData : true } )

提示

traceExceptions

适用于 mongodmongos

配置 mongod 记录每个数据库和套接字 C++ 异常的完整源代码堆栈跟踪,以用于调试。若为 truemongod 将记录完整的堆栈跟踪。

考虑以下示例,其中将 traceExceptions true 设置为:

db.adminCommand( { setParameter: 1, traceExceptions: true } )

提示

suppressNoTLSPeerCertificateWarning

适用于 mongodmongos

类型:布尔值

默认:false

默认情况下,已启用 TLS/SSLmongodmongos 以及 net.ssl.allowConnectionsWithoutCertificatestrue 允许客户端在不提供用于验证的证书的情况下进行连接,同时记录警告。将 suppressNoTLSPeerCertificateWarning 设置为 1true,以抑制这些警告。

以下操作将 suppressNoTLSPeerCertificateWarning 设置为 true

db.adminCommand( { setParameter: 1, suppressNoTLSPeerCertificateWarning: true} )

为了方便 MongoDB 工程师分析 MongoDB Server 的行为,MongoDB Server 会定期将统计信息保存到诊断文件中。

若为 mongod,诊断数据文件会存储于 diagnostic.data 目录中,其位于 mongod 实例的 --dbpathstorage.dbPath 下。

对于 mongos,默认情况下,诊断数据文件存储在 mongos 实例的 --logpathsystemLog.path 目录下。该诊断数据目录通过截断日志路径的文件扩展名并将 diagnostic.data 连接到剩余名称来计算。

例如,如果mongos--logpath /var/log/mongodb/mongos.log.201708015 ,则诊断数据目录为/var/log/mongodb/mongos.diagnostic.data/目录。要为mongos指定不同的诊断数据目录,请设置diagnosticDataCollectionDirectoryPath参数。

以下参数支持诊断数据捕获 (FTDC):

注意

选择诊断数据捕获间隔的默认值和最大大小旨在 MongoDB 工程师提供有用的数据,同时尽量减小对性能和存储大小的影响。通常,仅当 MongoDB 工程师出于特定诊断目的请求修改时,才需要修改这些值。

diagnosticDataCollectionEnabled

版本 3.2 中的新增功能

在版本3中进行了更改。 4 。 14 :可用于mongodmongos

类型:布尔值

默认值:true

确定是否能够基于诊断目的收集和记录数据。默认情况下启用诊断日志记录。

例如,以下命令禁用诊断集合:

mongod --setParameter diagnosticDataCollectionEnabled=false
diagnosticDataCollectionDirectoryPath

版本3中的新增功能。 4 。 14

类型:字符串

仅适用于 mongos

指定用于 mongos 的诊断目录的目录。如果目录不存在,mongos 会创建该目录。

如未指定,则通过截断 mongos 实例的 --logpathsystemLog.path 文件扩展名并连接 diagnostic.data 来计算诊断数据目录。

例如,如果 mongos--logpath /var/log/mongodb/mongos.log.201708015,则诊断数据目录为 /var/log/mongodb/mongos.diagnostic.data/

重要

如果mongos无法创建指定目录,则禁用该实例的诊断数据捕获。这通常由以下原因引起:

  • 路径中已存在同名文件,或者

  • 该进程没有创建目录的权限。

diagnosticDataCollectionDirectorySizeMB

适用于 mongodmongos

类型:整型

默认值:200

指定diagnostic.data目录的最大大小(以兆字节为单位)。如果目录大小超过此数字,则根据文件名中的时间戳自动删除目录中最早的诊断文件。

例如,以下操作将目录的最大大小设置为 250 兆字节:

mongod --setParameter diagnosticDataCollectionDirectorySizeMB=250

diagnosticDataCollectionDirectorySizeMB的最小值为10 MB。 diagnosticDataCollectionDirectorySizeMB必须大于最大诊断文件大小diagnosticDataCollectionFileSizeMB

diagnosticDataCollectionFileSizeMB

版本 3.2 中的新增功能

在版本3中进行了更改。 4 。 14 :可用于mongodmongos

类型:整型

默认值:10

指定每个诊断文件的最大大小(以兆字节为单位)。如果文件超过最大文件大小,MongoDB 将创建一个新文件。

例如,以下操作将每个诊断文件的最大大小设置为 20 兆字节:

mongod --setParameter diagnosticDataCollectionFileSizeMB=20

diagnosticDataCollectionFileSizeMB的最小值为1 MB。

diagnosticDataCollectionPeriodMillis

版本 3.2 中的新增功能

在版本3中进行了更改。 4 。 14 :可用于mongodmongos

类型:整型

默认值:1000

指定收集诊断数据的时间间隔(以毫秒为单位)。

例如,以下操作将时间间隔设置为 5000 毫秒或 5 秒:

mongod --setParameter diagnosticDataCollectionPeriodMillis=5000

diagnosticDataCollectionPeriodMillis的最小值为100毫秒。

disableSplitHorizonIPCheck

5.0.0 版本新增

适用于 mongodmongos

类型:布尔值

默认:false

为 水平分割 DNS 配置集群节点 ,使用主机名而不是 IP 地址。

从 MongoDB v5.0 开始,replSetInitiatereplSetReconfig 拒绝使用 IP 地址而不是主机名的配置。

使用disableSplitHorizonIPCheck修改无法更新为使用主机名的节点。该参数仅适用于配置命令。

mongodmongos在启动时不依赖disableSplitHorizonIPCheck进行验证。使用 IP 地址而不是主机名的旧版mongodmongos实例可以在升级后启动。

配置 IP 地址的实例会记录警告,要求使用主机名称而非 IP 地址。

要允许使用 IP 地址更改配置,则使用命令行设置 disableSplitHorizonIPCheck=true

/usr/local/bin/mongod --setParameter disableSplitHorizonIPCheck=true -f /etc/mongod.conf

要允许使用 IP 地址更新配置,使用节点的配置文件设置 disableSplitHorizonIPCheck=true

setParameter:
disableSplitHorizonIPCheck: true

如果尝试在运行时更新 disableSplitHorizonIPCheck,则 db.adminCommand() 会返回错误:

db.adminCommand( { setParameter: 1, "disableSplitHorizonIPCheck": true } )
MongoServerError: not allowed to change [disableSplitHorizonIPCheck] at runtime
enableOverrideClusterChainingSetting

5.0.2 版本新增

适用于 mongodmongos

类型:布尔值

默认:false

enableOverrideClusterChainingSettingtrue如果settings.chainingAllowedfalse ,即使 为 ,副本集从 节点 成员也可以从其他从节点成员复制数据。

您只能在启动时设置enableOverrideClusterChainingSetting ,并且无法使用setParameter命令更改此设置。

例如,要将 实例的enableOverrideClusterChainingSetting mongod设置为true

mongod --setParameter enableOverrideClusterChainingSetting=true
logicalSessionRefreshMillis

适用于 mongodmongos

类型:整型

默认值:300000(5 分钟)

缓存根据主会话存储刷新其逻辑会话记录的时间间隔(以毫秒为单位)。

您只能在启动时设置logicalSessionRefreshMillis ,并且无法使用setParameter命令更改此设置。

例如,要将 实例的logicalSessionRefreshMillis mongod设置为10 分钟:

mongod --setParameter logicalSessionRefreshMillis=600000
localLogicalSessionTimeoutMinutes

版本 3.6 中的新增功能

适用于 mongodmongos

类型:整型

默认值:30

警告

仅用于测试目的

此参数仅用于测试目的,不适用于生产用途。

会话在最近一次使用后保持活动状态的时间(以分钟为单位)。未从客户端收到新的读/写操作或未在此阈值内使用 refreshSessions 刷新的会话将从缓存中清除。与过期会话相关的状态可随时被服务器清理。

该参数仅适用于设置该参数的实例。要在副本集和分片集群上设置该参数,您必须在每个成员上指定相同的值;否则,会话将无法正常运行。

您只能在启动时设置localLogicalSessionTimeoutMinutes ,并且无法使用setParameter命令更改此设置。

例如,要将测试localLogicalSessionTimeoutMinutes 实例的mongod 设置为20 分钟:

mongod --setParameter localLogicalSessionTimeoutMinutes=20
maxAcceptableLogicalClockDriftSecs

版本 3.6 中的新增功能

适用于 mongodmongos

类型:整型

默认值:31536000(1 年)

当前集群时间可以提前的最大量;具体来说, maxAcceptableLogicalClockDriftSecs是集群时间的新值与当前集群时间之间的最大差值。集群时间是用于操作排序的逻辑时间。

如果新集群时间与当前集群时间相差超过maxAcceptableLogicalClockDriftSecs ,则无法将集群时间提前为新值。

您只能在启动时设置maxAcceptableLogicalClockDriftSecs ,并且无法使用setParameter命令更改此设置。

例如,要将 实例的maxAcceptableLogicalClockDriftSecs mongod设置为15 分钟:

mongod --setParameter maxAcceptableLogicalClockDriftSecs=900
maxSessions

适用于 mongodmongos

类型:整型

默认值:1000000

可以缓存的最大会话数。

您只能在启动期间设置maxSessions

例如,要将 实例的maxSessions mongod设置为1000 :

mongod --setParameter maxSessions=1000
oplogBatchDelayMillis

版本 5.0.10 中的新增内容

适用于 mongodmongos

类型:整型

默认值:0

从节点上延迟应 oplog 操作批处理的毫秒数。默认情况下,oplogBatchDelayMillis0,表示会立即应用 oplog 批处理。若没有延迟,MongoDB 可能会将频繁、小批量的 oplog 应用于从节点。

增加oplogBatchDelayMillis会导致 MongoDB 在从节点上应用 oplog 批处理的频率降低,并且每个批处理包含更多的数据。 这会降低从节点上的 IOPS ,但增加了具有写关注(write concern)"majority"的延迟。

您只能在启动时设置 oplogBatchDelayMillis。您无法在运行期间设置 oplogBatchDelayMillis

例如,运行以下命令将 mongod 实例的 oplogBatchDelayMillis 设置为 20 毫秒:

mongod --setParameter oplogBatchDelayMillis=20
periodicNoopIntervalSecs

仅适用于 mongod

类型:整型

默认值:10

在每个单独的节点上写入 noop 之间的持续时间(以秒为单位)。

您只能在启动过程中设置该参数,且无法使用 setParameter 数据库命令更改该设置。

注意

要修改MongoDB Atlas集群的此值,您必须联系Atlas 支持部门。

以下示例在启动时将 periodicNoopIntervalSecs 设置为 1 秒:

mongod --setParameter periodicNoopIntervalSecs=1
storeFindAndModifyImagesInSideCollection

版本 5.0 中的新增功能

适用于 mongodmongos

类型:布尔值

默认值:true

确定可重试findAndModify命令所需的临时文档是否存储在collection中(配置数据库中的image_collection )。

如果 storeFindAndModifyImagesInSideCollection 是:

  • true,临时文件存放在侧方集合。

  • false,临时文档存储在副本集 oplog 中。

如果您执行以下操作,请将storeFindAndModifyImagesInSideCollection保持为true

注意

storeFindAndModifyImagesInSideCollectiontrue时,从节点的 CPU使用率可能会增加。

例如,要在初创企业将storeFindAndModifyImagesInSideCollection设置为false

mongod --setParameter storeFindAndModifyImagesInSideCollection=false

在运行期间,也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, storeFindAndModifyImagesInSideCollection: false } )
TransactionRecordMinimumLifetimeMinutes

版本 3.6 中的新增功能

仅适用于 mongod

类型:整型

默认值:30

事务记录在符合清理条件之前存在于 transactions 集合中的最小生命周期。

您只能在启动时设置TransactionRecordMinimumLifetimeMinutes ,并且无法使用setParameter命令更改此设置。

例如,要将 实例的TransactionRecordMinimumLifetimeMinutes mongod设置为20 分钟:

mongod --setParameter TransactionRecordMinimumLifetimeMinutes=20

提示

enableFlowControl

4.2 版本中的新增功能

类型:布尔值

默认值:true

启用或禁用控制主节点应用其写入操作的速率,以便将从节点成员的 majority committed 延迟保持在可配置的最大值以下。

注意

要启用流量控制,副本集/分片集群必须具有: featureCompatibilityVersion (fCV)4.2 ,且读关注(read concern)为 majority enabled。也就是说,如果 fCV 不是 4.2 或读关注已被禁用,则已启用的流量控制将不会生效。

flowControlTargetLagSeconds

4.2 版本中的新增功能

类型:整型

默认值:10

使用流量控制运行时的目标最大 majority committed 延迟。启用流量控制后,该机制会尝试将 majority committed 延迟保持在指定秒数以下。 若已禁用流量控制,则该参数无效。

指定值必须大于 0。

一般来说,默认设置应该足够使用;但是,如果要修改默认值,减小值而不是增大值可能会更有用。

flowControlWarnThresholdSeconds

4.2 版本中的新增功能

类型:整型

默认值:10

一旦流控制机制检测到多数提交点未移动,等待记录警告的时间。

指定值必须大于或等于0,其中 0 为禁用警告。

initialSyncTransientErrorRetryPeriodSeconds

类型:整型

默认值:86400

被临时网络错误中断时,从节点执行初始同步以尝试恢复该过程的时间(以秒为单位)。默认值相当于 24 小时。

initialSyncSourceReadPreference

仅适用于 mongod

类型:字符串

执行初始同步的首选来源。指定以下任何一个读取偏好模式:

如果副本集已禁用chaining ,则默认的initialSyncSourceReadPreference读取偏好模式为primary

您不能为 指定标签集或maxStalenessSeconds initialSyncSourceReadPreference

如果 mongod 无法根据指定的读取偏好(read preference)找到同步源,则会在日志中记录错误并重新启动初始同步过程。如果在 10 次尝试后无法完成初始同步过程,mongod 将会退出并显示错误。有关同步源选择的更多信息,请参阅初始同步源选择。

选择初始同步源时, initialSyncSourceReadPreference优先于副本集的settings.chainingAllowed设置。副本集成员成功完成初始同步后,在选择复制同步源时会延迟chainingAllowed的值。

您只能在启动时使用 setParameter 配置文件设置或 --setParameter 命令行选项来设置此参数。

maxNumSyncSourceChangesPerHour

版本 5.0 中的新增功能

类型:整型

默认值:3

每次更新同步源以及每次节点获取一批 oplog 条目时都会对同步源进行求值。如果一小时内源更改次数超过 maxNumSyncSourceChangesPerHour,则该节点将暂时停止对该同步源进行求值。如果该参数设置较高,则该节点可能会进行不必要的源更改。

如果一个节点没有同步源,此参数不会阻止该节点从另一个节点开始同步。如果同步源无效,该节点将重新求值。同样,如果主节点发生变化并且链接被禁用,则该节点将更新以从新的主节点同步。

oplogFetcherUsesExhaust

仅适用于 mongod

类型:布尔值

默认值:true

启用或禁用流复制。将值设置为 true 以启用流复制。

将值设置为 false 以禁用流复制。如已禁用,从节点会通过发送请求至 sync from 源并等待响应来获取一批 oplog 条目。这需要针对每批 oplog 条目进行一次网络往返。

您只能在启动时使用 setParameter 配置文件设置或 --setParameter 命令行选项来设置此参数。

oplogInitialFindMaxSeconds

版本 3.6 中的新增功能

类型:整型

默认:60

仅适用于 mongod

数据同步期间副本集节点等待 find 命令完成的最长时间(以秒为单位)。

replWriterThreadCount

版本 3.2 中的新增功能

类型:整型

默认值:16

仅适用于 mongod

用于并行应用复制操作的最大线程数。值的范围可以从 1 到 256(包含)。但是,所使用的最大线程数的上限为可用内核数的两倍。

您只能在启动时设置replWriterThreadCount ,并且无法使用setParameter命令更改此设置。

提示

另请参阅:

replWriterMinThreadCount

版本 5.0 中的新增功能

类型:整型

默认值:0

仅适用于 mongod

用于并行应用复制操作的最小线程数。值的范围可以从0到256含)。您只能在启动时设置replWriterMinThreadCount ,并且无法使用setParameter命令更改此设置。

复制操作的并行应用最多使用replWriterThreadCount线程。如果replWriterMinThreadCount配置的值小于replWriterThreadCount ,则线程池将使空闲线程超时,直到线程池中的线程总数等于replWriterMinThreadCount

replWriterMinThreadCount必须配置为小于或等于replWriterThreadCount的值。

rollbackTimeLimitSecs

类型:64 位整数

默认值:86400(1 天)

可回滚数据的最长期限。该参数的负值无效。

如果待回滚实例的 oplog 结束到公共点(源节点和待回滚节点拥有相同数据的最后一个点)后的第一次操作之间的时间超过该值,则回滚将失败。

要实现无限回滚期,将值设置为 2147483647,这是允许的最大值,大致相当于 68 年。

waitForSecondaryBeforeNoopWriteMS

版本 3.6 中的新增功能

仅适用于 mongod

类型:整型

默认值:10

如果 afterClusterTime 大于 oplog 的上次应用时间,则从节点必须等待的时长(以毫秒为单位)。经过 waitForSecondaryBeforeNoopWriteMS 后,如果 afterClusterTime 仍然大于上次应用时间,则从节点执行无操作写入,以提前上次应用时间。

以下示例将waitForSecondaryBeforeNoopWriteMS设置为20毫秒:

mongod --setParameter waitForSecondaryBeforeNoopWriteMS=20

在运行期间,也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, waitForSecondaryBeforeNoopWriteMS: 20 } )
createRollbackDataFiles

仅适用于 mongod

类型:布尔值

默认值:true

确定 MongoDB 是否创建包含回滚期间受影响的文档的回滚文件的标志。

默认情况下, createRollbackDataFilestrue ,MongoDB 会创建回滚文件。

以下示例将createRollbackDataFiles设置为 false,以便不创建回滚文件:

mongod --setParameter createRollbackDataFiles=false

在运行期间,也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, createRollbackDataFiles: false } )

更多信息,请参阅收集回滚数据

replBatchLimitBytes

默认值:104857600 (100MB)

设置最大 oplog 应用批处理大小(以字节为单位)。

值的范围可以从 16777216 (16MB) 到 {0} 104857600 (100MB)(含)。

以下示例将replBatchLimitBytes设置为64 MB,以便不创建回滚文件:

mongod --setParameter replBatchLimitBytes=67108864

在运行期间,也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, replBatchLimitBytes: 64 * 1024 * 1024 } )
mirrorReads

仅适用于 mongod

4.4 版本新增

类型:文档

默认值{ samplingRate: 0.01, maxTimeMS: 1000 }

mongod 实例指定镜像读的设置。该设置仅在成员为主节点时生效。

参数mirrorReads接受包含以下字段的 JSON 文档:

字段
说明
samplingRate

支持镜像的操作的子集镜像到可选(具体来说,priority greater than 0)从节点的子集时使用的采样率。也就是说,主节点镜像以指定的采样率读取每个可选从节点。

有效值为:

0.0
关闭镜像。
1.0
0.01.0(不含)之间的数字
主节点随机抽取每个可选举从节点,以指定的速率发送镜像读取。

例如,给定一个副本集,其中有一个主节点和两个可选从节点,采样率为 0.10,则主节点镜像以 10% 的采样率读取每个可选从节点,这样一个读取可以镜像到一个从节点,而不会镜像到另一个从节点或同时镜像或同时不镜像到两个从节点。也就是说,如果主节点收到可镜像的 100 操作,则 0.10 的采样率可能会导致 8 个读取被镜像到一个从节点,13 个读取被镜像到另一个从节点,或 10 个读取被镜像到每个从节点等。

默认值为 0.01

maxTimeMS

镜像读取的最长时间(以毫秒为单位)。默认值为 1000

镜像读取的 maxTimeMS 与被镜像的原始读取的 maxTimeMS 是分开的。

mirrorReads您可以在启动期间在configuration file --setParameter中或使用命令行上的mirrorReads 选项设置 。如果从配置文件或命令行指定, 请将 文档用引号 引起来。

例如,以下操作从命令行将镜像读取采样率设置为 0.10

mongod --setParameter mirrorReads='{ samplingRate: 0.10 }'

或者,在配置文件中指定:

setParameter:
mirrorReads: '{samplingRate: 0.10}'

或者,如果在连接到正在运行的setParameter mongosh的 会话中使用mongod 命令, 请勿 用引号将文档括起来:

db.adminCommand( { setParameter: 1, mirrorReads: { samplingRate: 0.10 } } )

注意

从版本 4.2 开始,MongoDB 删除了参数 AsyncRequestsSenderUseBaton 并始终能够通过该参数控制性能增强。

balancerMigrationsThrottlingMs

7.0 版本新增:(从 6.3.1、6.0.6、5.0.18 版本开始也可用

类型:整型

默认值:1000

仅适用于 mongod

指定两个连续均衡回合之间的最短时间。这允许您限制均衡速率。该参数仅对配置服务器节点生效。

此参数在运行时和初创企业时都可用:

此示例是在启动时将 balancerMigrationsThrottlingMs 设置为 2000 毫秒:

mongod --setParameter balancerMigrationsThrottlingMs=2000

在运行期间,也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, balancerMigrationsThrottlingMs: 2000 } )
chunkMigrationConcurrency

从 MongoDB 5开始可用。 0 。 15 。

类型:整型

默认值:1

仅适用于 mongod

指定一个整数,用于设置用于数据段迁移的源分片和接收分片上的线程数。数据段迁移使用您在接收分片上为源分片和接收分片设置的线程数。

增加并发度可以提高数据段迁移性能,但也会增加源分片和接收分片上的工作负载和磁盘 IOPS 使用率。

最大值为 500。

通常应将 CPU 内核总数的一半用作线程。例如,如果内核总数为 16 个,则将 chunkMigrationConcurrency 设置为 8 个线程(或更少)。

如果chunkMigrationConcurrency大于1 ,则忽略_secondaryThrottle配置设置。 _secondaryThrottle设置确定数据块迁移何时继续处理数据块中的下一个文档。有关详细信息,请参阅数据块迁移和复制。

此参数在运行时和初创企业时都可用:

以下示例将 chunkMigrationConcurrency 设置为 5

mongod --setParameter chunkMigrationConcurrency=5

在运行期间,也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, chunkMigrationConcurrency: 5 } )
disableResumableRangeDeleter

仅适用于 mongod

类型:布尔值

默认:false

如果在分片的主节点上设置,则指定是否在分片上暂停范围删除。如果设置为true ,则暂停清理 包含孤立文档 的数据块范围。该分片可以继续向其他分片捐赠数据块,但捐赠的文档不会从该分片中删除,直到您将此参数设置为false 。只要该分片在config.rangeDeletions collection 中没有与传入数据块范围重叠的待处理范围删除任务,则可继续从其他分片接收数据块。

disableResumableRangeDeletertrue时,如果孤立文档存在于与传入数据段相同范围的接收分片的主节点上,则数据段迁移将失败。

如果该参数不是分片的主节点,则该参数对 mongod 没有影响。

重要

如果您将disableResumableRangeDeleter参数设置为true ,请确保将其一致地应用于分片副本集中的所有节点。如果发生故障转移,该设置在新的主节点上的值将决定范围删除器的行为。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

mongod --setParameter disableResumableRangeDeleter=false
enableShardedIndexConsistencyCheck

仅适用于 mongod

类型:布尔值

默认值:true

如果在配置服务器的主节点上设置,则启用或禁用分片集合的索引一致性检查。如果该参数不是配置服务器上的主节点,则该参数对 mongod 没有影响。

此参数在运行时和初创企业时都可用:

以下示例将配置服务器主节点的enableShardedIndexConsistencyCheck设置为false

mongod --setParameter enableShardedIndexConsistencyCheck=false

在运行期间,也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, enableShardedIndexConsistencyCheck: false } )

提示

另请参阅:

opportunisticSecondaryTargeting

版本 5.0.10 中的新增内容

类型:布尔值

默认值false

仅适用于 mongos

确定 mongos 是否对副本集执行机会性读取。

当此参数设置为 true 时,mongos 会将从节点读取定向到具有活动连接的从节点。它将请求发送到第一个接受连接的从节点。当此参数设置为 false 时,mongos 会保留从节点读取,直到它可以与特定从节点建立连接(对冲读的情况除外)。

注意

在特定工作负载下,机会性读取可能会触发从 mongosmongod 打开不必要的连接,从而降低整体性能。除非您的应用程序对该功能有特定需求,否则不应启用此参数。

此参数在运行时和初创企业时都可用:

例如,在启动期间设置 opportunisticSecondaryTargeting

mongos --setParameter opportunisticSecondaryTargeting=true
shardedIndexConsistencyCheckIntervalMS

仅适用于 mongod

类型:整型

默认值:600000

如果在配置服务器的主节点上设置,则配置服务器主节点检查分片集合的索引一致性的时间间隔(以毫秒为单位)。如果该参数不是配置服务器上的主节点,则该参数对 mongod 没有影响。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

例如,以下操作在启动时将时间间隔设置为 300000 毫秒(5 分钟):

mongod --setParameter shardedIndexConsistencyCheckIntervalMS=300000

提示

另请参阅:

enableFinerGrainedCatalogCacheRefresh

适用于 mongodmongos

类型:布尔值

默认值:true

该参数允许仅在需要刷新分片时才刷新目录缓存。如已禁用,任何过时的数据段都会导致集合的整个数据段分布被视为过时,并强制所有联系分片的路由器刷新其分片目录缓存。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

mongod --setParameter enableFinerGrainedCatalogCacheRefresh=true
mongos --setParameter enableFinerGrainedCatalogCacheRefresh=true
maxTimeMSForHedgedReads

仅适用于 mongos

类型:整型

默认值:150

指定对冲读的最大时间限制(以毫秒为单位)。也就是说,为对冲读操作而发送的额外读取使用maxTimeMSForHedgedReadsmaxTimeMS值,而被对冲的读操作使用为该操作指定的maxTimeMS值。

此参数在运行时和初创企业时都可用:

例如,要设定 200 毫秒的限制,您可以在启动时发出以下命令:

mongos --setParameter maxTimeMSForHedgedReads=200

或者,如果在连接到正在运行的 的setParameter mongosh会话中使用mongos 命令:

db.adminCommand( { setParameter: 1, maxTimeMSForHedgedReads: 200 } )
maxCatchUpPercentageBeforeBlockingWrites

版本 5.0 中的新增功能

仅适用于 mongod

类型:整型

默认值:10

对于moveChunk操作,指定迁移协议允许从catchup阶段过渡到commit阶段的未传输数据的最大百分比(以总数据块大小的百分比表示)。

设置更高的追赶百分比可减少完成迁移所需的时间,但会导致并发 upsertdelete 操作期间的延迟增加。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

在版本7中进行了更改。 1 :(以及7 . 0 . 1 ),您可以在运行时设置参数。

例如,要设定最大百分比为 20,您可以在启动时发出以下命令:

mongod --setParameter maxCatchUpPercentageBeforeBlockingWrites=20

提示

另请参阅:

metadataRefreshInTransactionMaxWaitBehindCritSecMS

5.2 版本新增:(从 5.1.0、5.0.4 开始也可用

类型:整型

默认值:500

仅适用于 mongod

限制分片在事务中等待关键部分的时间。

当查询访问分片时,数据段迁移DDL 操作可能已占用集合的关键部分。如果查询发现关键部分已被占用,则分片会一直等待,直到关键部分被释放。当分片将控制权返回到 mongos 时,mongos 会重试查询。但是,如果多分片事务与在多个分片上获取关键部分的操作交互,则该交互可能会导致分布式死锁。

metadataRefreshInTransactionMaxWaitBehindCritSecMS 限制分片在事务中等待关键部分发布的最长时间。

要减少事务中关键部分的最大等待时间,请降低metadataRefreshInTransactionMaxWaitBehindCritSecMS的值。

警告

如果metadataRefreshInTransactionMaxWaitBehindCritSecMS太低, mongos可能会使用所有重试尝试并返回错误。

此参数在运行时和初创企业时都可用:

例如,要将metadataRefreshInTransactionMaxWaitBehindCritSecMS设置为400毫秒:

db.adminCommand( { setParameter: 1, metadataRefreshInTransactionMaxWaitBehindCritSecMS: 400 } )
readHedgingMode

仅适用于 mongos

类型:字符串

默认值:on

指定 mongos 是否支持对读取偏好已启用对冲读选项的读取操作进行对冲读。

可用值为:

说明
on
mongos 实例支持对读取偏好已启用对冲读取选项的读取操作进行对冲读。
off
mongos 实例不支持对冲读。也就是说,对冲读不可用,即使对于读取偏好启用了对冲读选项的读取操作也是如此。

此参数在运行时和初创企业时都可用:

例如,要关闭对 mongos 实例的对冲读支持,可以在启动期间发出以下命令:

mongos --setParameter readHedgingMode=off

或者,如果在连接到正在运行的 的setParameter mongosh会话中使用mongos 命令:

db.adminCommand( { setParameter: 1, readHedgingMode: "off" } )
routingTableCacheChunkBucketSize

版本5中的新增功能。 0 。 21

适用于 mongodmongos

类型:整型

默认值:500

指定路由表高速缓存桶的大小,用于实施数据段分组优化。必须大于或等于 0

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

例如,要在 mongod 上将缓存数据段存储桶大小设置为 250,则在启动时发出以下命令:

mongod --setParameter routingTableCacheChunkBucketSize=1000
shutdownTimeoutMillisForSignaledShutdown

版本 5.0 中的新增功能

类型:整型

默认值:15000

仅适用于 mongod

指定在响应 SIGTERM 信号而启动 mongod 关闭之前等待任何正在进行的数据库操作完成的时间(以毫秒为单位)。

此参数在运行时和初创企业时都可用:

例如,要将时间设置为 250 毫秒,您可以在启动期间发出以下命令:

mongod --setParameter shutdownTimeoutMillisForSignaledShutdown=250

或者,如果在连接到正在运行的 的setParameter mongosh会话中使用mongod 命令:

db.adminCommand( { setParameter: 1, shutdownTimeoutMillisForSignaledShutdown: 250 } )
mongosShutdownTimeoutMillisForSignaledShutdown

版本 5.0 中的新增功能

类型:整型

默认值:15000

仅适用于 mongos

指定在响应 SIGTERM 信号而启动 mongos 关闭之前等待任何正在进行的数据库操作完成的时间(以毫秒为单位)。

此参数在运行时和初创企业时都可用:

例如,要将时间设置为 250 毫秒,您可以在启动期间发出以下命令:

mongos --setParameter mongosShutdownTimeoutMillisForSignaledShutdown=250

或者,如果在连接到正在运行的 的setParameter mongosh会话中使用mongos 命令:

db.adminCommand( { setParameter: 1, mongosShutdownTimeoutMillisForSignaledShutdown: 250 } )
ShardingTaskExecutorPoolHostTimeoutMS

类型:整数

默认值:300000(5 分钟)

适用于 mongodmongos

mongosmongos 断开与主机的所有连接之前与主机失去通信的最长时间。

如果已设置, ShardingTaskExecutorPoolHostTimeoutMS应大于ShardingTaskExecutorPoolRefreshRequirementMSShardingTaskExecutorPoolRefreshTimeoutMS之和。否则, mongos会调整ShardingTaskExecutorPoolHostTimeoutMS的值,使其大于该总和。

此参数在运行时和初创企业时都可用:

以下示例在启动期间将ShardingTaskExecutorPoolHostTimeoutMS设置为120000

mongos --setParameter ShardingTaskExecutorPoolHostTimeoutMS=120000

在运行期间,也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolHostTimeoutMS: 120000 } )
ShardingTaskExecutorPoolMaxConnecting

版本 3.6 中的新增功能

类型:整数

默认值:2

适用于 mongodmongos

每个 TaskExecutor 连接池到 mongod 实例的最大并发连接数(包括设置/刷新状态下的待连接)。您可以设置此参数来控制 mongosmongod 实例添加连接的速率。

如果设置, ShardingTaskExecutorPoolMaxConnecting应小于或等于ShardingTaskExecutorPoolMaxSize 。如果该值更大,则mongos会忽略ShardingTaskExecutorPoolMaxConnecting值。

此参数在运行时和初创企业时都可用:

以下示例在启动期间将ShardingTaskExecutorPoolMaxConnecting设置为20

mongos --setParameter ShardingTaskExecutorPoolMaxConnecting=20

在运行期间,也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolMaxConnecting: 20 } )
ShardingTaskExecutorPoolMaxSize

类型:整数

默认值:2 64 - 1

适用于 mongodmongos

每个 TaskExecutor 连接池可向任意给定 mongod 实例开放的最大出站连接数。 所有 TaskExecutor 池中任何给定主机的最大可能连接数为:

ShardingTaskExecutorPoolMaxSize * taskExecutorPoolSize

此参数在运行时和初创企业时都可用:

以下示例在启动期间将ShardingTaskExecutorPoolMaxSize设置为20

mongos --setParameter ShardingTaskExecutorPoolMaxSize=20

在运行期间,也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolMaxSize: 20 } )

mongos最多可以有n TaskExecutor 连接池,其中n为内核数。请参阅taskExecutorPoolSize

提示

ShardingTaskExecutorPoolMaxSizeForConfigServers

版本 5.0.10 中的新增内容

类型:整数

默认值:-1

适用于 mongodmongos

ShardingTaskExecutorPoolMaxSize的可选覆盖项,用于设置每个 TaskExecutor 连接池可以向配置服务器打开的最大出站连接数。

当设置为:

  • -1,使用ShardingTaskExecutorPoolMaxSize 。这是默认设置。

  • 大于 -1 的整数值,覆盖每个 TaskExecutor 连接池可以向配置服务器打开的出站连接数的最大数量。

参数仅适用于分片部署。

以下示例在启动期间将ShardingTaskExecutorPoolMaxSize设置为2 ,从而将每个 TaskExecutor 连接池可以向配置服务器打开的最大出站连接数设置为2

此参数在运行时和初创企业时都可用:

mongos --setParameter ShardingTaskExecutorPoolMaxSizeForConfigServers=2

在运行期间,也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolMaxSizeForConfigServers: 2 } )
ShardingTaskExecutorPoolMinSize

类型:整数

默认值:1

适用于 mongodmongos

每个 TaskExecutor 连接池可向任意给定 mongod 实例开放的最小出站连接数。

ShardingTaskExecutorPoolMinSize 连接是在第一次从池中请求连接到新主机时创建的。当池空闲时,池会维持此数量的连接,直到ShardingTaskExecutorPoolHostTimeoutMS毫秒过去没有任何应用程序使用该池。

对于使用 参数的mongos warmMinConnectionsInShardingTaskExecutorPoolOnStartupShardingTaskExecutorPoolMinSize 参数还控制在mongos 实例启动时,在开始接受传入的客户端连接之前与每个分片主机建立的连接数量。

此参数在运行时和初创企业时都可用:

以下示例在启动期间将ShardingTaskExecutorPoolMinSize设置为2

mongos --setParameter ShardingTaskExecutorPoolMinSize=2

在运行期间,也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolMinSize: 2 } )

mongos最多可以有n TaskExecutor 连接池,其中n为内核数。请参阅taskExecutorPoolSize

ShardingTaskExecutorPoolMinSizeForConfigServers

版本 5.0.10 中的新增内容

类型:整数

默认值:-1

适用于 mongodmongos

ShardingTaskExecutorPoolMinSize的可选覆盖项,用于设置每个 TaskExecutor 连接池可以向配置服务器打开的最小出站连接数。

当设置为:

  • -1,使用ShardingTaskExecutorPoolMinSize 。这是默认设置。

  • 大于 -1 的整数值;覆盖每个 TaskExecutor 连接池可以向配置服务器打开的最小出站连接数。

参数仅适用于分片部署。

以下示例在启动期间将ShardingTaskExecutorPoolMinSize设置为2 ,从而将每个 TaskExecutor 连接池可以向配置服务器打开的最小出站连接数设置为2

此参数在运行时和初创企业时都可用:

mongos --setParameter ShardingTaskExecutorPoolMinSizeForConfigServers=2

在运行期间,也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolMinSizeForConfigServers: 2 } )
ShardingTaskExecutorPoolRefreshRequirementMS

类型:整数

默认值:60000(1 分钟)

适用于 mongodmongos

mongos在尝试对池中的空闲连接进行心跳检测之前等待的最长时间。

如果设置, ShardingTaskExecutorPoolRefreshRequirementMS应大于ShardingTaskExecutorPoolRefreshTimeoutMS 。否则, mongos会将ShardingTaskExecutorPoolRefreshTimeoutMS的值调整为小于ShardingTaskExecutorPoolRefreshRequirementMS

此参数在运行时和初创企业时都可用:

以下示例在启动期间将ShardingTaskExecutorPoolRefreshRequirementMS设置为90000

mongos --setParameter ShardingTaskExecutorPoolRefreshRequirementMS=90000

在运行期间,也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolRefreshRequirementMS: 90000 } )
ShardingTaskExecutorPoolRefreshTimeoutMS

类型:整数

默认值:20000(20 秒)

适用于 mongodmongos

mongos 等待心跳检测超时的最大时间。

如果设置, ShardingTaskExecutorPoolRefreshTimeoutMS应小于ShardingTaskExecutorPoolRefreshRequirementMS 。否则, mongos会将ShardingTaskExecutorPoolRefreshTimeoutMS的值调整为小于ShardingTaskExecutorPoolRefreshRequirementMS

此参数在运行时和初创企业时都可用:

以下示例在启动期间将ShardingTaskExecutorPoolRefreshTimeoutMS设置为30000

mongos --setParameter ShardingTaskExecutorPoolRefreshTimeoutMS=30000

在运行期间,也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolRefreshTimeoutMS: 30000 } )
ShardingTaskExecutorPoolReplicaSetMatching

4.2 版本中的新增功能

5.0 版本中的更改

适用于 mongodmongos

类型:字符串

默认值:“自动”

mongos 实例上,此参数设置策略,该策略确定其连接池与副本集中的节点的最小大小限制。

mongod 实例上,此参数设置策略,该策略确定其连接池与其他副本集中的节点的最小大小限制。

请注意,此参数仅托管与用户请求和 CRUD 操作直接相关的操作的连接。

可用值为:

匹配策略
说明
"automatic" (默认)

从5开始。 0中, "automatic"是新的默认值。

mongos 设置时,实例遵循为 "matchPrimaryNode" 选项指定的行为。

mongod 设置时,实例遵循为 "disabled" 选项指定的行为。

注意

如果ShardingTaskExecutorPoolReplicaSetMatching设置为"automatic" ,则replicaSetMatchingStrategy仍然描述实际使用的策略,而不是"automatic" 。要查找ShardingTaskExecutorPoolReplicaSetMatching的值,使用getParameter返回服务器参数的值。

"matchPrimaryNode"

当为 mongos 设置时,该实例的连接池到分片集群中副本集的每个从节点的最小大小限制(具体来说,分片副本集和配置服务器)等于其到该副本主节点的连接池的大小。

当为 mongod 设置时,该实例的连接池到分片集群中另一个副本集的每个从节点的最小大小限制(具体来说,分片副本集和配置服务器)等于其到该副本主节点的连接池的大小。

警告

如果拓扑结构中有多个分片服务器可能会经历快速涌入跨分片操作,则不要在您的 mongod 实例上设置此选项。

在主节点降级的情况下,matchPrimaryNode 确保任何成为主节点的从节点都可以处理当前级别的主节点读写。

"matchBusiestNode"

当为 mongos 设置时,该实例对分片集群中副本集的每个成员的连接池的最小大小限制(具体来说,分片副本集和配置服务器)等于该副本集的每个主节点和每个从节点成员的活动连接计数的最大值。

当为 mongod 设置时,该实例对分片集群中另一副本集的每个成员的连接池的最小大小限制(具体来说,分片副本集和配置服务器)等于该副本集的每个主节点和每个从节点成员的活动连接计数的最大值。

通过 "matchBusiestNode"mongos 可维护到每个从节点的连接,以处理当前级别的主节点和从节点的读写操作。随着活动连接数的减少,池中要维护的连接数也会减少。

"disabled"

当为mongos设置时,该实例在实例的连接池中与分片集群中副本集的每个节点(具体来说,分片副本集和配置服务器)的最小连接数等于ShardingTaskExecutorPoolMinSize

当为mongod设置时,该实例的连接池中与分片集群中另一个副本集的每个节点的最小连接数(具体来说,分片副本集和配置服务器)等于ShardingTaskExecutorPoolMinSize

此参数在运行时和初创企业时都可用:

以下示例在启动期间将ShardingTaskExecutorPoolReplicaSetMatching设置为"automatic"

mongod --setParameter ShardingTaskExecutorPoolReplicaSetMatching="automatic"

在运行期间,也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolReplicaSetMatching: "automatic" } )
taskExecutorPoolSize

类型:整数

默认值:1

仅适用于 mongos

用于给定 mongos 的任务执行器连接池的数量。

如果参数值小于或等于 0,则任务执行程序连接池的数量为核心数,但以下情况除外:

  • 如果内核数小于 4,则任务执行器连接池数量为 4。

  • 如果内核数大于 64,则任务执行器连接池数量为 64。

在 Linux 上运行 MongoDB 时,您无法修改taskExecutorPoolSize的默认值1 。在 Windows 或 macOS 上运行 MongoDB 时,您可以修改此参数。

taskExecutorPoolSize的默认值为1

此参数在运行时和初创企业时都可用:

mongos --setParameter taskExecutorPoolSize=6
loadRoutingTableOnStartup

仅适用于 mongos

类型:布尔值

默认值:true

配置 mongos 实例以在启动时预加载分片集群的路由表。启用此设置后,mongos 在开始接受客户端连接之前为每个分片集合缓存集群范围内的路由表,作为其启动过程的一部分。

如果未启用此设置,则mongos 仅为传入客户端连接加载所需的路由表,并且仅为给定请求的命名空间加载特定路由表。

mongosloadRoutingTableOnStartup启用了 参数的 实例可能会遇到更长的启动时间,但启动后会更快地为初始客户端连接提供服务。

loadRoutingTableOnStartup 默认为 使能。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

warmMinConnectionsInShardingTaskExecutorPoolOnStartup

仅适用于 mongos

类型:布尔值

默认值:true

仅适用于 mongos

mongos实例配置为在启动时预热其连接池。启用此参数后, mongos会在开始接受客户端连接之前尝试与每个分片服务器建立ShardingTaskExecutorPoolMinSize网络连接,作为其启动过程的一部分。

可以使用warmMinConnectionsInShardingTaskExecutorPoolOnStartupWaitMS参数配置此行为的超时时间。如果达到此超时时间,无论连接池的大小如何, mongos都将开始接受客户端连接。

启用此参数的 mongos 实例可能会经历更长的启动时间,但启动后将加快初始客户端连接的服务速度。

warmMinConnectionsInShardingTaskExecutorPoolOnStartup 默认为 使能。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

warmMinConnectionsInShardingTaskExecutorPoolOnStartupWaitMS

仅适用于 mongos

类型:整数

默认:2000(2 秒)

仅适用于 mongos

设置使用mongos ShardingTaskExecutorPoolMinSizewarmMinConnectionsInShardingTaskExecutorPoolOnStartup参数时 等待每个分片主机建立mongos 连接的超时阈值(以毫秒为单位)。如果达到此超时,无论连接池的大小如何, 都将开始接受客户端连接。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

migrateCloneInsertionBatchDelayMS

仅适用于 mongod

类型:非负整数

默认值:0

在迁移过程的克隆步骤期间,各批次插入之间等待的时间(以毫秒为单位)。此等待例外情况为 secondaryThrottle

默认值 0 表示无需额外等待。

此参数在运行时和初创企业时都可用:

以下操作将migrateCloneInsertionBatchDelayMS设置为200毫秒:

mongod --setParameter migrateCloneInsertionBatchDelayMS=200

也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, migrateCloneInsertionBatchDelayMS: 200 } )
migrateCloneInsertionBatchSize

仅适用于 mongod

类型:非负整数

默认值:0

迁移过程的克隆步骤中每批次中插入的最大文档数。

默认值 0 表示每次批处理没有最大文档数。然而,实际上,这会导致包含最大 16 MB 文档的批处理。

此参数在运行时和初创企业时都可用:

以下示例将migrateCloneInsertionBatchSize设置为100文档:

mongod --setParameter migrateCloneInsertionBatchSize=100

也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, migrateCloneInsertionBatchSize: 100 } )
orphanCleanupDelaySecs

版本 3.6 中的新增功能

默认值:900(15 分钟)

仅适用于 mongod

从源分片中删除已迁移数据段之前的最小延迟。

在数据段迁移期间删除数据段之前,MongoDB 会等待orphanCleanupDelaySecs或涉及该数据段的进行中查询在分片主节点上完成,以时间较长者为准。

但是,由于分片主节点不知道在分片从节点上运行进行中的查询,因此使用该数据段但在从节点上运行的查询可能会看到文档消失,前提是这些查询花费的时间比完成分片主节点查询的时间长,并且orphanCleanupDelaySecs

注意

此行为仅影响在数据段迁移之前开始的正在进行的查询。在数据段迁移开始后启动的查询将不会使用正在迁移的数据段。

如果分片有存储限制,则考虑暂时减小该值。如果在分片从节点上运行超过 15 分钟的查询,则考虑增加该值。

此参数在运行时和初创企业时都可用:

以下操作将orphanCleanupDelaySecs设置为20分钟:

mongod --setParameter orphanCleanupDelaySecs=1200

也可以使用 setParameter 命令设置:

db.adminCommand( { setParameter: 1, orphanCleanupDelaySecs: 1200 } )
persistedChunkCacheUpdateMaxBatchSize

版本5中的新增功能。 0 。 25

仅适用于 mongod

类型:整数

默认值:1000

为了路由和服务操作,分片必须知道与其集合相关的路由和所有权信息。通过复制内部缓存集合 config.cache.collectionsconfig.cache.chunks.<collectionName>,此信息从分片的主节点传播到从节点。

在以前的版本中,对数据块缓存collection的更新是单独执行的(意味着删除一个条目并插入一个新条目)。从 MongoDB 5开始。 0 。 25 ,这些更新以批处理删除和批处理插入的方式执行。更新的逻辑提高了包含大量数据块的collection的性能。

persistedChunkCacheUpdateMaxBatchSize 参数指定用于更新持久化数据段缓存的最大批处理大小。

此参数在运行时和初创企业时都可用:

以下示例在启动时将 persistedChunkCacheUpdateMaxBatchSize 设置为 700:

mongod --setParameter persistedChunkCacheUpdateMaxBatchSize=700

您还可以在运行时设置 persistedChunkCacheUpdateMaxBatchSize

db.adminCommand( { setParameter: 1, persistedChunkCacheUpdateMaxBatchSize: 700 } )
rangeDeleterBatchDelayMS

仅适用于 mongod

类型:非负整数

默认值:20

在数据块迁移(或cleanupOrphaned命令)的清理阶段,下一批处理删除之前等待的时间(以毫秒为单位)。

rangeDeleterBatchDelayMSMongoDB3 43中。4 ,请考虑在修改 之前是否设置了 _secondaryThrottle 。在 MongoDB 中。 , _secondaryThrottle 复制延迟 发生在每次文档删除之后,而不是批量删除之后。

在 MongoDB 3中。 6 +, _secondaryThrottle 复制延迟发生在每次批处理删除之后。

此参数在运行时和初创企业时都可用:

以下操作将rangeDeleterBatchDelayMS设置为200毫秒:

mongod --setParameter rangeDeleterBatchDelayMS=200

也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, rangeDeleterBatchDelayMS: 200 } )
rangeDeleterBatchSize

仅适用于 mongod

类型:非负整数

默认值: 2147483647 ,从 MongoDB 5开始。 0 。 6

在数据块迁移(或cleanupOrphaned命令)的清理阶段,每个批处理中要删除的最大文档数。

0 表示系统选择默认值。

此参数在运行时和初创企业时都可用:

以下示例将rangeDeleterBatchSize设置为32文档:

mongod --setParameter rangeDeleterBatchSize=32

也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, rangeDeleterBatchSize: 32 } )
skipShardingConfigurationChecks

版本3中的新增功能。 6 。 3

仅适用于 mongod

类型:布尔值

默认值:false

true 时,允许启动分片成员或配置服务器成员作为独立运行的维护操作。该参数与 --configsvr--shardsvr 选项互斥。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

mongod --setParameter skipShardingConfigurationChecks=true

重要

维护完成后,重新启动 时删除skipShardingConfigurationChecks mongod参数。

findChunksOnConfigTimeoutMS

版本 5.0 中的新增功能

适用于 mongodmongos

类型:非负整数

默认值:900000

chunks 查找操作的超时时间(以毫秒为单位)。

如果集群中有大量数据段,并且数据段加载失败并出现错误 ExceededTimeLimit,则增加参数值:

mongod --setParameter findChunksOnConfigTimeoutMS=1000000

此参数在运行时和初创企业时都可用:

activeFaultDurationSecs

类型:文档

仅适用于 mongos

健康管理器故障到从集群删除mongos的等待时间(以秒为单位)。

当检测到故障并且运行状况管理器配置为 critical 时,服务器会等待指定的时间间隔,然后从集群中删除 mongos

例如,要将故障到崩溃的持续时间设置为五分钟,则在启动时发出以下命令:

mongos --setParameter activeFaultDurationSecs=300

或者,如果在连接到正在运行的 的setParameter mongosh会话中使用mongos 命令:

db.adminCommand(
{
setParameter: 1,
activeFaultDurationSecs: 300
}
)

使用 setParameter 设置的参数在重启后不会持续存在。有关详细信息,请参阅 setParameter 页面

要使该设置持续有效,使用 setParameter 选项在您的 mongos 配置文件设置 activeFaultDurationSecs,如以下示例所示:

setParameter:
activeFaultDurationSecs: 300
healthMonitoringIntensities

类型:文档数组

仅适用于 mongos

使用此参数设置健康管理器的强度水平。

healthMonitoringIntensities 接受一个文档数组,valuesvalues 中的每个文档都有两个字段:

  • type,运行状况管理器组件

  • intensity,强度等级

分面
健康观察器检查的内容
configServer
与配置服务器连接相关的集群运行状况问题。
dns
与 DNS 可用性和功能性相关的集群运行状况问题。
ldap
与 LDAP 可用性和功能性相关的集群运行状况问题。
强度等级
说明
critical
此组件上的健康管理器已启用,并且能够在发生错误时将出现故障的mongos从集群中移出。健康管理器会等待activeFaultDurationSecs指定的时间,然后自动停止mongos并将其移出集群。
non-critical
该组件上的健康管理器已启用并记录错误,但如果出现错误,Mongo 仍保留在集群中。
off
该组件上的健康管理器已禁用。mongos 不会对该组件执行任何健康状况检查。这是默认强度级别。

例如,要设置 dns 运行状况管理器组件为 critical 强度级别,则在启动时执行以下命令:

mongos --setParameter 'healthMonitoringIntensities={ values:[ { type:"dns", intensity: "critical"} ] }'

或者,如果在连接到正在运行的 的setParameter mongosh会话中使用mongos 命令:

db.adminCommand(
{
setParameter: 1,
healthMonitoringIntensities: { values: [ { type: "dns", intensity: "critical" } ] } } )
}
)

使用 setParameter 设置的参数在重启后不会持续存在。有关详细信息,请参阅 setParameter 页面

要使该设置持续有效,使用 setParameter 选项在您的 mongos 配置文件设置 healthMonitoringIntensities,如以下示例所示:

setParameter:
healthMonitoringIntensities: "{ values:[ { type:\"dns\", intensity: \"critical\"} ] }"
healthMonitoringIntervals

类型:文档数组

仅适用于 mongos

该健康管理器运行的频率(以毫秒为单位)。

healthMonitoringIntervals 接受一个文档数组,valuesvalues 中的每个文档都有两个字段:

  • type,运行状况管理器组件

  • interval,运行的时间间隔,以毫秒为单位

分面
健康观察器检查的内容
configServer
与配置服务器连接相关的集群运行状况问题。
dns
与 DNS 可用性和功能性相关的集群运行状况问题。
ldap
与 LDAP 可用性和功能性相关的集群运行状况问题。

例如,若要将 ldap 运行状况管理器组件设置为每 30 秒进行一次健康检查,则请在启动时执行以下命令:

mongos --setParameter 'healthMonitoringIntervals={ values:[ { type:"ldap", interval: "30000"} ] }'

或者,如果在连接到正在运行的 的setParameter mongosh会话中使用mongos 命令:

db.adminCommand(
{
setParameter: 1,
healthMonitoringIntervals: { values: [ { type: "ldap", interval: "30000" } ] } } )
}
)

使用 setParameter 设置的参数在重启后不会持续存在。有关详细信息,请参阅 setParameter 页面

要使该设置持续有效,使用 setParameter 选项在您的 mongos 配置文件设置 healthMonitoringIntervals,如以下示例所示:

setParameter:
healthMonitoringIntervals: "{ values: [{type: \"ldap\", interval: 200}] }"
progressMonitor

类型:文档

仅适用于 mongos

进度监视器运行测试以确保运行状况管理器的检查不会卡住或无响应。进度监视器按照 interval 指定的时间间隔来运行这些测试。如果健康检查开始但未在 deadline 指定的超时时间内完成,则进度监视器会停止 mongos 并将其从集群中删除。

字段
说明
单位
interval
确保健康管理器不会卡住或无响应的频率。
毫秒
deadline
如果健康管理器检查没有取得进展,则在 Mongo 自动失败之前超时。
秒数

要将 intervaldeadline 分别设置为 1000 毫秒和 300 秒,则在启动时发出以下命令:

mongos --setParameter 'progressMonitor={"interval": 1000, "deadline": 300}'

或者,如果在连接到正在运行的 的setParameter mongosh会话中使用mongos 命令:

db.adminCommand(
{
setParameter: 1,
progressMonitor: { interval: 1000, deadline: 300 } )
}
)

使用 setParameter 设置的参数在重启后不会持续存在。有关详细信息,请参阅 setParameter 页面

要使该设置持续有效,使用 setParameter 选项在您的 mongos 配置文件设置 progressMonitor,如以下示例所示:

setParameter:
progressMonitor: "{ interval: 1000, deadline: 300 }"
honorSystemUmask

版本 3.6 中的新增功能

仅适用于 mongod

默认值false

如果将honorSystemUmask 设置为true ,则 MongoDB 创建的新文件的权限将根据用户的umask 设置。如果 设置为processUmask honorSystemUmask,则无法设置true }。

如果将honorSystemUmask设置为false ,则 MongoDB 创建的新文件的权限设置为600 ,即仅向所有者授予读写权限。新目录的权限设置为700 。您可以使用processUmask覆盖群组和其他用户对 MongoDB 创建的所有新文件的默认权限。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

mongod --setParameter honorSystemUmask=true

注意

honorSystemUmask 在 Windows 系统上不可用。

journalCommitInterval

仅适用于 mongod

指定一个介于 1500 之间的整数,表示日志提交之间的间隔(以毫秒 (ms) 为单位)。

此参数在运行时和初创企业时都可用:

考虑以下示例,将journalCommitInterval设置为200毫秒:

db.adminCommand( { setParameter: 1, journalCommitInterval: 200 } )

提示

minSnapshotHistoryWindowInSeconds

版本 5.0 中的新增功能

默认值300

仅适用于 mongod

存储引擎保留快照历史记录的最小时间窗口(以秒为单位)。如果使用读关注 :readconcern: snapshot 查询数据并指定早于指定的minSnapshotHistoryWindowInSecondsatClusterTime值,则mongod会返回SnapshotTooOld错误。

此参数在运行时和初创企业时都可用:

指定一个大于或等于 (>=) 0 的整数。

考虑以下示例,其将 minSnapshotHistoryWindowInSeconds 设置为 600 秒:

db.adminCommand( { setParameter: 1, minSnapshotHistoryWindowInSeconds: 600 } )

注意

增加minSnapshotHistoryWindowInSeconds的值会增加磁盘使用量。有关更多信息,请参阅快照历史记录保留。

要修改MongoDB Atlas集群的此值,您必须联系Atlas 支持部门。

processUmask

仅适用于 mongod

覆盖当honorSystemUmask设置为false时用于群组和其他用户的默认权限。默认情况下,当honorSystemUmask设置为false时,MongoDB 创建的新文件的权限设置为600 。使用processUmask参数可以使用自定义umask值覆盖此默认值。文件所有者继承系统的权限umask

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

如果honorSystemUmask设置为true ,则无法设置此参数。

考虑以下示例,其将群组及其他用户的权限设置为仅读/写,并保留所有者的系统 umask 设置:

mongod --setParameter processUmask=011

注意

processUmask 在 Windows 系统上不可用。

syncdelay

仅适用于 mongod

指定 mongod 将其工作内存刷新到磁盘的间隔(以秒为单位)。默认情况下,mongod 每 60 秒向磁盘刷新一次内存。几乎在所有情况下,您都不应该设置该值,而应该使用默认设置。

此参数在运行时和初创企业时都可用:

考虑以下示例,其将 syncdelay 设置为 60 秒:

db.adminCommand( { setParameter: 1, syncdelay: 60 } )

为了提供持久性数据,WiredTiger 使用了检查点。 有关详细信息,请参阅《日志和 WiredTiger 存储引擎》。

wiredTigerConcurrentReadTransactions

仅适用于 mongod

仅适用于 WiredTiger 存储引擎。

指定 WiredTiger 存储引擎允许的并发读取事务的最大数量。

此参数在运行时和初创企业时都可用:

db.adminCommand( { setParameter: 1, wiredTigerConcurrentReadTransactions: <num> } )

提示

wiredTigerConcurrentWriteTransactions

仅适用于 mongod

仅适用于 WiredTiger 存储引擎。

指定 WiredTiger 存储引擎中允许的并发写入事务的最大数量。

此参数在运行时和初创企业时都可用:

db.adminCommand( { setParameter: 1, wiredTigerConcurrentWriteTransactions: <num> } )

提示

wiredTigerEngineRuntimeConfig

仅适用于 mongod

为正在运行的mongod实例指定wiredTiger存储引擎配置选项。

此参数仅在运行时可用。要设置参数,请使用setParameter命令。

警告

除非在 MongoDB 工程师的指导下,否则避免修改wiredTigerEngineRuntimeConfig ,因为此设置对 WiredTiger 和 MongoDB 都有重大影响。

考虑以下操作原型:

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

仅适用于 mongod

类型:整型

默认值:600

指定 wiredTiger 中的文件句柄在关闭之前可以保持空闲的时间(以秒为单位)。

如果将 wiredTigerFileHandleCloseIdleTime 设置为 0,则空闲句柄不会关闭。

此参数仅在初创企业可用。要设置该参数,请使用setParameter设置。

例如:

mongod --setParameter wiredTigerFileHandleCloseIdleTime=100000

有关所有可用的 WiredTiger 配置选项,请参阅 WiredTiger 文档。

auditAuthorizationSuccess

类型:布尔值

默认:false

注意

仅在MongoDB EnterpriseMongoDB Atlas中可用。

适用于 mongodmongos

允许对 AuthCheck 操作的授权成功进行审核

auditAuthorizationSuccessfalse时,审核系统仅记录authCheck的授权失败。

要启用对授权成功的审核,则发出以下命令:

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

启用auditAuthorizationSuccess比仅记录授权失败更能降低性能。

如果启用了运行时审核配置,则auditAuthorizationSuccess参数不应出现在mongodmongos配置文件中。如果存在该参数,则服务器将无法启动。

提示

另请参阅:

auditConfigPollingFrequencySecs

版本 5.0 中的新增功能

类型:整型

默认值:300

分片集群可能具有维护集群的审核配置设置的服务器。设置非配置服务器轮询配置服务器以获取当前审计生成的时间间隔(以秒为单位)。如果返回值与先前已知值不同,则发起节点将请求当前配置并更新其内部状态。

注意

使用默认值 300 秒,非配置节点可能会比 setAuditConfig 命令晚 5 分钟。

coordinateCommitReturnImmediatelyAfterPersistingDecision

版本 5.0 中的新增功能

在版本5中更新。 0 。 10

类型:布尔值

默认:false

仅适用于 mongod

分片事务协调器等待所有成员确认提交或取消多文档事务的决定,然后再将结果返回给客户端。

分片事务协调器向客户端返回多文档交易提交决策,但前提是对请求的事务写关注作出的决策持续有效

如果客户端请求的写关注小于 "majority",则在决策返回给客户端后,提交可能会回退。

事务可能没有“读你所写”的一致性。也就是说,读取操作可能不会反映其之前的写入操作的结果。这可能发生在以下情况下:

  • 事务必须写入多个分片。

  • 读取和早期写入发生在不同会话中。

因果一致性仅保证同一会话中发生的读取和写入的因果关系。

以下示例将 coordinateCommitReturnImmediatelyAfterPersistingDecision 设置为 true

mongod --setParameter coordinateCommitReturnImmediatelyAfterPersistingDecision=true

在运行期间,也可以使用 setParameter 命令设置该参数:

db.adminCommand( { setParameter: 1, coordinateCommitReturnImmediatelyAfterPersistingDecision: true } )
transactionLifetimeLimitSeconds

仅适用于 mongod

默认:60

指定多文档事务的生命周期。超过此限制的事务被视为已过期,并将通过定期清理过程中止。清理进程每transactionLifetimeLimitSeconds / 2秒运行一次,或至少每60秒运行一次。

清理过程有助于缓解存储缓存压力。

transactionLifetimeLimitSeconds 的最小值为 1 秒。

以下操作将transactionLifetimeLimitSeconds设置为30秒:

db.adminCommand( { setParameter: 1, transactionLifetimeLimitSeconds: 30 } )

您也可以在启动时设置参数transactionLifetimeLimitSeconds

mongod --setParameter "transactionLifetimeLimitSeconds=30"

要为分片集群设置参数,必须为所有分片副本集成员修改该参数。

从 MongoDB 5开始。 0 ,如果更改transactionLifetimeLimitSeconds参数,则还必须在所有配置服务器副本集成员上将transactionLifetimeLimitSeconds更改为相同的值。保持该值一致:

  • 确保路由表历史记录的保留时间至少达到分片副本集成员的事务生命周期限制。

  • 降低事务重试频率,从而提高性能。

transactionTooLargeForCacheThreshold

版本5中的新增功能。 0 。 16

仅适用于 mongod

类型:十进制

默认值:0.75

重试由于缓存压力而失败的事务的阈值。该值是脏缓存大小的百分比。默认值 0.75 表示脏缓存的 75%。

脏缓存限制为总缓存大小的 20%。当 transactionTooLargeForCacheThreshold 设置为 0.75,服务器仅重试使用少于 15% (0.75 * 20%) 存储引擎总缓存的事务。

该限制仅适用于重试。大型事务可以使用超过 transactionTooLargeForCacheThreshold% 的脏缓存。但是,如果由于缓存压力而回滚大型事务,则服务器会发出 TransactionTooLargeForCache 错误并且不会重试该事务。

要禁用此行为,将 transactionTooLargeForCacheThreshold 设置为 1.0

maxTransactionLockRequestTimeoutMillis

仅适用于 mongod

类型:整型

默认值:5

多文档事务在获取事务操作所需的锁时应等待的最大时间(以毫秒为单位)。

如果事务在等待maxTransactionLockRequestTimeoutMillis后无法获取锁,则事务将中止。

默认情况下,多文档事务等待5毫秒。也就是说,如果无法在5毫秒内获取锁,则事务将中止。如果操作在锁定请求中提供了更长的超时时间,则maxTransactionLockRequestTimeoutMillis将覆盖特定于操作的超时时间。

您可以将maxTransactionLockRequestTimeoutMillis设置为:

  • 0 这样,如果事务无法立即获取所需的锁,则事务将中止。

  • 大于 0 的数字,等待指定时间以获取所需的锁。这有助于避免瞬时并发锁获取(例如快速运行的元数据操作)导致的事务中止。但是,这可能会延迟死锁事务操作的中止。

  • -1 使用特定于操作的超时。

以下操作将maxTransactionLockRequestTimeoutMillis设置为20毫秒:

db.adminCommand( { setParameter: 1, maxTransactionLockRequestTimeoutMillis: 20 } )

您也可以在启动时设置这个参数:

mongod --setParameter maxTransactionLockRequestTimeoutMillis=20
shouldMultiDocTxnCreateCollectionAndIndexes

已在 5.0 中删除

类型:布尔值

默认值:true

一个标志,用于启用或禁用在事务内部创建collection或索引。将该参数设置为:

  • true 启用。(默认

  • false 以禁用。

您可以在启动时或运行时设置该参数。

重要

为分片集群设置参数时,在所有分片上设置该参数。

要在启动时设置参数,则在 configuration file 或使用合命令行上的 --setParameter 选项指定参数。例如:

mongod --setParameter shouldMultiDocTxnCreateCollectionAndIndexes=false

要在运行时修改,可以使用 setParameter 命令;例如:

db.adminCommand( { setParameter: 1, shouldMultiDocTxnCreateCollectionAndIndexes: false } )
← 配置文件设置和命令行选项映射