Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

自管理部署的MongoDB Server参数

在此页面上

  • Synopsis
  • 参数
  • 身份验证参数
  • 一般参数
  • 记录参数
  • 诊断参数
  • 复制性和一致性
  • 分片参数
  • 健康管理器参数
  • 存储参数
  • WiredTiger 参数
  • 审核参数
  • 事务参数
  • 基于槽的执行参数

注意

从MongoDB 8.0开始, LDAP身份验证和授权已弃用。 LDAP可用并将在MongoDB 8的整个生命周期内继续运行而不进行更改。 LDAP将在未来的主要发布中删除。

有关详细信息,请参阅 LDAP 弃用。

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

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

说明
使用 SHA-1 哈希函数的 RFC 5802 标准 Salted 质询响应身份验证机制。
RFC 7677 使用 SHA-256 哈希函数的标准 Salted Challenge Response Authentication Mechanism
MongoDB TLS/SSL 证书身份验证。
GSSAPI (Kerberos)
使用 Kerberos 的外部身份验证。此机制仅在 MongoDB Enterprise 中可用。
PLAIN (LDAP SASL)
使用 LDAP 进行外部身份验证。您也可使用 PLAIN 对数据库内用户进行身份验证。PLAIN 以纯文本形式传输密码。此机制仅在 MongoDB Enterprise 中可用。
OpenID Connect 是构建在 OAuth22 之上的身份验证层。此机制仅在 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 证书AWS IAM 环境变量的 MongoDB 部署。

连接失败后 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

默认值true

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

有关更多信息,请参阅 自管理部署中的本地主机异常

enforceUserClusterSeparation

适用于 mongodmongos

设置为false可在配置文件中的clusterAuthModekeyFile时禁用O/OU/DC检查。 这允许拥有成员证书的客户端以$external数据库中存储的用户身份进行身份验证。 如果配置文件中的clusterAuthMode不是keyFile ,则服务器不会启动。

要将enforceUserClusterSeparation参数设置为false ,请在启动期间运行以下命令:

mongod --setParameter enforceUserClusterSeparation=false

如果将enforceUserClusterSeparation参数设置为false ,则服务器不区分应用程序用于进行身份验证的客户端证书和具有特权访问权限的集群内证书。 如果您的clusterAuthModekeyFile ,则此操作无效。 但是,如果clusterAuthModex509 ,则使用允许模式的用户证书将与集群证书合并并授予特权访问权限。

如果执行以下操作,您的现有证书将被授予内部特权:

  1. 使用此参数允许的名称创建一个用户。

  2. enforceUserClusterSeparation参数设置为false

  3. clusterAuthMode 设置为 x509

在未验证是否已删除具有enforceUserClusterSeparation标志允许您创建的提升权限的用户之前,不得从keyFile升级到x509

KeysRotationIntervalSec

适用于 mongodmongos

默认:7776000 秒(90 天)

指定 HMAC 签名密钥在轮换到下一个之前保持有效的秒数。该参数主要便于身份验证测试。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

ldapForceMultiThreadMode

仅适用于 mongod

默认:false

启用并发 LDAP 操作的性能。

注意

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

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

提示

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

ldapQueryPassword

仅适用于 mongod

类型:字符串

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

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

ldapQueryUser

仅适用于 mongod

类型:字符串

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

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

ldapRetryCount

6.1 版本新增内容

仅适用于 mongod

类型:整型

默认值:0

对于在自托管部署上使用 LDAP 授权的 MongoDB 部署。

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

例如,以下代码将 ldapRetryCount 设置为 3 秒:

mongod --ldapRetryCount=3

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

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

在 5.2 版本中进行了更改

仅适用于 mongod

注意

从 MongoDB 5.2 开始,从 LDAP 服务器检索的缓存用户信息的更新间隔取决于 ldapShouldRefreshUserCacheEntries

用于在自管理部署上使用 LDAP 授权的 MongoDB 部署。

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

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

默认为 30 秒。

ldapUserCacheRefreshInterval

5.2 版本中的新增功能

仅适用于 mongod

类型:整型

默认:30 秒

注意

从 MongoDB 5.2 开始,从 LDAP 服务器检索的缓存用户信息的更新间隔取决于 ldapShouldRefreshUserCacheEntries

对于在自托管部署上使用 LDAP 授权的 MongoDB 部署。

mongod 在刷新 LDAP 服务器缓存的用户信息之前等待的时间间隔(以秒为单位)。

最大间隔为 86,400 秒(24 小时)。

例如,以下代码将 ldapUserCacheRefreshInterval 设置为 4000 秒:

mongod --setParameter ldapUserCacheRefreshInterval=4000

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

db.adminCommand( { setParameter: 1, ldapUserCacheRefreshInterval: 4000 } )
ldapUserCacheStalenessInterval

5.2 版本中的新增功能

仅适用于 mongod

类型:整型

默认值:90 秒

对于在自托管部署上使用 LDAP 授权的 MongoDB 部署。

上次刷新缓存后,mongod 保留已缓存的 LDAP 用户信息的时间间隔(以秒为单位)。

如果超过 ldapUserCacheStalenessInterval 秒没有成功刷新 LDAP 服务器的用户信息,那么 mongod

  • 使已缓存 LDAP 用户信息无效。

  • mongod 连接到 LDAP 服务器并授权 LDAP 用户之前,无法对 LDAP 用户的新会话进行身份验证。

  • 如果 mongod 无法连接到 LDAP 服务器,则授权使用此前经过身份验证的 LDAP 用户的任何现有会话。当 mongod 重新连接到 LDAP 服务器时,mongod 可确保 LDAP 用户获得正确授权。

最大间隔为 86,400 秒(24 小时)。

例如,以下代码将 ldapUserCacheStalenessInterval 设置为 4000 秒:

mongod --setParameter ldapUserCacheStalenessInterval=4000

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

db.adminCommand( { setParameter: 1, ldapUserCacheStalenessInterval: 4000 } )
ldapUseConnectionPool

仅适用于 mongod

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

MongoDB 使用以下默认值:

  • 在 Windows 上为 true。

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

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

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

ldapConnectionPoolUseLatencyForHostPriority

仅适用于 mongod

默认值:true

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

您只能在启动期间设置 ldapConnectionPoolUseLatencyForHostPriority,并且不能在运行时使用 setParameter 数据库命令更改此设置。

ldapConnectionPoolMinimumConnectionsPerHost

仅适用于 mongod

默认值:1

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

您只能在启动期间设置 ldapConnectionPoolMinimumConnectionsPerHost,并且不能在运行时使用 setParameter 数据库命令更改此设置。

ldapConnectionPoolMaximumConnectionsPerHost

仅适用于 mongod

从 MongoDB 版本 5.0.9 和 6.0.0 开始已更改 将默认值更改为 2147483647。在之前的版本中,默认值未设置。

默认值:2147483647

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

您只能在启动期间设置 ldapConnectionPoolMaximumConnectionsPerHost,并且不能在运行时使用 setParameter 数据库命令更改此设置。

ldapConnectionPoolMaximumConnectionsInProgressPerHost

仅适用于 mongod

从 MongoDB 版本 5.0.9 和 6.0.0 开始已更改 将默认值更改为 2。在之前的版本中,默认值未设置。

默认值:2

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

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

ldapConnectionPoolHostRefreshIntervalMillis

仅适用于 mongod

默认值:60000

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

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

ldapConnectionPoolIdleHostTimeoutSecs

仅适用于 mongod

默认值:300

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

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

ldapShouldRefreshUserCacheEntries

5.2 版本中的新增功能

仅适用于 mongod

类型:布尔值

默认值:true

对于在自托管部署上使用 LDAP 授权的 MongoDB 部署。

从 MongoDB 5.2 开始,从 LDAP 服务器检索的缓存用户信息的更新间隔取决于 ldapShouldRefreshUserCacheEntries

您只能在启动期间在 configuration file 中或使用命令行上的 --setParameter 选项设置 ldapShouldRefreshUserCacheEntries。例如,以下命令禁用 ldapShouldRefreshUserCacheEntries

mongod --setParameter ldapShouldRefreshUserCacheEntries=false
maxValidateMemoryUsageMB

仅适用于 mongod

版本 5.0 中的新增功能

默认值:200

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

此参数在运行时和启动时均可用:

oidcIdentityProviders

仅适用于 mongod

已在版本 8.0 中更改(也适用于 7.3 和 7.0)

在使用 OpenID Connect 身份验证时,请通过此参数指定身份提供商 (IDP) 配置。

oidcIdentityProviders 接受由零个或多个身份提供程序 (IDP) 配置组成的数组。空数组(默认)表示未启用任何 OpenID Connect 支持。

