自管理部署的MongoDB Server参数
注意
从MongoDB 8.0开始, LDAP身份验证和授权已弃用。 LDAP可用并将在MongoDB 8的整个生命周期内继续运行而不进行更改。 LDAP将在未来的主要发布中删除。
有关详细信息,请参阅 LDAP 弃用。
Synopsis
MongoDB 提供许多可以使用以下命令进行设置的配置选项:
setParameter
命令:db.adminCommand( { setParameter: 1, <parameter>: <value> } ) setParameter
配置设置:setParameter: <parameter1>: <value1> ... mongod
和mongos
的--setParameter
命令行选项:mongod --setParameter <parameter>=<value> mongos --setParameter <parameter>=<value>
参数
身份验证参数
authenticationMechanisms
指定服务器接受的身份验证机制列表。将其设置为以下一个或多个以下值。如果指定多个值,则使用逗号分隔的列表,并且不要使用空格。有关身份验证机制的说明,请参阅自管理部署上的身份验证。
值说明使用 SHA-1 哈希函数的 RFC 5802 标准 Salted 质询响应身份验证机制。RFC 7677 使用 SHA-256 哈希函数的标准 Salted Challenge Response Authentication MechanismMongoDB TLS/SSL 证书身份验证。GSSAPI (Kerberos)使用 Kerberos 的外部身份验证。此机制仅在 MongoDB Enterprise 中可用。PLAIN (LDAP SASL)OpenID Connect 是构建在 OAuth22 之上的身份验证层。此机制仅在 MongoDB Enterprise 中可用。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。例如,要将
PLAIN
和SCRAM-SHA-256
指定为身份验证机制,使用以下命令:mongod --setParameter authenticationMechanisms=PLAIN,SCRAM-SHA-256 --auth
awsSTSRetryCount
在版本 7.0 中进行了更改:(也从 6.0.7 和 5.0.18 开始)。
在上一个版本中,仅当服务器返回 HTTP 500 错误时,AWS IAM 身份验证才会重试。
类型:整型
默认值:2
适用于使用 AWS IAM 证书 或 AWS IAM 环境变量的 MongoDB 部署。
连接失败后 AWS IAM 身份验证重试的最大次数。
以下示例将
awsSTSRetryCount
设置为15
次重试:mongod --setParameter awsSTSRetryCount=15 另外,下面的示例使用了
mongosh
中的setParameter
命令:db.adminCommand( { setParameter: 1, awsSTSRetryCount: 15 } )
clusterAuthMode
将
clusterAuthMode
设置为sendX509
或x509
。滚动升级期间使用 x509 进行成员身份验,以最大限度地减少停机时间。有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。此参数仅在运行时可用。要设置参数,请使用
setParameter
命令。db.adminCommand( { setParameter: 1, clusterAuthMode: "sendX509" } )
enableLocalhostAuthBypass
默认值:
true
指定
0
或false
,禁用绕过本地主机身份验证。默认启用。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。有关更多信息,请参阅 自管理部署中的本地主机异常。
enforceUserClusterSeparation
设置为
false
可在配置文件中的clusterAuthMode
为keyFile
时禁用O/OU/DC
检查。 这允许拥有成员证书的客户端以$external
数据库中存储的用户身份进行身份验证。 如果配置文件中的clusterAuthMode
不是keyFile
,则服务器不会启动。要将
enforceUserClusterSeparation
参数设置为false
,请在启动期间运行以下命令:mongod --setParameter enforceUserClusterSeparation=false 如果将
enforceUserClusterSeparation
参数设置为false
,则服务器不区分应用程序用于进行身份验证的客户端证书和具有特权访问权限的集群内证书。 如果您的clusterAuthMode
为keyFile
,则此操作无效。 但是,如果clusterAuthMode
为x509
,则使用允许模式的用户证书将与集群证书合并并授予特权访问权限。如果执行以下操作,您的现有证书将被授予内部特权:
使用此参数允许的名称创建一个用户。
将
enforceUserClusterSeparation
参数设置为false
。将
clusterAuthMode
设置为x509
。
在未验证是否已删除具有
enforceUserClusterSeparation
标志允许您创建的提升权限的用户之前,不得从keyFile
升级到x509
。
KeysRotationIntervalSec
默认:7776000 秒(90 天)
指定 HMAC 签名密钥在轮换到下一个之前保持有效的秒数。该参数主要便于身份验证测试。
此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。
ldapForceMultiThreadMode
仅适用于
mongod
。默认:false
启用并发 LDAP 操作的性能。
注意
仅当您确定
libldap
实例在此模式下可以安全使用时,才可启用此标志。如果您使用的libldap
版本非安全线程,您可能会遇到 MongoDB 进程崩溃。必须使用
ldapForceMultiThreadMode
才能使用 LDAP 连接池。要启用 LDAP 连接池,请将ldapForceMultiThreadMode
和ldapUseConnectionPool
设置为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
:如果为 true,则使用
ldapUserCacheRefreshInterval
。如果为 false,则使用
ldapUserCacheInvalidationInterval
。
用于在自管理部署上使用 LDAP 授权的 MongoDB 部署。
mongod
实例在外部用户缓存刷新之间的等待间隔(以秒为单位)。MongoDB 刷新外部用户缓存后,下次 LDAP 授权用户发出操作时,MongoDB 会从 LDAP 服务器重新获取授权数据。增加指定的值会增加 MongoDB 和 LDAP 服务器不同步的时间,但会减少 LDAP 服务器的负载。相反,减少指定的值会减少 MongoDB 和 LDAP 服务器不同步的时间,但会增加 LDAP 服务器的负载。
默认为 30 秒。
ldapUserCacheRefreshInterval
5.2 版本中的新增功能。
仅适用于
mongod
。类型:整型
默认:30 秒
注意
从 MongoDB 5.2 开始,从 LDAP 服务器检索的缓存用户信息的更新间隔取决于
ldapShouldRefreshUserCacheEntries
:如果为 true,则使用
ldapUserCacheRefreshInterval
。如果为 false,则使用
ldapUserCacheInvalidationInterval
。
对于在自托管部署上使用 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
:如果为 true,则使用
ldapUserCacheRefreshInterval
。如果为 false,则使用
ldapUserCacheInvalidationInterval
。
您只能在启动期间在
configuration file
中或使用命令行上的--setParameter
选项设置ldapShouldRefreshUserCacheEntries
。例如,以下命令禁用ldapShouldRefreshUserCacheEntries
:mongod --setParameter ldapShouldRefreshUserCacheEntries=false
maxValidateMemoryUsageMB
仅适用于
mongod
。版本 5.0 中的新增功能。
默认值:200
validate
命令的最大内存使用限制(以兆字节为单位)。如果超出限制,validate
会返回尽可能多的结果,并警告由于内存限制,可能无法报告所有损坏。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
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 中也可用。oidcIdentityProviders 字段
字段必要性类型说明issuer
必需字符串服务器应接受其令牌的 IDP 颁发者 URI。必须与用于身份验证的任何 JWT 中的
iss
字段匹配。从 MongoDB 8.0 开始,当定义了多个身份提供程序 (IDP) 时,
oidcIdentityProviders
参数会接受重复的issuer
值,只要audience
值对于每个发布者都是唯一的即可。此功能在版本 7.3 和 7.0 中也可用。如果指定无法访问的颁发者 URI,MongoDB:
记录警告。
继续服务器启动,允许您更新发布者 URI。
重新尝试联系签发者。如果 MongoDB 到达签发者 URI 并验证访问令牌,则身份验证成功。如果仍无法访问签发者 URI,则身份验证失败。
已在版本 8.0 中更改:(也适用于 7.3 和 7.0)
authNamePrefix
必需字符串唯一前缀,适用于授权中使用的每个生成的
UserName
和RoleName
。authNamePrefix
只能包含以下字符:字母数字字符(
a
至z
和0
至9
的组合)连字符 (
-
)下划线 (
_
)
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
Optionalarray[ 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
Optionalarray[ string ]完成身份验证后将包含在日志和审核消息中的访问令牌声明列表。JWKSPollSecs
Optional整型向 IDP 请求更新的 JSON Web 密钥集 (JWKS) 的频率(以秒为单位)。设置为 0 将禁用轮询。
定义多个 IDP 时,共享
issuer
的每个配置的值必须相同。supportsHumanFlows
OptionalboolOIDC 提供商是否支持人工或机器工作流程。这会影响
clientId
和matchPattern
字段。您可能会发现,通过机器工作负载 IdP 将此字段设置为
false
非常有用,这样就可以在不需要时省略clientId
。默认值:
true
版本 7.2 中的新增内容。
此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。
ocspEnabled
适用于 Linux 和 macOS。
默认值:true
启用或禁用 OCSP 的标志。
此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。例如,以下命令禁用 OCSP:
mongod --setParameter ocspEnabled=false ... 从 MongoDB 6.0 开始,如果在初始同步期间将
ocspEnabled
设置为true
,那么所有节点必须能够访问 OCSP 响应程序。如果节点在
STARTUP2
状态下发生故障,则将tlsOCSPVerifyTimeoutSecs
设置为小于5
的值。
ocspValidationRefreshPeriodSecs
适用于 Linux。
刷新装订的 OCSP 状态响应之前等待的秒数。指定一个大于或等于 1 的数字。
您只能在启动期间在
configuration file
中设置ocspValidationRefreshPeriodSecs
,或使用命令行上的--setParameter
选项设置。例如,以下代码将该参数设置为 3600 秒:mongod --setParameter ocspValidationRefreshPeriodSecs=3600 ... 从 MongoDB 5.0 开始,
rotateCertificates
命令和db.rotateCertificates()
方法也会刷新任何已装订 OCSP 响应。
opensslCipherConfig
仅适用于 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
版本 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
仅适用于 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
注意
仅适用于 MongoDB Enterprise(适用于 Windows 的 MongoDB Enterprise 除外)。
指定用于代理身份验证的
saslauthd
实例的 Unix 域套接字的路径。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。
saslHostName
saslHostName
覆盖 MongoDB 的默认主机名检测,以配置 SASL 和 Kerberos 身份验证。saslHostName
不会出于任何目的影响mongod
或mongos
实例的主机名,但配置 SASL 和 Kerberos 除外。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。注意
saslHostName
支持 Kerberos 身份验证,并且仅包含在 MongoDB Enterprise 中。有关详细信息,请参阅以下:
saslServiceName
允许用户在每个实例的基础上覆盖 Kerberos 主名称的默认 Kerberos 服务名称组件。如果未指定,则默认值为
mongodb
。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。saslServiceName
仅在 MongoDB Enterprise 中可用。重要
确保您的驱动程序支持备用服务名称。
scramIterationCount
默认值:
10000
更改用于所有新的
SCRAM-SHA-1
密码的哈希迭代次数。更多的迭代次数会增加客户端向 MongoDB 进行身份验证所需的时间,但会使密码不易受到暴力攻击。默认值适用于最常见的使用案例和要求。如果修改此值,它不会更改现有密码的迭代计数。
scramIterationCount
值必须为5000
或更大。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
例如,以下代码将
scramIterationCount
设置为12000
。mongod --setParameter scramIterationCount=12000 或者,如果使用
mongosh
中的setParameter
命令:db.adminCommand( { setParameter: 1, scramIterationCount: 12000 } )
scramSHA256IterationCount
默认值:
15000
更改用于所有新的
SCRAM-SHA-256
密码的哈希迭代次数。更多的迭代次数会增加客户端向 MongoDB 进行身份验证所需的时间,但会使密码不易受到暴力攻击。默认值适用于最常见的使用案例和要求。如果修改此值,它不会更改现有密码的迭代计数。
scramSHA256IterationCount
值必须为5000
或更大。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
例如,以下代码将
scramSHA256IterationCount
设置为20000
。mongod --setParameter scramSHA256IterationCount=20000 或者,如果使用
mongosh
中的setParameter
命令:db.adminCommand( { setParameter: 1, scramSHA256IterationCount: 20000 } )
sslMode
将
net.ssl.mode
设置为preferSSL
或requireSSL
。在滚动升级到 TLS/SSL 期间很有用,可最大限度地减少停机时间。有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。此参数仅在运行时可用。要设置参数,请使用
setParameter
命令。db.adminCommand( { setParameter: 1, sslMode: "preferSSL" } )
tlsMode
设置为:
preferTLS
requireTLS
tlsMode
参数在滚动升级到 TLS/SSL 期间非常有用,可最大限度地减少停机时间。此参数仅在运行时可用。要设置参数,请使用
setParameter
命令。db.adminCommand( { setParameter: 1, tlsMode: "preferTLS" } ) 有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。
tlsClusterAuthX509Override
7.0 版本中的新增功能。
覆盖
clusterAuthX509
配置选项。setParameter: tlsClusterAuthX509Override: { attributes: O=MongoDB, OU=MongoDB Server } 该参数支持
attributes
和extensionValue
覆盖项。当服务器验证来自成员的连接时,它会分析 X.509 证书以确定其是否属于集群成员。如果服务器使用
attributes
设置或tlsClusterAuthX509Override
参数上的attributes
字段,它会检查证书的标识名 (DN) 值。如果设置了extensionValue
设置或tlsClusterAuthX509Override
参数的extensionValue
字段,它会检查证书的扩展值。如果它找到了匹配项,便会授权该连接为对等互连。当新证书具有不同的属性或扩展名值时,使用此参数可以轮换证书。
此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。
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 证书。
重要
在启动启用了 TLS/SSL 的
mongod
实例时,您必须指定--tlsCAFile
标记、net.tls.CAFile
配置选项或tlsUseSystemCA
参数的值。--tlsCAFile
、tls.CAFile
和tlsUseSystemCA
是互斥的。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。例如,要将
tlsUseSystemCA
设置为true
:mongod --setParameter tlsUseSystemCA=true 有关 TLS/SSL 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置
mongod
和mongos
以及客户端的 TLS/SSL 配置。
tlsWithholdClientCertificate
默认:false
可通过
--tlsClusterFile
选项或在--tlsClusterFile
未设置时通过--tlsCertificateKeyFile
选项为mongod
或mongos
设置 TLS 证书。如果已设置 TLS 证书,默认情况下,实例会在与部署中其他mongod
或mongos
实例启动集群内通信时发送证书。将tlsWithholdClientCertificate
设置为1
或true
以指示实例在这些通信期间拒绝发送其 TLS 证书。在部署的所有成员上将此选项与--tlsAllowConnectionsWithoutCertificates
一起使用(以允许没有证书的入站连接)。tlsWithholdClientCertificate
与--clusterAuthMode x509
互斥。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。
tlsX509ClusterAuthDNOverride
实例还可以使用的用于识别部署成员的可分辨名称 (DN)。
对于使用 x.509 证书进行
clusterAuthMode
的 MongoDB 部署,部署成员在集群内通信期间使用 x.509 证书(net.tls.clusterFile
(如指定)和net.tls.certificateKeyFile
)相互识别。对于相同部署的成员,其证书中的DN
必须具有相同的组织属性 (O
)、组织单位属性 (OU
) 和域组件 (DC
)。如果为某个成员设置了
tlsX509ClusterAuthDNOverride
,则该成员还可以在比较所提供证书的DN
组件(O
、OU
和DC
)时可使用覆盖值。也就是说,成员对照其net.tls.clusterFile
/net.tls.certificateKeyFile
检查所提供的证书。如果 DN 不匹配,成员会对照tlsX509ClusterAuthDNOverride
值检查所提供的证书。注意
如设置,则必须在部署的所有成员上设置此参数。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
您可以使用此参数将证书滚动更新为包含新
DN
值的新证书。请参阅滚动更新自管理集群上包含新 DN 的 x.509 证书。有关会员证书要求的更多信息,请参阅会员证书要求了解详情。
tlsX509ExpirationWarningThresholdDays
默认值: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 小时)。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
authFailedDelayMs
默认值:0
注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
通知客户端其身份验证尝试失败之前等待的毫秒数。该参数范围介于
0
到5000
之间(含)。设置此参数会使对数据库暴力登录攻击更加耗时。但是,等待 MongoDB Server 响应的客户端仍然会消耗服务器资源,并且如果服务器同时拒绝对多个其他客户端的访问,这可能会对良性登录尝试产生不利影响。
allowRolesFromX509Certificates
默认值:true
一个布尔标志,允许或禁止从客户端 x.509 证书检索授权角色。
此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。
一般参数
allowDiskUseByDefault
仅适用于
mongod
。默认:真
从 MongoDB 6.0 开始,需要 100 兆字节以上内存容量的管道阶段默认将临时文件写入磁盘。这些临时文件在管道执行期间持续存在,并且可能影响实例上的存储空间。在 MongoDB 的早期版本中,您必须将
{ allowDiskUse: true }
传递给单个find
和aggregate
命令才能启用此行为。单个
find
和aggregate
命令可以通过以下任一方式覆盖allowDiskUseByDefault
参数:使用
{ allowDiskUse: true }
以允许在allowDiskUseByDefault
设置为false
时将临时文件写入磁盘使用
{ allowDiskUse: false }
以禁止在allowDiskUseByDefault
设置为true
时将临时文件写入磁盘
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
mongod --setParameter allowDiskUseByDefault=false allowDiskUseByDefault
仅适用于mongod
,不适用于mongos
。mongos
从不将临时文件写入磁盘。在连接至正在运行的mongod
的mongosh
会话中使用setParameter
命令,以在服务器正在运行时更改参数的值:db.adminCommand( { setParameter: 1, allowDiskUseByDefault: false } )
httpVerboseLogging
在 Linux 和 macOS 上为 curl 添加了更详细的跟踪。对 Windows 没有影响。
默认情况下,该参数未设置。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
mongos --setParameter httpVerboseLogging=true
slowConnectionThresholdMillis
6.3 版本中的新功能。
默认值:100
设置时间限制(以毫秒为单位),以记录服务器慢速连接的建立。
如果建立连接的时间比
slowConnectionThresholdMillis
参数长,则会在日志中添加一个事件,并将消息msg
字段设置为"Slow connection establishment"
。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例将
slowConnectionThresholdMillis
设置为250
毫秒。mongod --setParameter slowConnectionThresholdMillis=250 或者,如果使用
mongosh
中的setParameter
命令:db.adminCommand( { setParameter: 1, slowConnectionThresholdMillis: 250 } )
connPoolMaxConnsPerHost
默认值:200
为传出连接至全局连接池的其他
mongod
实例设置旧版连接池的最大大小。池的大小不会阻止创建额外的连接,但会阻止连接池保留超过connPoolMaxConnsPerHost
值的连接。注意
该参数与 TaskExecutor 池中的连接分开。请参阅
ShardingTaskExecutorPoolMaxSize
。仅当您的驱动程序不使用连接池且您在分片集群的环境下使用身份验证时,才调整此设置。
此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。mongod --setParameter connPoolMaxConnsPerHost=250
connPoolMaxInUseConnsPerHost
为传出连接至传统全局连接中的其他
mongod
实例设置给定时间内正在使用的最大连接数。默认情况下,该参数未设置。
此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。mongod --setParameter connPoolMaxInUseConnsPerHost=100
globalConnPoolIdleTimeoutMinutes
设置传统全局连接池中的连接在关闭之前可以保持空闲状态的时间限制。
默认情况下,该参数未设置。
此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。mongos --setParameter globalConnPoolIdleTimeoutMinutes=10
cursorTimeoutMillis
默认值:600000(10 分钟)
设置在 MongoDB 删除空闲游标之前的过期阈值(以毫秒为单位);具体来说,MongoDB 会删除在以下指定的
cursorTimeoutMillis
时间内处于空闲状态的游标。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
例如,以下代码将
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. 此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下命令设置同时进行索引构建的个数上限为 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
实例,因为阻止集合扫描可能会影响所有数据库中的查询,包括管理查询。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
注意
notablescan
不允许使用集群索引的无界查询,因为这些查询需要完整的集合扫描。有关更多信息,请参阅集合扫描。
ttlMonitorEnabled
仅适用于
mongod
。默认值:
true
为了支持 TTL 索引,为
mongod
实例配备一个后台线程,负责从带有 TTL 索引的集合中删除文档。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
要为
mongod
禁用此工作线程,请将ttlMonitorEnabled
设置为false
,如以下操作所示:db.adminCommand( { setParameter: 1, ttlMonitorEnabled: false } ) 或者,你可以在启动时通过使用以下选项启动
mongod
实例来禁用线程:mongod --setParameter ttlMonitorEnabled=false 重要
切勿在禁用
ttlMonitorEnabled
的情况下运行生产mongod
实例,除非有 MongoDB 支持部门的指导。阻止 TTL 文档删除可能会对 MongoDB 内部系统操作产生负责影响,这些操作依赖于 TTL 索引。
tcpFastOpenServer
默认值:
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
默认值:
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
默认值:
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 对网络性能的影响。
最小队列大小为
0
。0
的队列有效禁用 TFO。
此参数对不支持 TFO 连接或未配置 TFO 连接的主机操作系统没有影响。
此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。
disableJavaScriptJIT
仅适用于
mongod
。MongoDB JavaScript 引擎使用 SpiderMonkey,实施即时 (JIT) 编译以提高运行脚本时的性能。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
要启用 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
可以设置得较低。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例将
indexBuildMinAvailableDiskSpaceMB
设置为650 MB:db.adminCommand( { setParameter: 1, indexBuildMinAvailableDiskSpaceMB: 650 } ) 您也可以在初创企业设置
indexBuildMinAvailableDiskSpaceMB
。例如:mongod --setParameter indexBuildMinAvailableDiskSpaceMB=650
indexMaxNumGeneratedKeysPerDocument
5.3 版本中的新增功能。
默认值:100000
限制为文档生成的最大键数,以防止出现内存不足错误。可以提高限制,但是如果某个操作需要的键数超过
indexMaxNumGeneratedKeysPerDocument
参数指定的键数,则操作将失败。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。
maxIndexBuildMemoryUsageMegabytes
仅适用于
mongod
。默认值:200
限制在索引构建期间,一个集合上并行构建索引可能消耗的内存量。指定的内存量将在使用单个
createIndexes
命令或其 shell 助手db.collection.createIndexes()
构建的所有索引之间共享。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
索引构建消耗的内存与 WiredTiger 缓存内存是分开的(请参阅
cacheSizeGB
)。maxIndexBuildMemoryUsageMegabytes
对索引构建一次使用的内存量设置限制。这可能会在索引构建过程中生成和排序索引键时影响性能。增加内存限制可提高索引构建期间的排序性能。索引构建可由用户命令(例如
createIndexes
)启动,也可以通过管理过程(例如初始同步)启动。二者均受到maxIndexBuildMemoryUsageMegabytes
设置的限制约束。初始同步一次只填充一个集合,没有超出内存限制的风险。但是,用户可以同时在多个数据库中的多个集合上启动索引构建,并且消耗的内存量可能会大于
maxIndexBuildMemoryUsageMegabytes
设置的限制。提示
为了最大限度减少在副本集和带有副本集分片的分片集群上构建索引的影响,使用滚动索引构建过程,如副本集上构建滚动索引中所述。
如果已经启动了集合扫描,则更改
maxIndexBuildMemoryUsageMegabytes
不会影响正在进行的索引构建。但是,强制副本集重新配置会重新启动集合扫描并使用所提供的最新maxIndexBuildMemoryUsageMegabytes
。对于特征兼容性版本 (fcv)
"4.2"
和更高版本,索引构建内存限制适用于所有索引构建。
reportOpWriteConcernCountersInServerStatus
仅适用于
mongod
。默认:false
一个布尔类型标志,用于确定
db.serverStatus()
方法和serverStatus
命令是否返回opWriteConcernCounters
信息。[1]mongod --setParameter reportOpWriteConcernCountersInServerStatus=true [1] 启用 reportOpWriteConcernCountersInServerStatus
会对性能产生负面影响,特别是在不使用 TLS 的情况下。
watchdogPeriodSeconds
仅适用于
mongod
。类型:整型
默认值:-1(已禁用)
确定存储节点看门狗检查受监控文件系统状态的频率:
--dbpath
目录--dbpath
目录中的journal
目录--logpath
文件的目录--auditPath
文件的目录
watchdogPeriodSeconds
的有效值为:-1
(默认),以禁用/暂停存储节点看门狗,或大于或等于 60 的整数。
注意
如果受监控目录上的文件系统没有响应,最多可能需要近两倍于
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
8.0版本新增。
类型:布尔值
默认值:true
如果设置为
true
,则tcmallocEnableBackgroundThread
会创建一个后台线程,该线程会定期将内存释放回操作系统。tcmallocReleaseRate
的值决定了后台线程释放内存的速度(以每秒字节数为单位)。注意
如果
tcmallocEnableBackgroundThread
为true
且tcmallocReleaseRate
为0
,则 MongoDB 仍会释放内存。为了提高内存使用率,我们建议使用默认值
true
。要了解有关改进性能和内存管理的更多信息,请参阅升级后的 TCMalloc。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。以下操作将
tcmallocEnableBackgroundThread
设置为false
:mongod --setParameter "tcmallocEnableBackgroundThread=false"
tcmallocReleaseRate
在版本8.0中进行了更改。
默认值:0
以字节/秒为单位指定 TCMalloc 释放率。释放率是指 MongoDB 向系统释放未使用的内存的速率。如果将
tcmallocReleaseRate
设置为0
,MongoDB 不会将内存释放回系统。增加此值可以更快地返回内存;减少此值则会较慢地恢复内存。注意
如果
tcmallocEnableBackgroundThread
为true
且tcmallocReleaseRate
为0
,则 MongoDB 仍会释放内存。从 MongoDB 8.0开始,由于tcmalloc 升级优先考虑 CPU 性能而不是内存释放,默认值
tcmallocReleaseRate
减少为0
。MongoDB 的早期版本使用旧版本的tcmalloc
将默认tcmallocReleaseRate
设置为1
以平衡内存释放和性能。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
要在运行期间修改释放率,可以使用
setParameter
命令,例如:db.adminCommand( { setParameter: 1, tcmallocReleaseRate: 5.0 } ) 您也可以在启动时设置
tcmallocReleaseRate
,例如:mongod --setParameter "tcmallocReleaseRate=5.0"
fassertOnLockTimeoutForStepUpDown
5.3 版本中的新增功能。
默认值:15 秒
允许接收请求的服务器升级或降级,以在超时期间无法响应时(例如由于服务器磁盘故障)终止操作。这使集群能够成功选举出新的主节点和,从而继续保持可用性。
fassertOnLockTimeoutForStepUpDown
默认为 15 秒。要禁用节点快速插入,请设置fassertOnLockTimeoutForStepUpDown=0
。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例禁用节点快速插入:
mongod --setParameter fassertOnLockTimeoutForStepUpDown=0
ingressAdmissionControllerTicketPoolSize
仅适用于
mongod
。默认值:
1000000
控制入口队列同时允许的最大操作数。
1000000
的默认值表示无界的数值等效值,它允许所有传入操作,直到 MongoDB 允许的默认最大连接数。在队列中有操作等待的情况下,增加该值可在新池大小允许的范围内解锁尽可能多的操作。减小该值不会阻止任何当前正在执行的操作,但传入的可控操作会被阻止,直到有工单可用。
mongod --setParameter ingressAdmissionControllerTicketPoolSize=100000 警告
除非得到 MongoDB 工程师的指示,否则请避免修改
ingressAdmissionControllerTicketPoolSize
。此设置对 WiredTiger 和 MongoDB 都有重大影响。
记录参数
logLevel
指定一个介于
0
和5
之间的整数,表示日志记录的详细程度,其中5
为最详细。[2]默认
logLevel
为0
(信息性)。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例将
logLevel
设置为2
:db.adminCommand( { setParameter: 1, logLevel: 2 } ) [2] 从版本 4.2 开始,MongoDB 在日志消息中包含调试详细级别(1 至 5 级)。例如,如果详细级别为 2,则 MongoDB 记录 D2
。在以前版本中,MongoDB 日志消息仅为调试级别指定D
。
logComponentVerbosity
设置 日志消息 的各种 组件 的详细级别。详细程度级别决定 MongoDB 输出的信息和调试消息的数量。[3]
详细程度级别的范围可以从
0
到5
:对于组件,您还可以指定
-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
。这些组件对应于以下设置:
除非明确设置,否则组件拥有其父级的详细程度。例如,
storage
是storage.journal
的父级。也就是说,如果您指定了storage
详细程度级别,则此级别也适用于:storage.journal
组件,除非您指定了storage.journal
的详细程度级别。storage.recovery
组件,除非您指定了storage.recovery
的详细程度级别。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
例如,以下将
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
类型:非负整数
默认值:10
指定日志条目中单个属性字段的最大大小(以字节为单位);超过此限制的属性将被截断。
截断的属性字段会打印不超过
maxLogSizeKB
限制的字段内容并删除超过该限制的字段内容,同时保留有效的 JSON 格式。包含截断属性的日志条目会将truncated
对象追加到日志条目的末尾。更多信息,请参阅日志信息截断。
0
的值会完全禁用截断。该参数的负值无效。警告
使用较大的值或禁用值为
0
的截断可能会对系统性能产生不利影响,并对数据库操作产生负面影响。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例将最大日志行大小设置为
20
千字节:mongod --setParameter maxLogSizeKB=20
profileOperationResourceConsumptionMetrics
仅适用于
mongod
。类型:布尔值
默认:false
用于确定操作是否收集资源消耗指标并在慢速查询日志中报告这些指标的标志。如果启用分析,则这些指标也包括在内。
如果设置为
true
,则运行explain
命令将在详细程度为executionStats
或更高时返回 operationMetrics。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。
quiet
设置静默记录模式。若为
1
,mongod
将进入静默记录模式,不记录以下事件/活动:连接事件;
drop
命令、dropIndexes
命令、validate
命令;以及复制同步活动。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
考虑以下示例,其中将
quiet
参数设置为1
:db.adminCommand( { setParameter: 1, quiet: 1 } )
redactClientLogData
类型:布尔值
注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
在登录之前,配置
mongod
或mongos
以编辑与给定日志事件相关的任何消息。这可以防止程序将存储在数据库上的潜在敏感数据写入诊断日志。错误或操作代码、行号和源文件名等元数据在日志中仍然可见。将
redactClientLogData
与静态加密和 TLS/SSL(传输加密)结合使用,以帮助符合监管要求。要能够启动时启用日志校订,您可以:
使用
--redactClientLogData
选项启动mongod
:mongod --redactClientLogData 在配置文件中设置
security.redactClientLogData
选项:security: redactClientLogData: true ...
您无法使用
--setParameter
选项在启动时设置redactClientLogData
。要在正在运行的
mongod
或mongos
上记录日志校订,使用以下命令:db.adminCommand( { setParameter: 1, redactClientLogData : true } )
redactEncryptedFields
6.1.0 版本新增。
类型:布尔值
默认值:
true
配置
mongod
和mongos
以编辑所有日志消息中加密的Binary
数据的字段值。如果
redactClientLogData
参数或security.redactClientLogData
设置已设置为false
,redactEncryptedFields
已设置为true
(默认值),则会从所有日志消息中编辑加密字段。如果
redactClientLogData
参数或security.redactClientLogData
设置已设置为true
,则无论redactEncryptedFields
设置如何,所有字段都将被编辑。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
traceExceptions
配置
mongod
记录每个数据库和套接字 C++ 异常的完整源代码堆栈跟踪,以用于调试。若为true
,mongod
将记录完整的堆栈跟踪。此参数仅在运行时可用。要设置参数,请使用
setParameter
命令。考虑以下示例,其中将
traceExceptions
true
设置为:db.adminCommand( { setParameter: 1, traceExceptions: true } )
suppressNoTLSPeerCertificateWarning
类型:布尔值
默认:false
默认情况下, 启用 TLS/SSL 并且
net.ssl.allowConnectionsWithoutCertificates
:true
的mongod
或mongos
允许客户端在不提供证书验证的情况下进行连接,同时记录警告。将suppressNoTLSPeerCertificateWarning
设置为1
或true
,以抑制这些警告。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。以下操作将
suppressNoTLSPeerCertificateWarning
设置为true
:db.adminCommand( { setParameter: 1, suppressNoTLSPeerCertificateWarning: true} )
enableDetailedConnectionHealthMetricLogLines
7.0 版本中的新增功能。
类型:布尔值
默认值:true
决定是否启用与集群连接运行状况指标相关的特定日志消息。如果将
enableDetailedConnectionHealthMetricLogLines
设置为false
,则会关闭以下日志消息,但 MongoDB 仍会收集有关集群连接运行状况指标的数据:日志消息说明已接受来自对等方的 TLS 连接指示服务器在与已接受的入口连接的 TLS 握手期间成功解析了对等证书。入口 TLS 握手已完成指示与入口连接的 TLS 握手已完成。你好,已完成指示传入客户端连接上的初始连接握手已完成。
MongoDB 仅使用第一个
hello
命令显示日志消息。身份验证指标报告指定身份验证对话中某一步骤的完成时间。自会话启动或身份验证握手以来,在入口连接上收到了第一条命令指示入口连接接收到第一条不属于握手的命令。网络响应发送时间慢表示通过入口连接将响应发送回客户端所花费的时间(以毫秒为单位)超过了slowMS
服务器参数定义的时长。已完成 OCSP 请求的客户端验证在建立出口 TLS 连接时,如果对等方没有在 TLS 握手中包含一个 OCSP 响应,那么服务器必须向证书颁发机构发送一个 OCSP 请求。当证书颁发机构收到 OCSP 响应时,MongoDB 会写入这条日志消息。连接建立缓慢表示通过入口连接向客户端发回响应所需的时间比用slowConnectionThresholdMillis
参数指定的阈值长。当连接建立超时时,MongoDB 也会发出此日志消息。等待获取连接时操作超时表示操作在等待获取出口连接时超时。已获取远程操作连接并完成线路写入表示服务器花费了一毫秒或更长的时间在出口连接上写入传出请求,从连接建立的瞬间开始计算。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
诊断参数
为了方便 MongoDB 工程师分析 MongoDB Server 的行为,MongoDB Server 会定期将统计信息保存到诊断文件中。
若为 mongod
,诊断数据文件会存储于 diagnostic.data
目录中,其位于 mongod
实例的 --dbpath
或 storage.dbPath
下。
对于 mongos
,默认情况下,诊断数据文件存储在 mongos
实例的 --logpath
或 systemLog.path
目录下。该诊断数据目录通过截断日志路径的文件扩展名并将 diagnostic.data
连接到剩余名称来计算。
例如,如果 mongos
拥有 --logpath
/var/log/mongodb/mongos.log.201708015
,那么诊断数据目录就是 /var/log/mongodb/mongos.diagnostic.data/
目录。要为 mongos
指定不同的诊断数据目录,设置 diagnosticDataCollectionDirectoryPath
参数。
以下参数支持诊断数据捕获 (FTDC):
注意
选择诊断数据捕获间隔的默认值和最大大小旨在 MongoDB 工程师提供有用的数据,同时尽量减小对性能和存储大小的影响。通常,仅当 MongoDB 工程师出于特定诊断目的请求修改时,才需要修改这些值。
diagnosticDataCollectionEnabled
类型:布尔值
默认值:true
确定是否能够基于诊断目的收集和记录数据。默认情况下启用诊断日志记录。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
例如,以下命令禁用诊断集合:
mongod --setParameter diagnosticDataCollectionEnabled=false
diagnosticDataCollectionDirectoryPath
仅适用于
mongos
。类型:字符串
警告
如果使用
diagnosticDataCollectionEnabled
禁用全时诊断数据捕获 (FTDC) 或者如果将systemLog.destination
设置为syslog
,则必须在设置diagnosticDataCollectionDirectoryPath
后重启mongos
。指定用于
mongos
的诊断目录的目录。如果目录不存在,mongos
会创建该目录。如未指定,则通过截断
mongos
实例的--logpath
或systemLog.path
文件扩展名并连接diagnostic.data
来计算诊断数据目录。例如,如果
mongos
有--logpath /var/log/mongodb/mongos.log.201708015
,则诊断数据目录为/var/log/mongodb/mongos.diagnostic.data/
。如果
mongos
无法创建指定目录,则禁用该实例的诊断数据捕获。如果路径中已存在同名文件或者进程没有创建目录的权限,则mongos
可能无法创建指定目录。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
diagnosticDataCollectionDirectorySizeMB
类型:整型
默认值:
200
(分片集群中为400
)指定
diagnostic.data
目录的最大大小(以兆字节为单位)。如果目录大小超过这个数字,目录中最早的诊断文件将根据文件名中的时间戳自动删除。在 8.0 版中更改:对于分片集群中使用的
mongos
和mongod
实例,diagnosticDataCollectionDirectorySizeMB
的默认值为 400 MB。在副本集中使用或用作独立服务器的mongod
实例的默认值为 200 MB。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
例如,以下操作将目录的最大大小设置为
250
兆字节:mongod --setParameter diagnosticDataCollectionDirectorySizeMB=250 diagnosticDataCollectionDirectorySizeMB
的最小值为10
MB。diagnosticDataCollectionDirectorySizeMB
必须大于最大诊断文件大小diagnosticDataCollectionFileSizeMB
。
diagnosticDataCollectionFileSizeMB
类型:整型
默认值:10
指定每个诊断文件的大小(以兆字节为单位)。如果文件超过最大文件大小,则 MongoDB 将创建新文件。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
例如,以下操作将每个诊断文件的最大大小设置为
20
兆字节:mongod --setParameter diagnosticDataCollectionFileSizeMB=20 diagnosticDataCollectionFileSizeMB
的最小值为1
MB。
diagnosticDataCollectionPeriodMillis
类型:整型
默认值:1000
指定收集诊断数据的时间间隔(以毫秒为单位)。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
例如,以下操作将时间间隔设置为
5000
毫秒或 5 秒:mongod --setParameter diagnosticDataCollectionPeriodMillis=5000 diagnosticDataCollectionPeriodMillis
的最小值为100
毫秒。
复制性和一致性
disableSplitHorizonIPCheck
5.0.0 版本新增。
类型:布尔值
默认:false
要为水平分割 DNS 配置集群节点,使用主机名称,而非 IP 地址。
从 MongoDB v5.0 开始,
replSetInitiate
和replSetReconfig
拒绝使用 IP 地址而不是主机名的配置。使用
disableSplitHorizonIPCheck
修改无法更新以使用主机名的节点。该参数仅适用于配置命令。mongod
和mongos
在启动时不依赖disableSplitHorizonIPCheck
进行验证。使用 IP 地址而不是主机名的旧版mongod
和mongos
实例可以在升级后启动。配置 IP 地址的实例会记录警告,要求使用主机名称而非 IP 地址。
要允许使用 IP 地址更改配置,则使用命令行设置
disableSplitHorizonIPCheck=true
:/usr/local/bin/mongod --setParameter disableSplitHorizonIPCheck=true -f /etc/mongod.conf 此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。setParameter: disableSplitHorizonIPCheck: true
enableOverrideClusterChainingSetting
5.0.2 版本新增。
类型:布尔值
默认:false
如果
enableOverrideClusterChainingSetting
为true
,则副本集从节点成员也可以从其他从节点成员复制数据,即使settings.chainingAllowed
为false
。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。例如,要将
mongod
实例的enableOverrideClusterChainingSetting
设置为true
:mongod --setParameter enableOverrideClusterChainingSetting=true
logicalSessionRefreshMillis
类型:整型
默认值:300000(5 分钟)
缓存根据主会话存储刷新其逻辑会话记录的时间间隔(以毫秒为单位)。
此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。例如,要将
mongod
实例的logicalSessionRefreshMillis
设置为 10 分钟:mongod --setParameter logicalSessionRefreshMillis=600000
localLogicalSessionTimeoutMinutes
类型:整型
默认值:30
警告
仅用于测试目的
此参数仅用于测试目的,不适用于生产用途。
会话在最近一次使用后保持活动状态的时间(以分钟为单位)。未从客户端收到新的读/写操作或未在此阈值内使用
refreshSessions
刷新的会话将从缓存中清除。与过期会话相关的状态可随时被服务器清理。该参数仅适用于设置该参数的实例。要在副本集和分片集群上设置该参数,您必须在每个成员上指定相同的值;否则,会话将无法正常运行。
此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。例如,要将测试
mongod
实例的localLogicalSessionTimeoutMinutes
设置为 20 分钟:mongod --setParameter localLogicalSessionTimeoutMinutes=20
maxAcceptableLogicalClockDriftSecs
类型:整型
默认值:31536000(1 年)
当前集群时间可以提前的最大值;具体来说,
maxAcceptableLogicalClockDriftSecs
是集群时间的新值与当前集群时间之间的最大差值。集群时间是用于操作排序的逻辑时间。如果新的集群时间与当前集群时间相差超过
maxAcceptableLogicalClockDriftSecs
,那么您无法将集群时间提前到新值。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。例如,要将
mongod
实例的maxAcceptableLogicalClockDriftSecs
设置为 15 分钟:mongod --setParameter maxAcceptableLogicalClockDriftSecs=900
maxSessions
类型:整型
默认值:1000000
可以缓存的最大会话数。
此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。例如,要将
mongod
实例的maxSessions
设置为 1000:mongod --setParameter maxSessions=1000
oplogBatchDelayMillis
6.0 版本中的新功能。
类型:整型
默认值:0
从节点上延迟应 oplog 操作批处理的毫秒数。默认情况下,
oplogBatchDelayMillis
为0
,表示会立即应用 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 中的新增功能。
类型:布尔值
默认值:true
确定可重试
findAndModify
命令所需的临时文档是否存储在侧面集合 (config.image_collection
) 中。如果
storeFindAndModifyImagesInSideCollection
是:true
,临时文件存放在侧方集合。false
,临时文档存储在副本集 oplog 中。
如果您符合以下情况,请将
storeFindAndModifyImagesInSideCollection
设置为true
:有大量可重试
findAndModify
工作负载。可重试的
findAndModify
命令所需的临时文档空间多于副本集 oplog 中的可用空间。
注意
当
storeFindAndModifyImagesInSideCollection
为true
时,从节点的 CPU 使用率可能会增加。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
例如,要在启动期间将
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
类型:布尔值
默认值:true
启用或禁用控制主节点应用其写入操作的速率,以便将从节点成员的
majority committed
延迟保持在可配置的最大值以下。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
注意
要启用流量控制,副本集/分片集群必须具有: featureCompatibilityVersion (fCV) 为
4.2
,且读关注(read concern)为majority enabled
。也就是说,如果 fCV 不是4.2
或读关注已被禁用,则已启用的流量控制将不会生效。
flowControlTargetLagSeconds
类型:整型
默认值:10
使用流量控制运行时的目标最大
majority committed
延迟。启用流量控制后,该机制会尝试将majority committed
延迟保持在指定秒数以下。 若已禁用流量控制,则该参数无效。指定值必须大于 0。
一般来说,默认设置应该足够使用;但是,如果要修改默认值,减小值而不是增大值可能会更有用。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
flowControlWarnThresholdSeconds
类型:整型
默认值:10
一旦流控制机制检测到多数提交点未移动,等待记录警告的时间。
指定值必须大于或等于0,其中 0 为禁用警告。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
initialSyncTransientErrorRetryPeriodSeconds
类型:整型
默认值:86400
被临时网络错误中断时,从节点执行初始同步以尝试恢复该过程的时间(以秒为单位)。默认值相当于 24 小时。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
initialSyncSourceReadPreference
仅适用于
mongod
。类型:字符串
执行初始同步的首选来源。指定以下任何一个读取偏好模式:
primaryPreferred
(投票副本集成员的默认值)nearest
(新增或无投票权的副本集成员的默认值)
如果副本集已禁用
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
版本 5.0 中的新增功能。
类型:整型
默认值:3
每次更新同步源以及每次节点获取一批 oplog 条目时都会对同步源进行求值。如果一小时内源更改次数超过
maxNumSyncSourceChangesPerHour
,则该节点将暂时停止对该同步源进行求值。如果该参数设置较高,则该节点可能会进行不必要的源更改。如果一个节点没有同步源,此参数不会阻止该节点从另一个节点开始同步。如果同步源无效,该节点将重新求值。同样,如果主节点发生变化并且链接被禁用,则该节点将更新以从新的主节点同步。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
oplogFetcherUsesExhaust
仅适用于
mongod
。类型:布尔值
默认值:true
启用或禁用流复制。将值设置为
true
以启用流复制。将值设置为
false
以禁用流复制。如已禁用,从节点会通过发送请求至 sync from 源并等待响应来获取一批 oplog 条目。这需要针对每批 oplog 条目进行一次网络往返。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。
oplogInitialFindMaxSeconds
仅适用于
mongod
。类型:整型
默认:60
数据同步期间副本集节点等待
find
命令完成的最长时间(以秒为单位)。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
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 年。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
waitForSecondaryBeforeNoopWriteMS
仅适用于
mongod
。类型:整型
默认值:10
如果
afterClusterTime
大于 oplog 的上次应用时间,则从节点必须等待的时长(以毫秒为单位)。经过waitForSecondaryBeforeNoopWriteMS
后,如果afterClusterTime
仍然大于上次应用时间,则从节点执行无操作写入,以提前上次应用时间。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例将
waitForSecondaryBeforeNoopWriteMS
设置为 20 毫秒:mongod --setParameter waitForSecondaryBeforeNoopWriteMS=20 在运行期间,也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, waitForSecondaryBeforeNoopWriteMS: 20 } )
createRollbackDataFiles
仅适用于
mongod
。类型:布尔值
默认值:true
确定 MongoDB 是否创建包含回滚期间受影响的文档的回滚文件的标志。
默认情况下,
createRollbackDataFiles
是true
,MongoDB 会创建回滚文件。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例将
createRollbackDataFiles
设置为 false,这样就不会创建回滚文件:mongod --setParameter createRollbackDataFiles=false 在运行期间,也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, createRollbackDataFiles: false } ) 更多信息,请参阅收集回滚数据。
replBatchLimitBytes
Default: 104857600 (100MB)
设置最大 oplog 应用批处理大小(以字节为单位)。
值的范围可以从 16777216 (16MB) 到 {0} 104857600 (100MB)(含)。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例将
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.0
和1.0
(不含)之间的数字主节点随机抽取每个可选举从节点,以指定的速率发送镜像读取。例如,给定一个副本集,其中有一个主节点和两个可选从节点,采样率为
0.10
,则主节点镜像以 10% 的采样率读取每个可选从节点,这样一个读取可以镜像到一个从节点,而不会镜像到另一个从节点或同时镜像或同时不镜像到两个从节点。也就是说,如果主节点收到可镜像的100
操作,则0.10
的采样率可能会导致8
个读取被镜像到一个从节点,13
个读取被镜像到另一个从节点,或10
个读取被镜像到每个从节点等。默认值为
0.01
。maxTimeMS
镜像读取的最长时间(以毫秒为单位)。默认值为
1000
。镜像读取的
maxTimeMS
与被镜像的原始读取的maxTimeMS
是分开的。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
如果从配置文件或命令行指定,则使用引号将
mirrorReads
文档括起来。例如,以下操作从命令行将镜像读取采样率设置为
0.10
:mongod --setParameter mirrorReads='{ samplingRate: 0.10 }' 或者,在配置文件中指定:
setParameter: mirrorReads: '{samplingRate: 0.10}' 或者,如果在连接正在运行的
mongod
的mongosh
会话中使用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
时未设置sampleRate
和sampleSize
,则指定在计算分片键特征指标时要采样的文档数。必须大于0
。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
此示例在启动时将
analyzeShardKeyCharacteristicsDefaultSampleSize
设置为10000
:mongod --setParameter analyzeShardKeyCharacteristicsDefaultSampleSize=10000 在运行期间,您可以使用
setParameter
命令设置或修改参数:db.adminCommand( { setParameter: 1, analyzeShardKeyCharacteristicsDefaultSampleSize: 10000 } )
analyzeShardKeyNumMostCommonValues
7.0 版本中的新增功能。
仅适用于
mongod
。类型:整型
默认值:5
指定要返回的最常用分片键值的个数。如果集合包含的唯一分片键少于此值,则
analyzeShardKeyNumMostCommonValues
将返回最常用值的个数。必须大于0
且小于或等于1000
。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
此示例在启动时将
analyzeShardKeyNumMostCommonValues
设置为3
:mongod --setParameter analyzeShardKeyNumMostCommonValues=3 在运行期间,您可以使用
setParameter
命令设置或修改参数:db.adminCommand( { setParameter: 1, analyzeShardKeyNumMostCommonValues: 3 } )
analyzeShardKeyNumRanges
7.0 版本中的新增功能。
仅适用于
mongod
。类型:整型
默认值:100
指定计算分片键范围热度时将分片键空间划分为多少个范围。必须大于
0
且小于或等于10000
。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
此示例在启动时将
analyzeShardKeyNumRanges
设置为50
:mongod --setParameter analyzeShardKeyNumRanges=50 在运行期间,您可以使用
setParameter
命令设置或修改参数:db.adminCommand( { setParameter: 1, analyzeShardKeyNumRanges: 50 } )
analyzeShardKeyMonotonicityCorrelationCoefficientThreshold
7.0 版本中的新增功能。
仅适用于
mongod
。类型:double
默认值:0.7
指定用于确定分片键是否按插入顺序单调变化的
RecordId
相关系数阈值。必须大于0
且小于或等于1
。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
此示例在启动时将
analyzeShardKeyMonotonicityCorrelationCoefficientThreshold
设置为1
:mongod --setParameter analyzeShardKeyMonotonicityCorrelationCoefficientThreshold=1 在运行期间,您可以使用
setParameter
命令设置或修改参数:db.adminCommand( { setParameter: 1, analyzeShardKeyMonotonicityCorrelationCoefficientThreshold: 1 } )
autoMergerIntervalSecs
7.0 版本中的新增功能。
仅适用于
mongod
。类型:整型
默认值:3600
启用 AutoMerger 后,指定自动合并之间的时间间隔(以秒为单位)。默认值为 3600 秒,即一小时。
autoMergerIntervalSecs
只能在配置服务器上设置。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
此示例是在启动时将
autoMergerIntervalSecs
设置为 7200 秒,即两小时:mongod --setParameter autoMergerIntervalSecs=7200 在运行期间,您可以使用
setParameter
命令设置或修改参数:db.adminCommand( { setParameter: 1, autoMergerIntervalSecs: 7200 } )
autoMergerThrottlingMS
7.0 版本中的新增功能。
仅适用于
mongod
。类型:整型
默认值:15000
启用 AutoMerger 后,指定 AutoMerger 在同一集合上启动的合并之间的最小时间间隔(以毫秒为单位)。
autoMergerThrottlingMS
只能在配置服务器上设置。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
此示例是在启动时将
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
指定两个连续均衡回合之间的最短时间。这允许您限制均衡速率。该参数仅对配置服务器节点生效。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
此示例是在启动时将
balancerMigrationsThrottlingMs
设置为 2000 毫秒:mongod --setParameter balancerMigrationsThrottlingMs=2000 在运行期间,也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, balancerMigrationsThrottlingMs: 2000 } )
chunkDefragmentationThrottlingMS
5.3 版本中的新增功能。
类型:整型
默认值:0
当对分片集合中的数据块进行碎片整理时,指定由负载均衡器运行的连续分割与合并命令之间的最短时间段(以毫秒为单位)。
chunkDefragmentationThrottlingMS
会限制分割和合并命令的速度。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例将
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
设置决定了在数据块迁移期间,在什么条件下将对数据块中的下一个文档进行处理。有关详细信息,请参阅范围迁移和复制。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例将
chunkMigrationConcurrency
设置为5
:mongod --setParameter chunkMigrationConcurrency=5 在运行期间,也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, chunkMigrationConcurrency: 5 } ) 要配置集合负载均衡,请参阅
configureCollectionBalancing
。要了解如何对分片集合进行碎片整理,请参阅对分片集合进行碎片整理。
disableResumableRangeDeleter
仅适用于
mongod
。类型:布尔值
默认:false
如果已在分片的主节点上设置,则指定是否在分片上暂停范围删除。如果设置为
true
,则暂停清理包含孤立文档的范围。该分片可以继续向其他分片捐赠数据段,但捐赠的文档不会从该分片中删除,直到您将此参数设置为false
。只要该分片在与传入数据段范围重叠的config.rangeDeletions
集合中没有待处理的范围删除任务,则可继续从其他分片接收数据段。当
disableResumableRangeDeleter
为true
时,如果接收分片的主分片上存在孤立文档,并且与传入数据块的范围相同,则数据块迁移将失败。如果该参数不是分片的主节点,则该参数对
mongod
没有影响。重要
如果您将
disableResumableRangeDeleter
参数设置为true
,则确保将其一致地应用于分片副本集中的所有成员。如果发生故障转移,该设置在新的主节点上的值会决定范围删除器的行为。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。mongod --setParameter disableResumableRangeDeleter=false
enableShardedIndexConsistencyCheck
仅适用于
mongod
。类型:布尔值
默认值:true
如果在配置服务器的主节点上设置,则启用或禁用分片集合的索引一致性检查。如果该参数不是配置服务器上的主节点,则该参数对
mongod
没有影响。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例将配置服务器主节点的
enableShardedIndexConsistencyCheck
设置为false
:mongod --setParameter enableShardedIndexConsistencyCheck=false 在运行期间,也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, enableShardedIndexConsistencyCheck: false } ) 提示
另请参阅:
shardedIndexConsistencyCheckIntervalMS
parameterserverStatus
命令返回的shardedIndexConsistency
指标。
opportunisticSecondaryTargeting
6.1.0 版本新增。
仅适用于
mongos
。类型:布尔值
默认值:
false
确定
mongos
是否对副本集执行机会性读取。当此参数设置为
true
时,mongos
会将从节点读取定向到具有活动连接的从节点。它将请求发送到第一个接受连接的从节点。当此参数设置为false
时,mongos
会保留从节点读取,直到它可以与特定从节点建立连接(对冲读的情况除外)。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
例如,在启动期间设置
opportunisticSecondaryTargeting
:mongos --setParameter opportunisticSecondaryTargeting=true
shardedIndexConsistencyCheckIntervalMS
仅适用于
mongod
。类型:整型
默认值:600000
如果在配置服务器的主节点上设置,则配置服务器主节点检查分片集合的索引一致性的时间间隔(以毫秒为单位)。如果该参数不是配置服务器上的主节点,则该参数对
mongod
没有影响。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。例如,以下操作在启动时将时间间隔设置为 300000 毫秒(5 分钟):
mongod --setParameter shardedIndexConsistencyCheckIntervalMS=300000
enableFinerGrainedCatalogCacheRefresh
注意
8.0 中已弃用
从 MongoDB 8.0 开始,该参数已弃用,不会导致任何变更或错误。
类型:布尔值
默认值:true
该参数允许仅在需要刷新分片时才刷新目录缓存。如已禁用,任何过时的数据段都会导致集合的整个数据段分布被视为过时,并强制所有联系分片的路由器刷新其分片目录缓存。
此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。mongod --setParameter enableFinerGrainedCatalogCacheRefresh=true mongos --setParameter enableFinerGrainedCatalogCacheRefresh=true
maxTimeMSForHedgedReads
重要
从 MongoDB 8.0开始,对冲读已弃用。 默认情况下,指定读取偏好
nearest
的查询不再使用对冲读。 如果您明确指定对冲读,MongoDB 会执行对冲读并记录警告。仅适用于
mongos
。类型:整型
默认值:150
指定对冲读的最大时限(以毫秒为单位)。也就是说,为对冲读操作而发送的额外读取操作使用
maxTimeMSForHedgedReads
的maxTimeMS
值,而被对冲的读操作使用为该操作指定的maxTimeMS
值。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
例如,要设定 200 毫秒的限制,您可以在启动时发出以下命令:
mongos --setParameter maxTimeMSForHedgedReads=200 或者,如果在连接至正在运行的
mongos
的mongosh
会话中使用setParameter
命令:db.adminCommand( { setParameter: 1, maxTimeMSForHedgedReads: 200 } )
maxCatchUpPercentageBeforeBlockingWrites
版本 5.0 中的新增功能。
仅适用于
mongod
。类型:整型
默认值:10
对于
moveChunk
和moveRange
操作,指定迁移协议允许从catchup
阶段过渡到commit
阶段的未传输数据的最大百分比(以总数据段大小的百分比表示)。设置更高的追赶百分比可减少完成迁移所需的时间,但会导致并发
upsert
和delete
操作期间的延迟增加。此参数仅在启动时可用。要设置该参数,请使用
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
可能会使用所有重试尝试并返回错误。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
例如,将
metadataRefreshInTransactionMaxWaitBehindCritSecMS
设置为 400 毫秒:db.adminCommand( { setParameter: 1, metadataRefreshInTransactionMaxWaitBehindCritSecMS: 400 } )
queryAnalysisSamplerConfigurationRefreshSecs
7.0 版本中的新增功能。
7.0.1 版本中的更改。
类型:整型
默认值:10
采样器(
mongos
或mongod
)刷新其查询分析器采样率的时间间隔。根据经过其中的流量,在分片集群中的
mongos
实例或副本集中的mongod
实例之间分配configureQueryAnalyzer
命令配置的采样率。要使mongos
或mongod
的采样率分配对通过其中的流量更加敏感,请减小该值。建议使用默认值。
此参数仅在启动时可用。要设置该参数,请使用
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
。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
此示例将在
mongod
实例上,在启动时将queryAnalysisWriterMaxMemoryUsageBytes
设置为10000000
:mongod --setParameter queryAnalysisWriterMaxMemoryUsageBytes=10000000
queryAnalysisWriterMaxBatchSize
7.0 版本中的新增功能。
仅适用于
mongod
。类型:整型
默认值:100000
一次写入磁盘的最大采样查询次数。必须大于
0
且小于或等于100000
。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
此示例将在
mongod
实例上,在启动时将queryAnalysisWriterMaxBatchSize
设置为1000
:mongod --setParameter queryAnalysisWriterMaxBatchSize=1000 在运行期间,也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, queryAnalysisWriterMaxBatchSize: 1000 } )
queryAnalysisSampleExpirationSecs
7.0 版本中的新增功能。
仅适用于
mongod
。类型:整型
默认值:7 * 24 * 3600
采样查询文档在被 TTL 监视器删除之前存在的时间(以秒为单位)。必须大于
0
。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
此示例将在
mongod
实例上,在启动时将queryAnalysisSampleExpirationSecs
设置为691200
(8 * 24 * 3600
):mongod --setParameter queryAnalysisSampleExpirationSecs=691200 在运行期间,也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, queryAnalysisSampleExpirationSecs: 691200 } )
readHedgingMode
仅适用于
mongos
。类型:字符串
默认值:on
指定
mongos
是否支持对读取偏好已启用对冲读选项的读取操作进行对冲读。可用值为:
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
例如,要关闭对
mongos
实例的对冲读支持,可以在启动期间发出以下命令:mongos --setParameter readHedgingMode=off 或者,如果在连接至正在运行的
mongos
的mongosh
会话中使用setParameter
命令:db.adminCommand( { setParameter: 1, readHedgingMode: "off" } )
routingTableCacheChunkBucketSize
7.0.1 版本新增。
在版本 7.2 中进行了更改。
类型:整型
默认值:500
指定路由表高速缓存桶的大小,用于实施数据块分组优化。必须大于
0
。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。例如,要在
mongod
上将缓存数据段存储桶大小设置为250
,则在启动时发出以下命令:mongod --setParameter routingTableCacheChunkBucketSize=250
shutdownTimeoutMillisForSignaledShutdown
版本 5.0 中的新增功能。
仅适用于
mongod
。类型:整型
默认值:15000
指定在响应
SIGTERM
信号而启动mongod
关闭之前等待任何正在进行的数据库操作完成的时间(以毫秒为单位)。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
例如,要将时间设置为 250 毫秒,您可以在启动期间发出以下命令:
mongod --setParameter shutdownTimeoutMillisForSignaledShutdown=250 或者,如果在连接至正在运行的
mongod
的mongosh
会话中使用setParameter
命令:db.adminCommand( { setParameter: 1, shutdownTimeoutMillisForSignaledShutdown: 250 } )
mongosShutdownTimeoutMillisForSignaledShutdown
版本 5.0 中的新增功能。
仅适用于
mongos
。类型:整型
默认值:15000
指定在响应
SIGTERM
信号而启动mongos
关闭之前等待任何正在进行的数据库操作完成的时间(以毫秒为单位)。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
例如,要将时间设置为 250 毫秒,您可以在启动期间发出以下命令:
mongos --setParameter mongosShutdownTimeoutMillisForSignaledShutdown=250 或者,如果在连接至正在运行的
mongos
的mongosh
会话中使用setParameter
命令:db.adminCommand( { setParameter: 1, mongosShutdownTimeoutMillisForSignaledShutdown: 250 } )
ShardingTaskExecutorPoolHostTimeoutMS
类型:整数
默认值:300000(5 分钟)
mongos
在mongos
断开与主机的所有连接之前与主机失去通信的最长时间。如果设置,
ShardingTaskExecutorPoolHostTimeoutMS
应大于ShardingTaskExecutorPoolRefreshRequirementMS
和ShardingTaskExecutorPoolRefreshTimeoutMS
的和。否则,mongos
会调整ShardingTaskExecutorPoolHostTimeoutMS
的值,使其大于该总和。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例在启动期间将
ShardingTaskExecutorPoolHostTimeoutMS
设置为120000
:mongos --setParameter ShardingTaskExecutorPoolHostTimeoutMS=120000 在运行期间,也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolHostTimeoutMS: 120000 } )
ShardingTaskExecutorPoolMaxConnecting
类型:整数
默认值:2
每个 TaskExecutor 连接池到
mongod
实例的最大并发连接数(包括设置/刷新状态下的待连接)。您可以设置此参数来控制mongos
向mongod
实例添加连接的速率。如已设置,则
ShardingTaskExecutorPoolMaxConnecting
应小于或等于ShardingTaskExecutorPoolMaxSize
。如果是大于的情况,则mongos
会忽略ShardingTaskExecutorPoolMaxConnecting
值。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例在启动期间将
ShardingTaskExecutorPoolMaxConnecting
设置为20
:mongos --setParameter ShardingTaskExecutorPoolMaxConnecting=20 在运行期间,也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolMaxConnecting: 20 } )
ShardingTaskExecutorPoolMaxSize
类型:整数
默认值:2 64 - 1
每个 TaskExecutor 连接池可向任意给定
mongod
实例开放的最大出站连接数。 所有 TaskExecutor 池中任何给定主机的最大可能连接数为:ShardingTaskExecutorPoolMaxSize * taskExecutorPoolSize 此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例在启动期间将
ShardingTaskExecutorPoolMaxSize
设置为20
:mongos --setParameter ShardingTaskExecutorPoolMaxSize=20 在运行期间,也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolMaxSize: 20 } ) mongos
最多可以有n
个 TaskExecutor 连接池,其中n
为内核数。请参阅taskExecutorPoolSize
。
ShardingTaskExecutorPoolMaxSizeForConfigServers
6.0 版本中的新功能。
类型:整数
默认值:-1
ShardingTaskExecutorPoolMaxSize
的可选替代项,用于设置每个 TaskExecutor 连接池可以向配置服务器打开的最大出站连接数。当设置为:
-1
,使用ShardingTaskExecutorPoolMaxSize
。这是默认设置。大于
-1
的整数值,覆盖每个 TaskExecutor 连接池可以向配置服务器打开的出站连接数的最大数量。
参数仅适用于分片部署。
以下示例在启动期间将
ShardingTaskExecutorPoolMaxSize
设置为2
,从而将每个 TaskExecutor 连接池可以向配置服务器打开的最大出站连接数设置为2
:此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
mongos --setParameter ShardingTaskExecutorPoolMaxSizeForConfigServers=2 在运行期间,也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolMaxSizeForConfigServers: 2 } )
ShardingTaskExecutorPoolMinSize
类型:整数
默认值:1
每个 TaskExecutor 连接池可向任意给定
mongod
实例开放的最小出站连接数。ShardingTaskExecutorPoolMinSize
首次从池中请求与一个新主机建立连接时,会创建连接。当池空闲时,池会维持此数量的连接,直到ShardingTaskExecutorPoolHostTimeoutMS
毫秒过去且没有任何应用程序使用该池。对于使用
warmMinConnectionsInShardingTaskExecutorPoolOnStartup
参数的mongos
,ShardingTaskExecutorPoolMinSize
参数还控制在mongos
启动时建立到每个分片主机的连接数量,然后开始接受传入的客户端连接。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例在启动期间将
ShardingTaskExecutorPoolMinSize
设置为2
:mongos --setParameter ShardingTaskExecutorPoolMinSize=2 在运行期间,也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolMinSize: 2 } ) mongos
最多可以有n
个 TaskExecutor 连接池,其中n
为内核数。请参阅taskExecutorPoolSize
。
ShardingTaskExecutorPoolMinSizeForConfigServers
6.0 版本中的新功能。
类型:整数
默认值:-1
ShardingTaskExecutorPoolMinSize
的可选替代项,用于设置每个 TaskExecutor 连接池可以向配置服务器打开的最小出站连接数。当设置为:
-1
,使用ShardingTaskExecutorPoolMinSize
。这是默认设置。大于
-1
的整数值;覆盖每个 TaskExecutor 连接池可以向配置服务器打开的最小出站连接数。
参数仅适用于分片部署。
以下示例在启动期间将
ShardingTaskExecutorPoolMinSize
设置为2
,从而将每个 TaskExecutor 连接池可以向配置服务器打开的最小出站连接数设置为2
:此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
mongos --setParameter ShardingTaskExecutorPoolMinSizeForConfigServers=2 在运行期间,也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolMinSizeForConfigServers: 2 } )
ShardingTaskExecutorPoolRefreshRequirementMS
类型:整数
默认值:60000(1 分钟)
mongos
在尝试对池中的空闲连接进行心跳检测前等待的最长时间。如果池大小超过其最小规模,则空闲连接可能会在刷新期间被弃用。如已设置,
ShardingTaskExecutorPoolRefreshRequirementMS
应大于ShardingTaskExecutorPoolRefreshTimeoutMS
。否则,mongos
会将ShardingTaskExecutorPoolRefreshTimeoutMS
的值调整为小于ShardingTaskExecutorPoolRefreshRequirementMS
。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例在启动期间将
ShardingTaskExecutorPoolRefreshRequirementMS
设置为90000
:mongos --setParameter ShardingTaskExecutorPoolRefreshRequirementMS=90000 在运行期间,也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolRefreshRequirementMS: 90000 } )
ShardingTaskExecutorPoolRefreshTimeoutMS
类型:整数
默认值:20000(20 秒)
mongos
等待心跳检测超时的最大时间。如果设置,则
ShardingTaskExecutorPoolRefreshTimeoutMS
应小于ShardingTaskExecutorPoolRefreshRequirementMS
。否则,mongos
将ShardingTaskExecutorPoolRefreshTimeoutMS
的值调整为小于ShardingTaskExecutorPoolRefreshRequirementMS
。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例在启动期间将
ShardingTaskExecutorPoolRefreshTimeoutMS
设置为30000
:mongos --setParameter ShardingTaskExecutorPoolRefreshTimeoutMS=30000 在运行期间,也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolRefreshTimeoutMS: 30000 } )
ShardingTaskExecutorPoolReplicaSetMatching
5.0 版本中的更改。
类型:字符串
默认值:“自动”
在
mongos
实例上,此参数设置策略,该策略确定其连接池与副本集中的节点的最小大小限制。在
mongod
实例上,此参数设置策略,该策略确定其连接池与其他副本集中的节点的最小大小限制。请注意,此参数仅托管与用户请求和 CRUD 操作直接相关的操作的连接。
可用值为:
匹配策略说明"automatic"
(默认)从 5.0 开始,
"automatic"
是新的默认值。为
mongos
设置时,实例遵循为"matchPrimaryNode"
选项指定的行为。为
mongod
设置时,实例遵循为"disabled"
选项指定的行为。警告:如果
ShardingTaskExecutorPoolReplicaSetMatching
设立为"automatic"
,则replicaSetMatchingStrategy
仍然描述实际正在使用的策略,而不是"automatic"
。要查找ShardingTaskExecutorPoolReplicaSetMatching
的值,使用getParameter
返回服务器参数的值。"matchPrimaryNode"
"matchBusiestNode"
"disabled"
当为
mongos
设置时,该实例在实例的连接池中与分片集群中另一个副本集的每个节点的最小连接数(具体来说,分片副本集和配置服务器)等于ShardingTaskExecutorPoolMinSize
。当为
mongod
设置时,该实例的连接池中与分片集群中另一个副本集的每个节点的最小连接数(具体来说即分片副本集和配置服务器)等于ShardingTaskExecutorPoolMinSize
。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例在启动期间将
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
:此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
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
表示无需额外等待。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下操作将
migrateCloneInsertionBatchDelayMS
设置为 200 毫秒:mongod --setParameter migrateCloneInsertionBatchDelayMS=200 也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, migrateCloneInsertionBatchDelayMS: 200 } )
migrateCloneInsertionBatchSize
仅适用于
mongod
。类型:非负整数
默认值:0
迁移过程的克隆步骤中每批次中插入的最大文档数。
默认值
0
表示每次批处理没有最大文档数。然而,实际上,这会导致包含最大 16 MB 文档的批处理。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下操作将
migrateCloneInsertionBatchSize
设置为 100 个文档:mongod --setParameter migrateCloneInsertionBatchSize=100 也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, migrateCloneInsertionBatchSize: 100 } )
orphanCleanupDelaySecs
仅适用于
mongod
。默认值:900(15 分钟)
从源分片中删除已迁移数据段之前的最小延迟。
在数据块迁移期间删除数据块之前,MongoDB 会等待
orphanCleanupDelaySecs
或与该数据块有关的正在进行的查询在分片节点上完成,以时间较长者为准。但是,由于分片主节点对在分片从节点上正在运行的查询没有了解,如果这些查询花费的时间比完成分片主节点查询的时间和
orphanCleanupDelaySecs
长,则使用数据块但在从节点上运行的查询可能会导致文档消失。注意
此行为仅影响在数据段迁移之前开始的正在进行的查询。在数据段迁移开始后启动的查询将不会使用正在迁移的数据段。
如果分片有存储限制,则考虑暂时减小该值。如果在分片从节点上运行超过 15 分钟的查询,则考虑增加该值。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下操作将
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.collections
和config.cache.chunks.<collectionName>
,此信息从分片的主节点传播到从节点。在以前的版本中,对数据块缓存collection的更新是单独执行的(意味着删除一个条目并插入一个新条目)。从 MongoDB 7.2 开始,这些更新以批量删除和批量插入的方式执行。 更新的逻辑提高了包含大量数据块的collection的性能。
persistedChunkCacheUpdateMaxBatchSize
参数指定用于更新持久化数据段缓存的最大批处理大小。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例在启动时将
persistedChunkCacheUpdateMaxBatchSize
设置为 700:mongod --setParameter persistedChunkCacheUpdateMaxBatchSize=700 您还可以在运行时设置
persistedChunkCacheUpdateMaxBatchSize
:db.adminCommand( { setParameter: 1, persistedChunkCacheUpdateMaxBatchSize: 700 } )
rangeDeleterBatchDelayMS
仅适用于
mongod
。类型:非负整数
默认值:20
在范围迁移的清理阶段,下一批删除之前等待的时间(以毫秒为单位)。
_secondaryThrottle 复制延迟发生在每次批处理删除之后。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下操作将
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
表示系统选择默认值。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例将
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
,即用户操作的优先级高于清理孤立文档。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例将
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 中的新增功能。
类型:非负整数
默认值:900000
如果集群中有大量数据段,并且数据段加载失败并出现错误
ExceededTimeLimit
,则增加参数值:mongod --setParameter findChunksOnConfigTimeoutMS=1000000 此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
健康管理器参数
activeFaultDurationSecs
仅适用于
mongos
。类型:文档
从健康管理器概述故障到从集群中删除 mongos 所需的等待时间(以秒为单位)。
当检测到故障并且运行状况管理器配置为
critical
时,服务器会等待指定的时间间隔,然后从集群中删除mongos
。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
例如,要将故障到崩溃的持续时间设置为五分钟,则在启动时发出以下命令:
mongos --setParameter activeFaultDurationSecs=300 或者,如果在连接至正在运行的
mongos
的mongosh
会话中使用setParameter
命令:db.adminCommand( { setParameter: 1, activeFaultDurationSecs: 300 } ) 使用
setParameter
设置的参数在重启后不会持续存在。有关详细信息,请参阅 setParameter 页面。要使该设置持续有效,使用
setParameter
选项在您的 mongos 配置文件设置activeFaultDurationSecs
,如以下示例所示:setParameter: activeFaultDurationSecs: 300
healthMonitoringIntensities
仅适用于
mongos
。类型:文档数组
使用此参数设置健康管理器的强度水平。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
healthMonitoringIntensities
接受一个文档数组,values
。values
中的每个文档都有两个字段: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"} ] }' 或者,如果在连接至正在运行的
mongos
的mongosh
会话中使用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
。类型:文档数组
该健康管理器运行的频率(以毫秒为单位)。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
healthMonitoringIntervals
接受一个文档数组,values
。values
中的每个文档都有两个字段:type
,运行状况管理器组件interval
,运行的时间间隔,以毫秒为单位
健康管理器
Facet健康观察器检查的内容configServer
与配置服务器连接相关的集群运行状况问题。dns
与 DNS 可用性和功能性相关的集群运行状况问题。ldap
与 LDAP 可用性和功能性相关的集群运行状况问题。例如,若要将
ldap
运行状况管理器组件设置为每 30 秒进行一次健康检查,则请在启动时执行以下命令:mongos --setParameter 'healthMonitoringIntervals={ values:[ { type:"ldap", interval: "30000"} ] }' 或者,如果在连接至正在运行的
mongos
的mongosh
会话中使用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 并将其从集群中删除。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
progressMonitor
字段字段说明单位interval
确保健康管理器不会卡住或无响应的频率。毫秒deadline
如果健康管理器检查没有取得进展,则在 Mongo 自动失败之前超时。秒数要将
interval
和deadline
分别设置为 1000 毫秒和 300 秒,则在启动时发出以下命令:mongos --setParameter 'progressMonitor={"interval": 1000, "deadline": 300}' 或者,如果在连接至正在运行的
mongos
的mongosh
会话中使用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
。指定一个介于
1
和500
之间的整数,表示日志提交之间的间隔(以毫秒 (ms) 为单位)。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
考虑以下示例,将
journalCommitInterval
设置为200
毫秒:db.adminCommand( { setParameter: 1, journalCommitInterval: 200 } )
minSnapshotHistoryWindowInSeconds
版本 5.0 中的新增功能。
仅适用于
mongod
。默认值:
300
存储引擎保留快照历史记录的最小时间窗口(以秒为单位)。如果您使用读关注
"snapshot"
查询数据并指定的 atClusterTime 值早于指定的minSnapshotHistoryWindowInSeconds
,则mongod
会返回SnapshotTooOld
错误。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
指定一个大于或等于 (
>=
) 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
设置为非默认值,则会禁用动态调整并发存储引擎事务数量的算法。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
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
设置为非默认值,则会禁用动态调整并发存储引擎事务数量的算法。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
db.adminCommand( { setParameter: 1, storageEngineConcurrentWriteTransactions: <int> } ) 6.0 版本中的更改:
wiredTigerConcurrentWriteTransactions
参数已被重命名为storageEngineConcurrentWriteTransactions
。
syncdelay
仅适用于
mongod
。指定
mongod
将其工作内存刷新到磁盘的间隔(以秒为单位)。默认情况下,mongod
每 60 秒向磁盘刷新一次内存。几乎在所有情况下,您都不应该设置该值,而应该使用默认设置。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
考虑以下示例,其将
syncdelay
设置为60
秒:db.adminCommand( { setParameter: 1, syncdelay: 60 } ) 为了提供持久性数据,WiredTiger 使用了检查点。 有关详细信息,请参阅《日志和 WiredTiger 存储引擎》。
temporarilyUnavailableBackoffBaseMs
仅适用于
mongod
。指定重试由于缓存压力而回滚的写入操作之前的初始延迟。
在极少数情况下,写入可能会由于缓存压力而失败。发生这种情况时,MongoDB 会抛出
TemporarilyUnavailable
错误并在两个位置增加temporarilyUnavailableErrors
计数器:慢查询日志和全时诊断数据捕获 (FTDC)。多文档事务中的单个操作绝不会返回
TemporarilyUnavailable
错误。通过修改
temporarilyUnavailableBackoffBaseMs
和temporarilyUnavailableMaxRetries
参数来调整写入重试属性。该参数接受:
值说明integer >= 0
默认为 15 秒。重试之间的初始延迟。每次重试后,该值都会增加,最长为 55 秒。值越大,在下次重试之前缓存压力降低的可能性越大。
如要配置重试次数,请使用
temporarilyUnavailableMaxRetries
。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
要设置新值,则使用
db.adminCommand()
:db.adminCommand( { setParameter: 1, temporarilyUnavailableBackoffBaseMs: 3 } ) 6.1.0 版本新增。
temporarilyUnavailableMaxRetries
仅适用于
mongod
。指定由于缓存压力而回滚写入操作时的最大重试次数。
在极少数情况下,写入可能会由于缓存压力而失败。发生这种情况时,MongoDB 会抛出
TemporarilyUnavailable
错误并在两个位置增加temporarilyUnavailableErrors
计数器:慢查询日志和全时诊断数据捕获 (FTDC)。多文档事务中的单个操作绝不会返回
TemporarilyUnavailable
错误。通过修改
temporarilyUnavailableBackoffBaseMs
和temporarilyUnavailableMaxRetries
参数来调整写入重试属性。该参数接受:
值说明integer >= 0
默认为 10。最大重试次数。
重试之间的延迟时间越来越长。要配置回退时间,则使用
temporarilyUnavailableBackoffBaseMs
。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
要设置新值,则使用
db.adminCommand()
:db.adminCommand( { setParameter: 1, temporarilyUnavailableMaxRetries: 5 } ) 6.1.0 版本新增。
WiredTiger 参数
wiredTigerConcurrentReadTransactions
7.0 版本中的更改。
仅适用于
mongod
。类型:整型
默认值:128
从 MongoDB 7.0 开始,该参数可用于所有存储引擎。在之前的版本中,该参数仅可用于 WiredTiger 存储引擎。
指定存储引擎允许的并发读取事务(读取票证)的最大数量。
如果使用默认值,为优化性能,MongoDB 会动态调整票证数量,可能的最大值为 128。
从 MongoDB 7.0 开始,如果将
wiredTigerConcurrentReadTransactions
设置为非默认值,则会禁用动态调整并发存储引擎事务数量的算法。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
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
设置为非默认值,则会禁用动态调整并发存储引擎事务数量的算法。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
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
类型:布尔值
默认:false
注意
仅在 MongoDB Enterprise 和 MongoDB Atlas 中有用。
当
auditAuthorizationSuccess
为false
时,审核系统仅记录authCheck
的授权失败。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
要启用对授权成功的审核,则发出以下命令:
db.adminCommand( { setParameter: 1, auditAuthorizationSuccess: true } ) 启用
auditAuthorizationSuccess
比仅记录授权失败更能降低性能。如已启用运行时审核配置,则
auditAuthorizationSuccess
参数不应出现在mongod
或mongos
配置文件中。如果存在该参数,则服务器将无法启动。
auditConfigPollingFrequencySecs
版本 5.0 中的新增功能。
类型:整型
默认值:300
分片集群可能具有维护集群的审核配置设置的服务器。设置非配置服务器轮询配置服务器以获取当前审计生成的时间间隔(以秒为单位)。如果返回值与先前已知值不同,则发起节点将请求当前配置并更新其内部状态。
注意
使用默认值 300 秒,设置
auditConfig
集群参数后,非配置节点可能最多延迟 5 分钟。此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。
auditEncryptionHeaderMetadataFile
6.0 版本中的新功能。
类型:字符串
注意
仅在 MongoDB Enterprise 中可用。MongoDB Enterprise 和 Atlas 有不同的配置要求。
记录用于审核日志加密的元数据审核标头的路径和文件名。标头位于每个审核日志文件的顶部,包含用于解密审核日志的元数据。标题也会保存在审计日志中。
此参数仅在启动时可用。要设置该参数,请使用
setParameter
设置。例如,以下操作能设置
auditEncryptionHeaderMetadataFile
的路径和文件:mongod --setParameter auditEncryptionHeaderMetadataFile=/auditFiles/auditHeadersMetadataFile.log
auditEncryptKeyWithKMIPGet
6.0 版本中的新功能。
类型:布尔值
默认: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
当设置为
true
时,分片事务协调器向客户端返回多文档事务提交决策,但前提是对请求的事务写关注作出的决策持续有效。如果客户端请求的写关注小于
"majority"
,则在决策返回给客户端后,提交可能会回退。事务可能没有“读你所写”的一致性。也就是说,读取操作可能不会显示其之前的写入操作的结果。在以下情况下,可能会出现该问题:
事务必须写入多个分片。
读取和早期写入发生在不同会话中。
因果一致性仅确保同一会话中发生的读取与写入的因果关系。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例将
coordinateCommitReturnImmediatelyAfterPersistingDecision
设置为true
:mongod --setParameter coordinateCommitReturnImmediatelyAfterPersistingDecision=true 在运行期间,也可以使用
setParameter
命令设置该参数:db.adminCommand( { setParameter: 1, coordinateCommitReturnImmediatelyAfterPersistingDecision: true } )
internalSessionsReapThreshold
6.0 版本中的新功能。
默认值:1000
内部会话元数据删除的会话限制。元数据:
包含用户操作的会话事务信息。
存储在
config.transactions
集合中。
当内部会话数大于
internalSessionsReapThreshold
时,元数据将被删除。如果您将
internalSessionsReapThreshold
设置为0
,则仅在用户会话结束时才会删除内部会话元数据。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下示例将
internalSessionsReapThreshold
设置为500
会话:db.adminCommand( { setParameter: 1, internalSessionsReapThreshold: 500 } ) 您也可以在启动时设置
internalSessionsReapThreshold
。例如:mongod --setParameter internalSessionsReapThreshold=500
transactionLifetimeLimitSeconds
仅适用于
mongod
。默认:60
指定多文档事务的生命周期。超过此期限的事务将被视为已过期,并由定期清理进程进行中止。清理进程每
transactionLifetimeLimitSeconds
/2 秒运行一次,或至少每 60 秒运行一次。清理过程有助于缓解存储缓存压力。
transactionLifetimeLimitSeconds 的最小值为
1
秒。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下代码将
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
。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
有关 WiredTiger 存储的更多信息,请参阅:
storage.wiredTiger
选项。
maxTransactionLockRequestTimeoutMillis
仅适用于
mongod
。类型:整型
默认值:5
多文档事务在获取事务操作所需的锁时应等待的最大时间(以毫秒为单位)。
如果等待
maxTransactionLockRequestTimeoutMillis
后事务无法获取锁,则事务中止。默认情况下,多文档事务会等待
5
毫秒。也就是说,如果无法在5
毫秒内获取锁,则事务将中止。如果操作在锁定请求中提供了更长的超时时间,maxTransactionLockRequestTimeoutMillis
将覆盖特定操作的超时时间。可以将
maxTransactionLockRequestTimeoutMillis
设置为:0
这样,如果事务无法立即获取所需的锁,则事务将中止。大于
0
的数字,等待指定时间以获取所需的锁。这有助于避免瞬时并发锁获取(例如快速运行的元数据操作)导致的事务中止。但是,这可能会延迟死锁事务操作的中止。-1
使用特定于操作的超时。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下操作将
maxTransactionLockRequestTimeoutMillis
设置为20
毫秒:db.adminCommand( { setParameter: 1, maxTransactionLockRequestTimeoutMillis: 20 } ) 您也可以在启动时设置这个参数:
mongod --setParameter maxTransactionLockRequestTimeoutMillis=20
基于槽的执行参数
planCacheSize
6.3 版本中的新功能。
仅适用于
mongod
。类型:字符串
默认:5%
注意
尽管之前的 MongoDB 版本中也有
planCacheSize
参数,但在 6.3 之前的版本中,该参数对计划缓存没有影响。仅为基于槽的查询执行引擎设置计划缓存的大小。
您可以将
planCacheSize
值设置为以下任一值:分配给计划缓存的系统总物理内存百分比。例如:
"8.5%"
。分配给计划缓存的确切数据量(以
MB
或GB
为单位)。例如"100MB"
或"1GB"
。
增加计划缓存大小可为 查询规划 器添加更多缓存的 计划缓存查询形状 。这可以提高查询性能,但会增加内存使用量。
此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
以下启动命令将
planCacheSize
设置为 80 MB:mongod --setParameter planCacheSize="80MB" 您也可以在 MongoDB Shell 中使用
setParameter
命令:db.adminCommand( { setParameter: 1, planCacheSize: "80MB" } )