当定义了多个 IDP 时,oidcIdentityProviders 将使用 matchPattern 字段选择一个 IDP。数组顺序将决定优先级,并且始终选择第一个 IDP。

从 MongoDB 8.0 开始,当定义了多个身份提供程序 (IDP) 时,oidcIdentityProviders 参数会接受重复的 issuer 值,只要 audience 值对于每个发布者都是唯一的即可。此功能在版本 7.3 和 7.0 中也可用。

字段
必要性
类型
说明
issuer
必需
字符串

服务器应接受其令牌的 IDP 颁发者 URI。必须与用于身份验证的任何 JWT 中的 iss 字段匹配。

从 MongoDB 8.0 开始,当定义了多个身份提供程序 (IDP) 时,oidcIdentityProviders 参数会接受重复的 issuer 值,只要 audience 值对于每个发布者都是唯一的即可。此功能在版本 7.3 和 7.0 中也可用。

如果指定无法访问的颁发者 URI,MongoDB:

  1. 记录警告。

  2. 继续服务器启动,允许您更新发布者 URI。

  3. 重新尝试联系签发者。如果 MongoDB 到达签发者 URI 并验证访问令牌,则身份验证成功。如果仍无法访问签发者 URI,则身份验证失败。

已在版本 8.0 中更改(也适用于 7.3 和 7.0)

authNamePrefix
必需
字符串

唯一前缀,适用于授权中使用的每个生成的 UserNameRoleNameauthNamePrefix 只能包含以下字符:

  • 字母数字字符(az09 的组合)

  • 连字符 (-)

  • 下划线 (_)

matchPattern
可选的
字符串

正则表达式模式,用于确定应使用哪个 IDP。 matchPattern 与用户名匹配。数组顺序将决定优先级,并且始终选择第一个 IDP。

matchPattern 在某些配置中是必需的,这取决于用户如何设置 supportsHumanFlows

  • 当只有一个 IdP 将 supportsHumanFlows 设置为 true(默认值)时,matchPatterns 为可选项。

  • 当多个 IdP 将 supportsHumanFlows 设置为 true(默认值)时,每个 IdP 都需要 matchPatterns

  • matchPatterns 对于 supportsHumanFlows 设置为 false 的任何 IdP,均为可选项。

这不是一种安全机制。matchPattern 仅作为对客户端的警告。MongoDB 可接受由主体名称与此模式不匹配的 IDP 颁发的令牌。

clientId
可选的
字符串

IDP 提供的 ID,用于识别接收访问令牌的客户端。

supportsHumanFlows 设置为 true(默认值)时为必填项。

audience
必需
字符串

指定访问令牌要用于哪个应用程序或服务。

从MongoDB 7.0开始, 只能为 OIDC访问权限令牌指定一个audience oidcIdentityProviders字段。 包含空数组或包含多个字符串的数组的audience字段无效。

定义多个 IDP 时,这必须是共享 issuer 的每个配置的唯一值。

requestScopes
Optional
array[ string ]
MongoDB 向 IDP 请求的权限和访问级别。
principalName
Optional
字符串

从包含 MongoDB 用户标识符的访问令牌中提取的声明。

默认值为 sub(代表 subject)。

useAuthorizationClaim
Optional
布尔

确定是否需要authorizationClaim 。 默认值为true

如果 useAuthorizationClaim 字段设置为 true,则服务器要求身份提供商的配置为 authorizationClaim。此为默认行为。

如果 useAuthorizationClaim 字段设置为 false,则 authorizationClaim 字段为可选字段(如果已提供,则忽略)。服务器会改为执行以下操作:

  • 在令牌中搜索名称在 principalNameClaim 字段中列出的声明。通常命名为 sub。例如:

    sub: "spencer.jackson@example.com"

  • 通过连接 authNamePrefix、正斜杠 (/) 和访问令牌中由 principalNameClaim 标识的声明内容来构造内部用户名。例如,authNamePrefix 字段值为 "mdbinc" 时,内部用户名为:

    mdbinc/spencer.jackson@example.com

  • 查找具有此用户名的用户,并为客户端授权以下角色:

    { user: "mdbinc/spencer.jackson@example.com",
    db: "$external" }

7.2 版本新增:(7.0.5 中也提供

authorizationClaim
可选的
字符串

除非将 useAuthorizationClaim 设置为 false,否则为必填项。

从包含 MongoDB 角色名称的访问令牌中提取的声明。

logClaims
Optional
array[ string ]
完成身份验证后将包含在日志和审核消息中的访问令牌声明列表。
JWKSPollSecs
Optional
整型

向 IDP 请求更新的 JSON Web 密钥集 (JWKS) 的频率(以秒为单位)。设置为 0 将禁用轮询。

定义多个 IDP 时,共享 issuer 的每个配置的值必须相同。

supportsHumanFlows
Optional
bool

OIDC 提供商是否支持人工或机器工作流程。这会影响 clientIdmatchPattern 字段。

您可能会发现,通过机器工作负载 IdP 将此字段设置为false 非常有用,这样就可以在不需要时省略 clientId

默认值:true

版本 7.2 中的新增内容

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

ocspEnabled

适用于 mongodmongos

适用于 Linux 和 macOS。

默认值:true

启用或禁用 OCSP 的标志。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

例如,以下命令禁用 OCSP:

mongod --setParameter ocspEnabled=false ...

从 MongoDB 6.0 开始,如果在初始同步期间将 ocspEnabled 设置为 true,那么所有节点必须能够访问 OCSP 响应程序。

如果节点在 STARTUP2 状态下发生故障,则将 tlsOCSPVerifyTimeoutSecs 设置为小于 5 的值。

提示

另请参阅:

ocspValidationRefreshPeriodSecs

适用于 mongodmongos

适用于 Linux。

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

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

mongod --setParameter ocspValidationRefreshPeriodSecs=3600 ...

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

opensslCipherConfig

适用于 mongodmongos

仅适用于 Linux

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

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

注意

此参数仅适用于 TLS 1.2 及更早版本。要指定与 TLS 1.3 一起使用的密码套件,请使用 opensslCipherSuiteConfig 参数。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

优先使用 TLS 选项而非 SSL 选项。TLS 选项与 SSL 选项功能相同。以下示例使用 opensslCipherConfig 的密码字符串 'HIGH:!EXPORT:!aNULL@STRENGTH' 配置 mongod

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

适用于 mongodmongos

版本 5.0 中的新增功能

仅适用于 Linux

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

有关与 TLS 1.3 一起使用的密码套件列表,请参阅 https://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_set_cipher_list.html。可以采用冒号分隔的列表形式提供多个密码套件。

注意

此参数仅适用于 TLS 1.3。要指定用于 TLS 1.2 或更早版本的密码字符串,请使用 opensslCipherConfig 参数。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

例如,以下代码使用 'TLS_AES_256_GCM_SHA384'opensslCipherSuiteConfig 密码套件配置 mongod 与 TLS 1.3 一起使用:

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

适用于 mongodmongos

仅适用于 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) 密码套件)提供前向保密前向保密密码套件创建一个临时会话密钥,该密钥受服务器私钥保护但从未传输。这确保即使服务器的私钥被泄露,您也无法使用泄露的密钥解密过去的会话。

注意

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

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

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

适用于 mongodmongos

注意

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

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

saslHostName

适用于 mongodmongos

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

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

注意

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

saslServiceName

适用于 mongodmongos

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

saslServiceName 仅在 MongoDB Enterprise 中可用。

重要

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

scramIterationCount

适用于 mongodmongos

默认值10000

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

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

此参数在运行时和启动时均可用:

例如,以下代码将 scramIterationCount 设置为 12000

mongod --setParameter scramIterationCount=12000

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

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

适用于 mongodmongos

默认值15000

更改用于所有新的 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

适用于 mongodmongos

设置为:

  • preferTLS

  • requireTLS

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

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

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

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

提示

另请参阅:

tlsClusterAuthX509Override

适用于 mongodmongos

7.0 版本中的新增功能

覆盖 clusterAuthX509 配置选项。

setParameter:
tlsClusterAuthX509Override: { attributes: O=MongoDB, OU=MongoDB Server }

该参数支持 attributesextensionValue 覆盖项。

当服务器验证来自成员的连接时,它会分析 X.509 证书以确定其是否属于集群成员。如果服务器使用 attributes 设置或 tlsClusterAuthX509Override 参数上的 attributes 字段,它会检查证书的标识名 (DN) 值。如果设置了 extensionValue 设置或 tlsClusterAuthX509Override 参数的 extensionValue 字段,它会检查证书的扩展值。如果它找到了匹配项,便会授权该连接为对等互连。

当新证书具有不同的属性或扩展名值时,使用此参数可以轮换证书。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

tlsOCSPStaplingTimeoutSecs

适用于 mongodmongos

适用于 Linux。

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

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

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

mongod --setParameter tlsOCSPStaplingTimeoutSecs=20 ...
tlsOCSPVerifyTimeoutSecs

适用于 mongodmongos

适用于 Linux 和 Windows。

默认值:5

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

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

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

mongod --setParameter tlsOCSPVerifyTimeoutSecs=20 ...
tlsUseSystemCA

仅适用于 mongod

类型:布尔值

默认:false

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

重要

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

--tlsCAFiletls.CAFiletlsUseSystemCA 是互斥的。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

例如,要将 tlsUseSystemCA 设置为 true

mongod --setParameter tlsUseSystemCA=true

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

tlsWithholdClientCertificate

适用于 mongodmongos

默认:false

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

tlsX509ClusterAuthDNOverride

适用于 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.509 证书在 mongod/mongos 系统时钟的 30 天内过期,则 mongod/mongos 会记录连接警告。使用 tlsX509ExpirationWarningThresholdDays 参数控制证书过期警告阈值:

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

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

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

该参数的最小值为 0

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

有关 x.509 证书有效性的更多信息,请参阅 RFC 5280 4.1.2.5.

userCacheInvalidationIntervalSecs

仅适用于 mongos

默认值:30

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

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

此参数在运行时和启动时均可用:

authFailedDelayMs

适用于 mongodmongos

默认值:0

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

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

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

allowRolesFromX509Certificates

适用于 mongodmongos

默认值:true

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

allowDiskUseByDefault

仅适用于 mongod

默认:真

从 MongoDB 6.0 开始,需要 100 兆字节以上内存容量的管道阶段默认将临时文件写入磁盘。这些临时文件在管道执行期间持续存在,并且可能影响实例上的存储空间。在 MongoDB 的早期版本中,您必须将 { allowDiskUse: true } 传递给单个 findaggregate 命令才能启用此行为。

单个 findaggregate 命令可以通过以下任一方式覆盖 allowDiskUseByDefault 参数:

  • 使用 { allowDiskUse: true } 以允许在 allowDiskUseByDefault 设置为 false 时将临时文件写入磁盘

  • 使用 { allowDiskUse: false } 以禁止在 allowDiskUseByDefault 设置为 true 时将临时文件写入磁盘

此参数在运行时和启动时均可用:

mongod --setParameter allowDiskUseByDefault=false

allowDiskUseByDefault 仅适用于 mongod,不适用于 mongosmongos 从不将临时文件写入磁盘。在连接至正在运行的 mongodmongosh 会话中使用 setParameter 命令,以在服务器正在运行时更改参数的值:

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

适用于 mongodmongos

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

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

此参数在运行时和启动时均可用:

mongos --setParameter httpVerboseLogging=true
slowConnectionThresholdMillis

6.3 版本中的新功能

适用于 mongodmongos

默认值:100

设置时间限制(以毫秒为单位),以记录服务器慢速连接的建立。

如果建立连接的时间比 slowConnectionThresholdMillis 参数长,则会在日志中添加一个事件,并将消息 msg 字段设置为 "Slow connection establishment"

此参数在运行时和启动时均可用:

以下示例将 slowConnectionThresholdMillis 设置为 250 毫秒。

mongod --setParameter slowConnectionThresholdMillis=250

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

db.adminCommand( { setParameter: 1, slowConnectionThresholdMillis: 250 } )
connPoolMaxConnsPerHost

适用于 mongodmongos

默认值:200

为传出连接至全局连接池的其他 mongod 实例设置旧版连接池的最大大小。池的大小不会阻止创建额外的连接,但阻止连接池保留超过 connPoolMaxConnsPerHost 值的连接。

注意

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

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

mongod --setParameter connPoolMaxConnsPerHost=250
connPoolMaxInUseConnsPerHost

适用于 mongodmongos

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

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

mongod --setParameter connPoolMaxInUseConnsPerHost=100

提示

另请参阅:

globalConnPoolIdleTimeoutMinutes

适用于 mongodmongos

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

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

mongos --setParameter globalConnPoolIdleTimeoutMinutes=10
cursorTimeoutMillis

适用于 mongodmongos

默认值:600000(10 分钟)

设置在 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分析。

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

此参数在运行时和启动时均可用:

注意

notablescan 不允许使用集群索引的无界查询,因为这些查询需要完整的集合扫描。有关更多信息,请参阅集合扫描

ttlMonitorEnabled

仅适用于 mongod

默认值true

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

此参数在运行时和启动时均可用:

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

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

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

mongod --setParameter ttlMonitorEnabled=false

重要

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

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 设置。

提示

另请参阅:

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 设置。

提示

另请参阅:

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 连接的主机操作系统没有影响。

此参数仅在启动时可用。要设置该参数,请使用 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
indexBuildMinAvailableDiskSpaceMB

版本 7.1 中的新增内容

仅适用于 mongod

默认:500 MB

设置索引构建所需的最小可用磁盘空间(以 MB 为单位)。

必须大于或等于 0 MB,且小于或等于 8 TB。 0 禁用最小磁盘空间要求。

如果可用磁盘空间低于indexBuildMinAvailableDiskSpaceMB ,则无法启动新的索引构建,并且当前的索引构建将被取消。

警告

如果增加indexBuildMinAvailableDiskSpaceMB ,请确保服务器有足够的可用磁盘空间。 此外,如果将indexBuildMinAvailableDiskSpaceMB设置得太高,则可能会不必要地阻止索引构建,而此时有足够的可用磁盘空间并且indexBuildMinAvailableDiskSpaceMB可以设置得较低。

此参数在运行时和启动时均可用:

以下示例将indexBuildMinAvailableDiskSpaceMB设置为650 MB:

db.adminCommand( { setParameter: 1, indexBuildMinAvailableDiskSpaceMB: 650 } )

您也可以在初创企业设置indexBuildMinAvailableDiskSpaceMB 。例如:

mongod --setParameter indexBuildMinAvailableDiskSpaceMB=650
indexMaxNumGeneratedKeysPerDocument

适用于 mongodmongos

5.3 版本中的新增功能

默认值:100000

限制为文档生成的最大键数,以防止出现内存不足错误。可以提高限制,但是如果某个操作需要的键数超过 indexMaxNumGeneratedKeysPerDocument 参数指定的键数,则操作将失败。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

maxIndexBuildMemoryUsageMegabytes

仅适用于 mongod

默认值:200

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

此参数在运行时和启动时均可用:

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

maxIndexBuildMemoryUsageMegabytes 对索引构建一次使用的内存量设置限制。这可能会在索引构建过程中生成和排序索引键时影响性能。增加内存限制可提高索引构建期间的排序性能。

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

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

提示

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

如果已经启动了集合扫描,则更改 maxIndexBuildMemoryUsageMegabytes 不会影响正在进行的索引构建。但是,强制副本集重新配置会重新启动集合扫描并使用所提供的最新 maxIndexBuildMemoryUsageMegabytes

reportOpWriteConcernCountersInServerStatus

仅适用于 mongod

默认: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 } )

注意

如果在启动时未启用存储节点看门狗 ,则在运行时设置 watchdogPeriodSeconds 会返回错误。

警告

tcmallocAggressiveMemoryDecommit 在 8.0 中已被弃用。MongoDB 8.0 使用更新版本的 tcmalloc 来改善内存碎片和管理。有关更多信息,请参阅 tcmalloc 升级。要将内存释放回操作系统,请考虑改用 tcmallocEnableBackgroundThread

tcmallocEnableBackgroundThread

适用于 mongodmongos

8.0版本新增

类型:布尔值

默认值:true

如果设置为 true,则 tcmallocEnableBackgroundThread 会创建一个后台线程,该线程会定期将内存释放回操作系统。tcmallocReleaseRate 的值决定了后台线程释放内存的速度(以每秒字节数为单位)。

注意

如果 tcmallocEnableBackgroundThreadtruetcmallocReleaseRate0 ,则 MongoDB 仍会释放内存。

为了提高内存使用率,我们建议使用默认值 true。要了解有关改进性能和内存管理的更多信息,请参阅升级后的 TCMalloc。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

以下操作将 tcmallocEnableBackgroundThread 设置为 false

mongod --setParameter "tcmallocEnableBackgroundThread=false"
tcmallocReleaseRate

适用于 mongodmongos

在版本8.0中进行了更改

默认值:0

以字节/秒为单位指定 TCMalloc 释放率。释放率是指 MongoDB 向系统释放未使用的内存的速率。如果将 tcmallocReleaseRate 设置为 0,MongoDB 不会将内存释放回系统。增加此值可以更快地返回内存;减少此值则会较慢地恢复内存。

注意

如果 tcmallocEnableBackgroundThreadtruetcmallocReleaseRate0 ,则 MongoDB 仍会释放内存。

从 MongoDB 8.0开始,由于tcmalloc 升级优先考虑 CPU 性能而不是内存释放,默认值 tcmallocReleaseRate 减少为 0 。MongoDB 的早期版本使用旧版本的 tcmalloc 将默认 tcmallocReleaseRate 设置为 1 以平衡内存释放和性能。

此参数在运行时和启动时均可用:

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

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

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

mongod --setParameter "tcmallocReleaseRate=5.0"
fassertOnLockTimeoutForStepUpDown

5.3 版本中的新增功能

适用于 mongodmongos

默认值:15 秒

允许接收请求的服务器升级或降级,以在超时期间无法响应时(例如由于服务器磁盘故障)终止操作。这使集群能够成功选举出新的主节点和,从而继续保持可用性。

fassertOnLockTimeoutForStepUpDown 默认为 15 秒。要禁用节点快速插入,请设置 fassertOnLockTimeoutForStepUpDown=0

此参数在运行时和启动时均可用:

以下示例禁用节点快速插入:

mongod --setParameter fassertOnLockTimeoutForStepUpDown=0
ingressAdmissionControllerTicketPoolSize

仅适用于 mongod

默认值1000000

控制入口队列同时允许的最大操作数。1000000 的默认值表示无界的数值等效值,它允许所有传入操作,直到 MongoDB 允许的默认最大连接数。

在队列中有操作等待的情况下,增加该值可在新池大小允许的范围内解锁尽可能多的操作。减小该值不会阻止任何当前正在执行的操作,但传入的可控操作会被阻止,直到有工单可用。

mongod --setParameter ingressAdmissionControllerTicketPoolSize=100000

警告

除非得到 MongoDB 工程师的指示,否则请避免修改 ingressAdmissionControllerTicketPoolSize。此设置对 WiredTiger 和 MongoDB 都有重大影响。

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

适用于 mongodmongos

类型:非负整数

默认值:10

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

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

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

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

警告

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

此参数在运行时和启动时均可用:

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

mongod --setParameter maxLogSizeKB=20
profileOperationResourceConsumptionMetrics

仅适用于 mongod

类型:布尔值

默认:false

用于确定操作是否收集资源消耗指标并在慢速查询日志中报告这些指标的标志。如果启用分析,则这些指标也包括在内。

如果设置为 true,则运行 explain 命令将在详细程度为 executionStats 或更高时返回 operationMetrics

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

quiet

适用于 mongodmongos

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

此参数在运行时和启动时均可用:

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

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

提示

另请参阅:

redactClientLogData

适用于 mongodmongos

类型:布尔值

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

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

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

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

  • 使用 --redactClientLogData 选项启动 mongod

    mongod --redactClientLogData
  • 配置文件中设置 security.redactClientLogData 选项:

    security:
    redactClientLogData: true
    ...

您无法使用 --setParameter 选项在启动时设置 redactClientLogData

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

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

提示

另请参阅:

redactEncryptedFields

6.1.0 版本新增

适用于 mongodmongos

类型:布尔值

默认值true

配置 mongodmongos 以编辑所有日志消息中加密的 Binary 数据的字段值。

此参数在运行时和启动时均可用:

traceExceptions

适用于 mongodmongos

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

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

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

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

提示

另请参阅:

suppressNoTLSPeerCertificateWarning

适用于 mongodmongos

类型:布尔值

默认:false

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

以下操作将 suppressNoTLSPeerCertificateWarning 设置为 true

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

7.0 版本中的新增功能

适用于 mongodmongos

类型:布尔值

默认值:true

决定是否启用与集群连接运行状况指标相关的特定日志消息。如果将 enableDetailedConnectionHealthMetricLogLines 设置为 false,则会关闭以下日志消息,但 MongoDB 仍会收集有关集群连接运行状况指标的数据:

日志消息
说明
已接受来自对等方的 TLS 连接
指示服务器在与已接受的入口连接的 TLS 握手期间成功解析了对等证书。
入口 TLS 握手已完成
指示与入口连接的 TLS 握手已完成。
你好,已完成

指示传入客户端连接上的初始连接握手已完成。

MongoDB 仅使用第一个 hello 命令显示日志消息。

身份验证指标报告
指定身份验证对话中某一步骤的完成时间。
自会话启动或身份验证握手以来,在入口连接上收到了第一条命令
指示入口连接接收到第一条不属于握手的命令。
网络响应发送时间慢
表示通过入口连接将响应发送回客户端所花费的时间(以毫秒为单位)超过了 slowMS 服务器参数定义的时长。
已完成 OCSP 请求的客户端验证
在建立出口 TLS 连接时,如果对等方没有在 TLS 握手中包含一个 OCSP 响应,那么服务器必须向证书颁发机构发送一个 OCSP 请求。当证书颁发机构收到 OCSP 响应时,MongoDB 会写入这条日志消息。
连接建立缓慢
表示通过入口连接向客户端发回响应所需的时间比用 slowConnectionThresholdMillis 参数指定的阈值长。当连接建立超时时,MongoDB 也会发出此日志消息。
等待获取连接时操作超时
表示操作在等待获取出口连接时超时。
已获取远程操作连接并完成线路写入
表示服务器花费了一毫秒或更长的时间在出口连接上写入传出请求,从连接建立的瞬间开始计算。

此参数在运行时和启动时均可用:

为了方便 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

适用于 mongodmongos

类型:布尔值

默认值:true

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

此参数在运行时和启动时均可用:

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

mongod --setParameter diagnosticDataCollectionEnabled=false
diagnosticDataCollectionDirectoryPath

仅适用于 mongos

类型:字符串

警告

如果使用 diagnosticDataCollectionEnabled 禁用全时诊断数据捕获 (FTDC) 或者如果将 systemLog.destination 设置为 syslog,则必须在设置 diagnosticDataCollectionDirectoryPath 后重启 mongos

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

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

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

如果 mongos 无法创建指定目录,则禁用该实例的诊断数据捕获。如果路径中已存在同名文件或者进程没有创建目录的权限,则 mongos 可能无法创建指定目录。

此参数在运行时和启动时均可用:

diagnosticDataCollectionDirectorySizeMB

适用于 mongodmongos

类型:整型

默认值200 (分片集群中为 400

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

在 8.0 版中更改:对于分片集群中使用的 mongosmongod 实例, diagnosticDataCollectionDirectorySizeMB 的默认值为 400 MB。在副本集中使用或用作独立服务器的 mongod 实例的默认值为 200 MB。

此参数在运行时和启动时均可用:

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

mongod --setParameter diagnosticDataCollectionDirectorySizeMB=250

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

diagnosticDataCollectionFileSizeMB

适用于 mongodmongos

类型:整型

默认值:10

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

此参数在运行时和启动时均可用:

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

mongod --setParameter diagnosticDataCollectionFileSizeMB=20

diagnosticDataCollectionFileSizeMB 的最小值为 1 MB。

diagnosticDataCollectionPeriodMillis

适用于 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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

setParameter:
disableSplitHorizonIPCheck: true
enableOverrideClusterChainingSetting

5.0.2 版本新增

适用于 mongodmongos

类型:布尔值

默认:false

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

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

mongod --setParameter enableOverrideClusterChainingSetting=true
logicalSessionRefreshMillis

适用于 mongodmongos

类型:整型

默认值:300000(5 分钟)

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

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

mongod --setParameter logicalSessionRefreshMillis=600000
localLogicalSessionTimeoutMinutes

适用于 mongodmongos

类型:整型

默认值:30

警告

仅用于测试目的

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

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

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

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

mongod --setParameter localLogicalSessionTimeoutMinutes=20
maxAcceptableLogicalClockDriftSecs

适用于 mongodmongos

类型:整型

默认值:31536000(1 年)

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

如果新的集群时间与当前集群时间相差超过 maxAcceptableLogicalClockDriftSecs,那么您无法将集群时间提前到新值。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

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

mongod --setParameter maxAcceptableLogicalClockDriftSecs=900
maxSessions

适用于 mongodmongos

类型:整型

默认值:1000000

可以缓存的最大会话数。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

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

mongod --setParameter maxSessions=1000
oplogBatchDelayMillis

6.0 版本中的新功能

适用于 mongodmongos

类型:整型

默认值:0

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

增大 oplogBatchDelayMillis 会导致 MongoDB 在从节点上应用 oplog 批处理的频率下降,并且每次批处理包含更多的数据。这样会导致从节点上的 IOPS 减小,但带有写关注 "majority" 的写入操作的延迟会增加。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

例如,运行以下命令将 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 命令所需的临时文档是否存储在侧面集合 (config.image_collection) 中。

如果 storeFindAndModifyImagesInSideCollection 是:

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

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

如果您符合以下情况,请将 storeFindAndModifyImagesInSideCollection 设置为 true

注意

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

此参数在运行时和启动时均可用:

例如,要在启动期间将 storeFindAndModifyImagesInSideCollection 设置为 false

mongod --setParameter storeFindAndModifyImagesInSideCollection=false

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

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

仅适用于 mongod

类型:整型

默认值:30

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

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

mongod --setParameter TransactionRecordMinimumLifetimeMinutes=20

提示

另请参阅:

enableFlowControl

适用于 mongodmongos

类型:布尔值

默认值:true

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

此参数在运行时和启动时均可用:

注意

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

flowControlTargetLagSeconds

适用于 mongodmongos

类型:整型

默认值:10

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

指定值必须大于 0。

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

此参数在运行时和启动时均可用:

flowControlWarnThresholdSeconds

适用于 mongodmongos

类型:整型

默认值:10

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

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

此参数在运行时和启动时均可用:

initialSyncTransientErrorRetryPeriodSeconds

适用于 mongodmongos

类型:整型

默认值:86400

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

此参数在运行时和启动时均可用:

initialSyncSourceReadPreference

仅适用于 mongod

类型:字符串

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

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

无法为 initialSyncSourceReadPreference 指定标签集或 maxStalenessSeconds

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

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

initialSyncMethod

5.2 版本中的新增功能

仅适用于 mongod

类型:字符串

默认值logical

仅在 MongoDB Enterprise 中可用。

用于初始同步的方法。

设置为 logical 以使用逻辑初始同步。设置为 fileCopyBased 以使用基于文件副本的初始同步。

此参数仅影响指定该参数的成员的同步方法。在单个副本集成员上设置此参数不会影响任何其他副本集成员的同步方法。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

maxNumSyncSourceChangesPerHour

适用于 mongodmongos

版本 5.0 中的新增功能

类型:整型

默认值:3

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

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

此参数在运行时和启动时均可用:

oplogFetcherUsesExhaust

仅适用于 mongod

类型:布尔值

默认值:true

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

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

oplogInitialFindMaxSeconds

仅适用于 mongod

类型:整型

默认:60

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

此参数在运行时和启动时均可用:

replWriterThreadCount

仅适用于 mongod

类型:整型

默认值:16

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

提示

另请参阅:

replWriterMinThreadCount

版本 5.0 中的新增功能

仅适用于 mongod

类型:整型

默认值:0

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

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

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

rollbackTimeLimitSecs

类型:64 位整数

默认值:86400(1 天)

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

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

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

此参数在运行时和启动时均可用:

waitForSecondaryBeforeNoopWriteMS

仅适用于 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

适用于 mongodmongos

Default: 104857600 (100MB)

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

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

此参数在运行时和启动时均可用:

以下示例将 replBatchLimitBytes 设置为 64 MB 以限制 oplog 应用程序的批处理大小:

mongod --setParameter replBatchLimitBytes=67108864

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

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

仅适用于 mongod

类型:文档

默认值{ 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 文档括起来

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

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

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

setParameter:
mirrorReads: '{samplingRate: 0.10}'

或者,如果在连接正在运行的 mongodmongosh 会话中使用 setParameter 命令,则不要用引号将文档括起来:

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

5.3 版本中的新增功能

仅适用于 mongod

类型:布尔值

默认:false

指定副本集是否允许使用多个仲裁节点。

不建议使用多个仲裁节点:

  • 多个仲裁节点会使多数写关注的使用不可靠。MongoDB 在计算成员多数时对仲裁节点进行计数,但仲裁节点不会存储数据。通过包含多个仲裁节点,大多数写入操作有可能在写入复制到大多数承载节点之前返回成功。

  • 即使副本集没有足够的从节点用于数据复制,多个仲裁节点也允许副本集接受写入。

有更多信息,请参阅对多个仲裁节点的关注

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

mongod --setParameter allowMultipleArbiters=true
analyzeShardKeyCharacteristicsDefaultSampleSize

7.0 版本中的新增功能

仅适用于 mongod

类型:整型

默认值:10000000

如果运行 analyzeShardKey 时未设置 sampleRatesampleSize,则指定在计算分片键特征指标时要采样的文档数。必须大于 0

此参数在运行时和启动时均可用:

此示例在启动时将 analyzeShardKeyCharacteristicsDefaultSampleSize 设置为 10000

mongod --setParameter analyzeShardKeyCharacteristicsDefaultSampleSize=10000

在运行期间,您可以使用 setParameter 命令设置或修改参数:

db.adminCommand( { setParameter: 1, analyzeShardKeyCharacteristicsDefaultSampleSize: 10000 } )
analyzeShardKeyNumMostCommonValues

7.0 版本中的新增功能

仅适用于 mongod

类型:整型

默认值:5

指定要返回的最常用分片键值的个数。如果集合包含的唯一分片键少于此值,则 analyzeShardKeyNumMostCommonValues 将返回最常用值的个数。必须大于 0 且小于或等于 1000

此参数在运行时和启动时均可用:

此示例在启动时将 analyzeShardKeyNumMostCommonValues 设置为 3

mongod --setParameter analyzeShardKeyNumMostCommonValues=3

在运行期间,您可以使用 setParameter 命令设置或修改参数:

db.adminCommand( { setParameter: 1, analyzeShardKeyNumMostCommonValues: 3 } )
analyzeShardKeyNumRanges

7.0 版本中的新增功能

仅适用于 mongod

类型:整型

默认值:100

指定计算分片键范围热度时将分片键空间划分为多少个范围。必须大于 0 且小于或等于 10000

此参数在运行时和启动时均可用:

此示例在启动时将 analyzeShardKeyNumRanges 设置为 50

mongod --setParameter analyzeShardKeyNumRanges=50

在运行期间,您可以使用 setParameter 命令设置或修改参数:

db.adminCommand( { setParameter: 1, analyzeShardKeyNumRanges: 50 } )
analyzeShardKeyMonotonicityCorrelationCoefficientThreshold

7.0 版本中的新增功能

仅适用于 mongod

类型:double

默认值:0.7

指定用于确定分片键是否按插入顺序单调变化的 RecordId 相关系数阈值。必须大于 0 且小于或等于 1

此参数在运行时和启动时均可用:

此示例在启动时将 analyzeShardKeyMonotonicityCorrelationCoefficientThreshold 设置为 1

mongod --setParameter analyzeShardKeyMonotonicityCorrelationCoefficientThreshold=1

在运行期间,您可以使用 setParameter 命令设置或修改参数:

db.adminCommand( { setParameter: 1, analyzeShardKeyMonotonicityCorrelationCoefficientThreshold: 1 } )
autoMergerIntervalSecs

7.0 版本中的新增功能

仅适用于 mongod

类型:整型

默认值:3600

启用 AutoMerger 后,指定自动合并之间的时间间隔(以秒为单位)。默认值为 3600 秒,即一小时。

autoMergerIntervalSecs 只能在配置服务器上设置。

此参数在运行时和启动时均可用:

此示例是在启动时将 autoMergerIntervalSecs 设置为 7200 秒,即两小时:

mongod --setParameter autoMergerIntervalSecs=7200

在运行期间,您可以使用 setParameter 命令设置或修改参数:

db.adminCommand( { setParameter: 1, autoMergerIntervalSecs: 7200 } )
autoMergerThrottlingMS

7.0 版本中的新增功能

仅适用于 mongod

类型:整型

默认值:15000

启用 AutoMerger 后,指定 AutoMerger 在同一集合上启动的合并之间的最小时间间隔(以毫秒为单位)。

autoMergerThrottlingMS 只能在配置服务器上设置。

此参数在运行时和启动时均可用:

此示例是在启动时将 autoMergerThrottlingMS 设置为 60000 毫秒,即一分钟:

mongod --setParameter autoMergerThrottlingMS=60000

在运行期间,您可以使用 setParameter 命令设置或修改参数:

db.adminCommand( { setParameter: 1, autoMergerThrottlingMS: 60000 } )
balancerMigrationsThrottlingMs

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

仅适用于 mongod

类型:整型

默认值:1000

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

此参数在运行时和启动时均可用:

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

mongod --setParameter balancerMigrationsThrottlingMs=2000

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

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

5.3 版本中的新增功能

适用于 mongodmongos

类型:整型

默认值:0

当对分片集合中的数据块进行碎片整理时,指定由负载均衡器运行的连续分割与合并命令之间的最短时间段(以毫秒为单位)。chunkDefragmentationThrottlingMS 会限制分割和合并命令的速度。

此参数在运行时和启动时均可用:

以下示例将 chunkDefragmentationThrottlingMS 设置为 10 毫秒:

mongod --setParameter chunkDefragmentationThrottlingMS=10

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

db.adminCommand( { setParameter: 1, chunkDefragmentationThrottlingMS: 10 } )
chunkMigrationConcurrency

从 MongoDB 7.0、6.3、6.0.6(和 5.0.15)开始提供。

仅适用于 mongod

类型:整型

默认值:1

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

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

最大值为 500。

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

如果 chunkMigrationConcurrency 大于1,则忽略所设 _secondaryThrottle 配置。_secondaryThrottle 设置决定了在数据块迁移期间,在什么条件下将对数据块中的下一个文档进行处理。有关详细信息,请参阅范围迁移和复制。

此参数在运行时和启动时均可用:

以下示例将 chunkMigrationConcurrency 设置为 5

mongod --setParameter chunkMigrationConcurrency=5

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

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

要配置集合负载均衡,请参阅 configureCollectionBalancing

要了解如何对分片集合进行碎片整理,请参阅对分片集合进行碎片整理。

disableResumableRangeDeleter

仅适用于 mongod

类型:布尔值

默认:false

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

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

6.1.0 版本新增

仅适用于 mongos

类型:布尔值

默认值false

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

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

注意

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

此参数在运行时和启动时均可用:

例如,在启动期间设置 opportunisticSecondaryTargeting

mongos --setParameter opportunisticSecondaryTargeting=true
shardedIndexConsistencyCheckIntervalMS

仅适用于 mongod

类型:整型

默认值:600000

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

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

mongod --setParameter shardedIndexConsistencyCheckIntervalMS=300000

提示

另请参阅:

enableFinerGrainedCatalogCacheRefresh

注意

8.0 中已弃用

从 MongoDB 8.0 开始,该参数已弃用,不会导致任何变更或错误。

适用于 mongodmongos

类型:布尔值

默认值:true

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

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

重要

从 MongoDB 8.0开始,对冲读已弃用。 默认情况下,指定读取偏好nearest的查询不再使用对冲读。 如果您明确指定对冲读,MongoDB 会执行对冲读并记录警告。

仅适用于 mongos

类型:整型

默认值:150

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

此参数在运行时和启动时均可用:

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

mongos --setParameter maxTimeMSForHedgedReads=200

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

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

版本 5.0 中的新增功能

仅适用于 mongod

类型:整型

默认值:10

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

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

从 MongoDB 7.1(包括 7.0.1)开始,您可以在运行时设置该参数。

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

mongod --setParameter maxCatchUpPercentageBeforeBlockingWrites=20

从 MongoDB 7.1(和 7.0.1)开始,您可以使用 setParameter 命令在运行期间设置参数:

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

提示

另请参阅:

metadataRefreshInTransactionMaxWaitBehindCritSecMS

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

仅适用于 mongod

类型:整型

默认值:500

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

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

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

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

警告

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

此参数在运行时和启动时均可用:

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

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

7.0 版本中的新增功能

7.0.1 版本中的更改

适用于 mongodmongos

类型:整型

默认值:10

采样器(mongosmongod)刷新其查询分析器采样率的时间间隔。

根据经过其中的流量,在分片集群中的 mongos 实例或副本集中的 mongod 实例之间分配 configureQueryAnalyzer 命令配置的采样率。要使 mongosmongod 的采样率分配对通过其中的流量更加敏感,请减小该值。

建议使用默认值。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

从 MongoDB 7.0.1 开始,您可以在运行期间设置 queryAnalysisSamplerConfigurationRefreshSecs

此示例将在 mongod 实例上,在启动时将 queryAnalysisSamplerConfigurationRefreshSecs 设置为 60 秒:

mongod --setParameter queryAnalysisSamplerConfigurationRefreshSecs=60

此示例将在 mongos 实例上,在启动时将 queryAnalysisSamplerConfigurationRefreshSecs 设置为 60 秒:

mongos --setParameter queryAnalysisSamplerConfigurationRefreshSecs=60

如要将该值设置为 30 秒,请进行以下运行:

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

7.0 版本中的新增功能

7.0.1 版本中的更改

仅适用于 mongod

类型:整型

默认值:90

将采样查询写入磁盘的时间间隔(以秒为单位)。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

从 MongoDB 7.0.1 开始,您可以在运行期间设置 queryAnalysisWriterIntervalSecs

此示例将在 mongod 实例上,在启动时将 queryAnalysisWriterIntervalSecs 设置为 60 秒:

mongod --setParameter queryAnalysisWriterIntervalSecs=60
To set the value to 60 seconds, run the following:
db.adminCommand( { setParameter: 1, queryAnalysisWriterIntervalSecs: 60 } )
queryAnalysisWriterMaxMemoryUsageBytes

7.0 版本中的新增功能

仅适用于 mongod

类型:整型

默认值:100 * 1024 * 1024

允许查询采样编写器使用的最大内存量(以字节为单位)。一旦达到该上限,所有新的查询和差异都将从采样中丢弃,直到刷新缓冲区。必须大于 0

此参数在运行时和启动时均可用:

此示例将在 mongod 实例上,在启动时将 queryAnalysisWriterMaxMemoryUsageBytes 设置为 10000000

mongod --setParameter queryAnalysisWriterMaxMemoryUsageBytes=10000000
queryAnalysisWriterMaxBatchSize

7.0 版本中的新增功能

仅适用于 mongod

类型:整型

默认值:100000

一次写入磁盘的最大采样查询次数。必须大于 0 且小于或等于 100000

此参数在运行时和启动时均可用:

此示例将在 mongod 实例上,在启动时将 queryAnalysisWriterMaxBatchSize 设置为 1000

mongod --setParameter queryAnalysisWriterMaxBatchSize=1000

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

db.adminCommand( { setParameter: 1, queryAnalysisWriterMaxBatchSize: 1000 } )
queryAnalysisSampleExpirationSecs

7.0 版本中的新增功能

仅适用于 mongod

类型:整型

默认值:7 * 24 * 3600

采样查询文档在被 TTL 监视器删除之前存在的时间(以秒为单位)。必须大于 0

此参数在运行时和启动时均可用:

此示例将在 mongod 实例上,在启动时将 queryAnalysisSampleExpirationSecs 设置为 691200 (8 * 24 * 3600):

mongod --setParameter queryAnalysisSampleExpirationSecs=691200

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

db.adminCommand( { setParameter: 1, queryAnalysisSampleExpirationSecs: 691200 } )
readHedgingMode

仅适用于 mongos

类型:字符串

默认值:on

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

可用值为:

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

此参数在运行时和启动时均可用:

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

mongos --setParameter readHedgingMode=off

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

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

7.0.1 版本新增

在版本 7.2 中进行了更改

适用于 mongodmongos

类型:整型

默认值:500

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

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

mongod --setParameter routingTableCacheChunkBucketSize=250
shutdownTimeoutMillisForSignaledShutdown

版本 5.0 中的新增功能

仅适用于 mongod

类型:整型

默认值:15000

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

此参数在运行时和启动时均可用:

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

mongod --setParameter shutdownTimeoutMillisForSignaledShutdown=250

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

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

版本 5.0 中的新增功能

仅适用于 mongos

类型:整型

默认值:15000

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

此参数在运行时和启动时均可用:

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

mongos --setParameter mongosShutdownTimeoutMillisForSignaledShutdown=250

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

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

适用于 mongodmongos

类型:整数

默认值:300000(5 分钟)

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

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

此参数在运行时和启动时均可用:

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

mongos --setParameter ShardingTaskExecutorPoolHostTimeoutMS=120000

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

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

适用于 mongodmongos

类型:整数

默认值:2

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

如已设置,则 ShardingTaskExecutorPoolMaxConnecting 应小于或等于 ShardingTaskExecutorPoolMaxSize。如果是大于的情况,则 mongos 会忽略 ShardingTaskExecutorPoolMaxConnecting 值。

此参数在运行时和启动时均可用:

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

mongos --setParameter ShardingTaskExecutorPoolMaxConnecting=20

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

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

适用于 mongodmongos

类型:整数

默认值:2 64 - 1

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

ShardingTaskExecutorPoolMaxSize * taskExecutorPoolSize

此参数在运行时和启动时均可用:

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

mongos --setParameter ShardingTaskExecutorPoolMaxSize=20

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

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

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

提示

另请参阅:

ShardingTaskExecutorPoolMaxSizeForConfigServers

6.0 版本中的新功能

适用于 mongodmongos

类型:整数

默认值:-1

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

当设置为:

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

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

参数仅适用于分片部署。

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

此参数在运行时和启动时均可用:

mongos --setParameter ShardingTaskExecutorPoolMaxSizeForConfigServers=2

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

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

适用于 mongodmongos

类型:整数

默认值:1

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

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

对于使用 warmMinConnectionsInShardingTaskExecutorPoolOnStartup 参数的 mongosShardingTaskExecutorPoolMinSize 参数还控制在 mongos 启动时建立到每个分片主机的连接数量,然后开始接受传入的客户端连接。

此参数在运行时和启动时均可用:

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

mongos --setParameter ShardingTaskExecutorPoolMinSize=2

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

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

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

ShardingTaskExecutorPoolMinSizeForConfigServers

6.0 版本中的新功能

适用于 mongodmongos

类型:整数

默认值:-1

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

当设置为:

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

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

参数仅适用于分片部署。

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

此参数在运行时和启动时均可用:

mongos --setParameter ShardingTaskExecutorPoolMinSizeForConfigServers=2

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

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

适用于 mongodmongos

类型:整数

默认值:60000(1 分钟)

mongos 在尝试对池中的空闲连接进行心跳检测前等待的最长时间。如果池大小超过其最小规模,则空闲连接可能会在刷新期间被弃用。

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

此参数在运行时和启动时均可用:

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

mongos --setParameter ShardingTaskExecutorPoolRefreshRequirementMS=90000

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

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

适用于 mongodmongos

类型:整数

默认值:20000(20 秒)

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

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

此参数在运行时和启动时均可用:

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

mongos --setParameter ShardingTaskExecutorPoolRefreshTimeoutMS=30000

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

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

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

仅适用于 mongos

类型:整数

默认值:1

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

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

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

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

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

taskExecutorPoolSize 的默认值为 1

此参数在运行时和启动时均可用:

mongos --setParameter taskExecutorPoolSize=6
loadRoutingTableOnStartup

仅适用于 mongos

类型:布尔值

默认值:true

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

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

已启用 loadRoutingTableOnStartup 参数的 mongos 实例可能需要更长的启动时间,但一旦启动,初始客户端连接的服务速度会更快。

loadRoutingTableOnStartup 默认为 使能。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

warmMinConnectionsInShardingTaskExecutorPoolOnStartup

仅适用于 mongos

类型:布尔值

默认值:true

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

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

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

warmMinConnectionsInShardingTaskExecutorPoolOnStartup 默认为 使能。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

warmMinConnectionsInShardingTaskExecutorPoolOnStartupWaitMS

仅适用于 mongos

类型:整数

默认:2000(2 秒)

设置在使用 warmMinConnectionsInShardingTaskExecutorPoolOnStartup 参数时,mongos 等待每个分片主机建立 ShardingTaskExecutorPoolMinSize 连接的超时阈值(以毫秒为单位)。如果达到此超时时间,无论连接池的大小如何,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

仅适用于 mongod

默认值:900(15 分钟)

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

在数据块迁移期间删除数据块之前,MongoDB 会等待 orphanCleanupDelaySecs 或与该数据块有关的正在进行的查询在分片节点上完成,以时间较长者为准。

但是,由于分片主节点对在分片从节点上正在运行的查询没有了解,如果这些查询花费的时间比完成分片主节点查询的时间和 orphanCleanupDelaySecs 长,则使用数据块但在从节点上运行的查询可能会导致文档消失。

注意

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

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

此参数在运行时和启动时均可用:

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

mongod --setParameter orphanCleanupDelaySecs=1200

也可以使用 setParameter 命令设置:

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

提示

在所有版本中,orphanCleanupDelaySecs 更改后的新值仅适用于更改后创建的范围删除操作。要将新值应用于现有的范围删除操作,请执行强制降级。

persistedChunkCacheUpdateMaxBatchSize

版本 7.2 中的新增功能:(以及 7.1.1、 7.0.4, 6.0.13, 5.0.25)

仅适用于 mongod

类型:整数

默认值:1000

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

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

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

此参数在运行时和启动时均可用:

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

mongod --setParameter persistedChunkCacheUpdateMaxBatchSize=700

您还可以在运行时设置 persistedChunkCacheUpdateMaxBatchSize

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

仅适用于 mongod

类型:非负整数

默认值:20

范围迁移的清理阶段,下一批删除之前等待的时间(以毫秒为单位)。

_secondaryThrottle 复制延迟发生在每次批处理删除之后。

此参数在运行时和启动时均可用:

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

mongod --setParameter rangeDeleterBatchDelayMS=200

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

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

提示

在 6.0.3 之前的版本中,rangeDeleterBatchDelayMS 更改后的新值仅适用于更改后创建的范围删除操作。要将新值应用于现有的范围删除操作,请执行强制降级。

从 6.0.3 开始,该参数的新值将应用于更新后处理的所有范围删除,无论范围删除创建于何时。

rangeDeleterBatchSize

仅适用于 mongod

类型:非负整数

从 MongoDB 5.1.2 和 5.0.6 开始,默认:2147483647

范围迁移的清理阶段,每次批处理中要删除的最大文档数。

0 表示系统选择默认值。

此参数在运行时和启动时均可用:

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

mongod --setParameter rangeDeleterBatchSize=32

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

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

提示

在 6.0.3 之前的版本中,rangeDeleterBatchSize 更改后的新值仅适用于更改后创建的范围删除操作。要将新值应用于现有的范围删除操作,请执行强制降级。

从 6.0.3 开始,该参数的新值将应用于更新后处理的所有范围删除,无论范围删除创建于何时。

rangeDeleterHighPriority

7.0 版本中的新增功能

仅适用于 mongod

类型:布尔值

默认值:false

true 时,清理孤立文档的优先级高于用户操作。默认设置为 false,即用户操作的优先级高于清理孤立文档。

此参数在运行时和启动时均可用:

以下示例将 rangeDeleterHighPriority 设置为 true

mongod --setParameter rangeDeleterHighPriority=true

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

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

仅适用于 mongod

类型:布尔值

默认值:false

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

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

mongod --setParameter skipShardingConfigurationChecks=true

重要

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

findChunksOnConfigTimeoutMS

版本 5.0 中的新增功能

适用于 mongodmongos

类型:非负整数

默认值:900000

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

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

mongod --setParameter findChunksOnConfigTimeoutMS=1000000

此参数在运行时和启动时均可用:

activeFaultDurationSecs

仅适用于 mongos

类型:文档

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

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

此参数在运行时和启动时均可用:

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

mongos --setParameter activeFaultDurationSecs=300

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

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

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

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

setParameter:
activeFaultDurationSecs: 300
healthMonitoringIntensities

仅适用于 mongos

类型:文档数组

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

此参数在运行时和启动时均可用:

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

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

  • intensity,强度等级

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

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

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

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

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,运行的时间间隔,以毫秒为单位

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

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

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

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

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}'

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

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

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

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

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

仅适用于 mongod

默认值false

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

如果 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 中的新增功能

仅适用于 mongod

默认值300

存储引擎保留快照历史记录的最小时间窗口(以秒为单位)。如果您使用读关注 "snapshot" 查询数据并指定的 atClusterTime 值早于指定的 minSnapshotHistoryWindowInSeconds,则 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 系统上不可用。

storageEngineConcurrentReadTransactions

7.0 版本中的更改

仅适用于 mongod

类型:整型

默认值:128

从 MongoDB 7.0 开始,该参数可用于所有存储引擎。在之前的版本中,该参数仅可用于 WiredTiger 存储引擎。

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

如果使用默认值,为优化性能,MongoDB 会动态调整票证数量,可能的最大值为 128。

从 MongoDB 7.0 开始,如果将 storageEngineConcurrentReadTransactions 设置为非默认值,则会禁用动态调整并发存储引擎事务数量的算法。

此参数在运行时和启动时均可用:

db.adminCommand( { setParameter: 1, storageEngineConcurrentReadTransactions: <int> } )

6.0 版本中的更改wiredTigerConcurrentReadTransactions 参数已被重命名为 storageEngineConcurrentReadTransactions

提示

另请参阅:

storageEngineConcurrentWriteTransactions

7.0 版本中的更改

仅适用于 mongod

类型:整型

从 MongoDB 7.0 开始,该参数可用于所有存储引擎。在之前的版本中,该参数仅可用于 WiredTiger 存储引擎。

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

默认情况下,MongoDB 将 storageEngineConcurrentWriteTransactions 设置为其中较大的值:

  • 运行 MongoDB 的机器的内核数

  • 4

如果使用默认值,为优化性能,MongoDB 会动态调整票证数量,可能的最大值为 128。

从 MongoDB 7.0 开始,如果将 storageEngineConcurrentWriteTransactions 设置为非默认值,则会禁用动态调整并发存储引擎事务数量的算法。

此参数在运行时和启动时均可用:

db.adminCommand( { setParameter: 1, storageEngineConcurrentWriteTransactions: <int> } )

6.0 版本中的更改wiredTigerConcurrentWriteTransactions 参数已被重命名为 storageEngineConcurrentWriteTransactions

提示

另请参阅:

syncdelay

仅适用于 mongod

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

此参数在运行时和启动时均可用:

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

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

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

temporarilyUnavailableBackoffBaseMs

仅适用于 mongod

指定重试由于缓存压力而回滚的写入操作之前的初始延迟。

在极少数情况下,写入可能会由于缓存压力而失败。发生这种情况时,MongoDB 会抛出 TemporarilyUnavailable 错误并在两个位置增加 temporarilyUnavailableErrors 计数器:慢查询日志和全时诊断数据捕获 (FTDC)。

多文档事务中的单个操作绝不会返回 TemporarilyUnavailable 错误。

通过修改 temporarilyUnavailableBackoffBaseMstemporarilyUnavailableMaxRetries 参数来调整写入重试属性。

该参数接受:

说明
integer >= 0

默认为 15 秒。重试之间的初始延迟。每次重试后,该值都会增加,最长为 55 秒。值越大,在下次重试之前缓存压力降低的可能性越大。

如要配置重试次数,请使用 temporarilyUnavailableMaxRetries

此参数在运行时和启动时均可用:

要设置新值,则使用 db.adminCommand()

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

6.1.0 版本新增

temporarilyUnavailableMaxRetries

仅适用于 mongod

指定由于缓存压力而回滚写入操作时的最大重试次数。

在极少数情况下,写入可能会由于缓存压力而失败。发生这种情况时,MongoDB 会抛出 TemporarilyUnavailable 错误并在两个位置增加 temporarilyUnavailableErrors 计数器:慢查询日志和全时诊断数据捕获 (FTDC)。

多文档事务中的单个操作绝不会返回 TemporarilyUnavailable 错误。

通过修改 temporarilyUnavailableBackoffBaseMstemporarilyUnavailableMaxRetries 参数来调整写入重试属性。

该参数接受:

说明
integer >= 0

默认为 10。最大重试次数。

重试之间的延迟时间越来越长。要配置回退时间,则使用 temporarilyUnavailableBackoffBaseMs

此参数在运行时和启动时均可用:

要设置新值,则使用 db.adminCommand()

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

6.1.0 版本新增

wiredTigerConcurrentReadTransactions

7.0 版本中的更改

仅适用于 mongod

类型:整型

默认值:128

从 MongoDB 7.0 开始,该参数可用于所有存储引擎。在之前的版本中,该参数仅可用于 WiredTiger 存储引擎。

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

如果使用默认值,为优化性能,MongoDB 会动态调整票证数量,可能的最大值为 128。

从 MongoDB 7.0 开始,如果将 wiredTigerConcurrentReadTransactions 设置为非默认值,则会禁用动态调整并发存储引擎事务数量的算法。

此参数在运行时和启动时均可用:

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

提示

另请参阅:

wiredTigerConcurrentWriteTransactions

7.0 版本中的更改

仅适用于 mongod

类型:整型

从 MongoDB 7.0 开始,该参数可用于所有存储引擎。在之前的版本中,该参数仅可用于 WiredTiger 存储引擎。

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

默认情况下,MongoDB 将 wiredTigerConcurrentWriteTransactions 设置为其中较大的值:

  • 运行 MongoDB 的机器的内核数

  • 4

如果使用默认值,为优化性能,MongoDB 会动态调整票证数量,可能的最大值为 128。

从 MongoDB 7.0 开始,如果将 wiredTigerConcurrentWriteTransactions 设置为非默认值,则会禁用动态调整并发存储引擎事务数量的算法。

此参数在运行时和启动时均可用:

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

提示

另请参阅:

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

适用于 mongodmongos

类型:布尔值

默认:false

注意

仅在 MongoDB EnterpriseMongoDB Atlas 中有用。

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

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

此参数在运行时和启动时均可用:

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

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

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

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

提示

另请参阅:

auditConfigPollingFrequencySecs

版本 5.0 中的新增功能

类型:整型

默认值:300

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

注意

使用默认值 300 秒,设置auditConfig集群参数后,非配置节点可能最多延迟 5 分钟。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

auditEncryptionHeaderMetadataFile

6.0 版本中的新功能

适用于 mongodmongos

类型:字符串

注意

仅在 MongoDB Enterprise 中可用。MongoDB Enterprise 和 Atlas 有不同的配置要求。

记录用于审核日志加密的元数据审核标头的路径和文件名。标头位于每个审核日志文件的顶部,包含用于解密审核日志的元数据。标题也会保存在审计日志中。

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

例如,以下操作能设置 auditEncryptionHeaderMetadataFile 的路径和文件:

mongod --setParameter auditEncryptionHeaderMetadataFile=/auditFiles/auditHeadersMetadataFile.log
auditEncryptKeyWithKMIPGet

6.0 版本中的新功能

适用于 mongodmongos

类型:布尔值

默认:false

注意

仅在 MongoDB Enterprise 中可用。MongoDB Enterprise 和 Atlas 有不同的配置要求。

为仅支持 KMIP 协议版本 1.0 或 1.1 的Key Management Interoperability Protocol (KMIP) 服务器启用审核日志加密

此参数仅在启动时可用。要设置该参数,请使用 setParameter 设置。

以下示例将 auditEncryptKeyWithKMIPGet 设置为 true

mongod --setParameter auditEncryptKeyWithKMIPGet=true
coordinateCommitReturnImmediatelyAfterPersistingDecision

版本 5.0 中的新增功能

在版本 6.1 中进行了更新

仅适用于 mongod

类型:布尔值

默认:false

  • 当设置为 false 时,分片事务协调器会等待所有参与分片确认提交或取消多文档事务的决定,然后才会将结果返回给客户端。

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

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

    事务可能没有“读你所写”的一致性。也就是说,读取操作可能不会显示其之前的写入操作的结果。在以下情况下,可能会出现该问题:

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

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

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

此参数在运行时和启动时均可用:

以下示例将 coordinateCommitReturnImmediatelyAfterPersistingDecision 设置为 true

mongod --setParameter coordinateCommitReturnImmediatelyAfterPersistingDecision=true

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

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

6.0 版本中的新功能

适用于 mongodmongos

默认值:1000

内部会话元数据删除的会话限制。元数据:

当内部会话数大于 internalSessionsReapThreshold 时,元数据将被删除。

如果您将 internalSessionsReapThreshold 设置为 0,则仅在用户会话结束时才会删除内部会话元数据。

此参数在运行时和启动时均可用:

以下示例将 internalSessionsReapThreshold 设置为 500 会话:

db.adminCommand( { setParameter: 1, internalSessionsReapThreshold: 500 } )

您也可以在启动时设置 internalSessionsReapThreshold。例如:

mongod --setParameter internalSessionsReapThreshold=500
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

6.2 版本新增

仅适用于 mongod

类型:十进制

默认值:0.75

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

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

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

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

此参数在运行时和启动时均可用:

有关 WiredTiger 存储的更多信息,请参阅:storage.wiredTiger 选项。

maxTransactionLockRequestTimeoutMillis

仅适用于 mongod

类型:整型

默认值:5

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

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

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

可以将 maxTransactionLockRequestTimeoutMillis 设置为:

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

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

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

此参数在运行时和启动时均可用:

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

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

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

mongod --setParameter maxTransactionLockRequestTimeoutMillis=20
planCacheSize

6.3 版本中的新功能

仅适用于 mongod

类型:字符串

默认:5%

注意

尽管之前的 MongoDB 版本中也有 planCacheSize 参数,但在 6.3 之前的版本中,该参数对计划缓存没有影响。

仅为基于槽的查询执行引擎设置计划缓存的大小。

您可以将 planCacheSize 值设置为以下任一值:

  • 分配给计划缓存的系统总物理内存百分比。例如:"8.5%"

  • 分配给计划缓存的确切数据量(以 MBGB 为单位)。例如 "100MB""1GB"

增加计划缓存大小可为 查询规划 器添加更多缓存的 计划缓存查询形状 。这可以提高查询性能,但会增加内存使用量。

此参数在运行时和启动时均可用:

以下启动命令将 planCacheSize 设置为 80 MB:

mongod --setParameter planCacheSize="80MB"

您也可以在 MongoDB Shell 中使用 setParameter 命令:

db.adminCommand( { setParameter: 1, planCacheSize: "80MB" } )

后退

defaultMaxTimeMS