自管理部署的 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
默认:false
启用并发 LDAP 操作的性能。
注意
仅当您确定
libldap
实例在此模式下可以安全使用时,才可启用此标志。如果您使用的libldap
版本非安全线程,您可能会遇到 MongoDB 进程崩溃。必须使用
ldapForceMultiThreadMode
才能使用 LDAP 连接池。要启用 LDAP 连接池,请将ldapForceMultiThreadMode
和ldapUseConnectionPool
设置为true
。提示
如果您对 MongoDB 版本、OS 版本或 libldap 版本有任何疑问,请联系 MongoDB 支持。
ldapQueryPassword
类型:字符串
用于绑定到 LDAP 服务器的密码。您必须使用
ldapQueryUser
与此参数。如果未设置,mongod 或 mongos 不会尝试绑定到 LDAP 服务器。
ldapQueryUser
类型:字符串
绑定到 LDAP 服务器的用户。您必须使用
ldapQueryPassword
与此参数。如果未设置,mongod 或 mongos 不会尝试绑定到 LDAP 服务器。
ldapRetryCount
6.1 版本新增内容。
类型:整型
默认值: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
指定在连接 LDAP 服务器进行身份验证/授权时,MongoDB 是否应使用连接池化。
MongoDB 使用以下默认值:
在 Windows 上为 true。
在 Linux 上运行为 true:MongoDB Enterprise 二进制文件链接到
libldap_r
在 Linux 上运行为 false:MongoDB Enterprise 二进制文件链接到
libldap
您只能在启动期间设置
ldapUseConnectionPool
,但无法使用setParameter
数据库命令更改此设置。
ldapConnectionPoolUseLatencyForHostPriority
默认值:true
一个布尔值,用于确定 LDAP 连接池(请参阅
ldapUseConnectionPool
)是否应使用 LDAP 服务器的延迟来确定连接顺序(从最低延迟到最高延迟)。您只能在启动期间设置
ldapConnectionPoolUseLatencyForHostPriority
,并且不能在运行时使用setParameter
数据库命令更改此设置。
ldapConnectionPoolMinimumConnectionsPerHost
默认值:1
保持向 LDAP 服务器开放的最小连接数。
您只能在启动期间设置
ldapConnectionPoolMinimumConnectionsPerHost
,并且不能在运行时使用setParameter
数据库命令更改此设置。
ldapConnectionPoolMaximumConnectionsPerHost
从 MongoDB 版本 5.0.9 和 6.0.0 开始已更改 将默认值更改为
2147483647
。在之前的版本中,默认值未设置。默认值:2147483647
保持向 LDAP 服务器开放的最大连接数。
您只能在启动期间设置
ldapConnectionPoolMaximumConnectionsPerHost
,并且不能在运行时使用setParameter
数据库命令更改此设置。
ldapConnectionPoolMaximumConnectionsInProgressPerHost
从 MongoDB 版本 5.0.9 和 6.0.0 开始已更改 将默认值更改为
2
。在之前的版本中,默认值未设置。默认值:2
每个 LDAP 服务器正在进行的连接操作的最大数量。
您只能在启动期间设置
ldapConnectionPoolMaximumConnectionsInProgressPerHost
,但无法使用setParameter
数据库命令更改此设置。
ldapConnectionPoolHostRefreshIntervalMillis
默认值:60000
LDAP 连接池中进行运行状况检查之间的毫秒数。
您只能在启动期间设置
ldapConnectionPoolHostRefreshIntervalMillis
,但无法使用setParameter
数据库命令更改此设置。
ldapConnectionPoolIdleHostTimeoutSecs
默认值: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
版本 5.0 中的新增功能。
默认值:200
validate
命令的最大内存使用限制(以兆字节为单位)。如果超出限制,validate
会返回尽可能多的结果,并警告由于内存限制,可能无法报告所有损坏。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
oidcIdentityProviders
版本8.0中的更改:(同样适用于7.3和7.0版本)
在使用 OpenID Connect 身份验证时,请通过此参数指定身份提供商 (IDP) 配置。
oidcIdentityProviders
接受由零个或多个身份提供者 (IDP) 配置组成的数组。空数组(默认值)表示未启用 OpenID Connect 支持。当定义了多个 IDP 时,
oidcIdentityProviders
将使用matchPattern
字段选择一个 IDP。数组顺序决定了优先级,并且始终选择第一个 IDP。从MongoDB 8.0开始,定义多个身份提供程序 (IDP) 时,只要每个颁发者的
audience
值是唯一的,oidcIdentityProviders
参数就会接受重复的issuer
值。 7.3和7版本中也提供此功能。 0 。oidcIdentityProviders 字段
字段必要性类型说明issuer
必需字符串服务器应接受其令牌的 IDP 颁发者 URI。必须与用于身份验证的任何 JWT 中的
iss
字段匹配。从MongoDB 8.0开始,定义多个身份提供程序 (IDP) 时,只要每个颁发者的
audience
值是唯一的,oidcIdentityProviders
参数就会接受重复的issuer
值。 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
值的新证书。请参阅x 的滚动更新。 509在自管理集群上包含新 DN 的证书。有关会员证书要求的更多信息,请参阅会员证书要求了解详情。
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 MB 内存才能执行的管道阶段,默认会将临时文件写入磁盘。这些临时文件在管道执行期间持续存在,可能会影响实例上的存储空间。在 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
默认值:200
限制在索引构建期间,一个集合上并行构建索引可能消耗的内存量。指定的内存量将在使用单个
createIndexes
命令或其 shell 助手db.collection.createIndexes()
构建的所有索引之间共享。此参数在运行时和启动时均可用:
要在运行时设置参数,请使用
setParameter
命令要在启动时设置参数,请使用
setParameter
设置
索引构建消耗的内存与 WiredTiger 缓存内存是分开的(请参阅
cacheSizeGB
)。maxIndexBuildMemoryUsageMegabytes
对索引构建一次使用的内存量设置限制。当索引构建进程为索引键生成和排序时,这可能会影响性能。增加内存限制可提高索引构建期间的排序性能。索引构建可由用户命令(例如
createIndexes
)启动,也可以通过管理过程(例如初始同步)启动。二者均受到maxIndexBuildMemoryUsageMegabytes
设置的限制约束。初始同步一次只填充一个集合,没有超出内存限制的风险。但是,用户可以同时在多个数据库中的多个集合上启动索引构建,并且消耗的内存量可能会大于
maxIndexBuildMemoryUsageMegabytes
设置的限制。提示
为了最大限度减少在副本集和带有副本集分片的分片集群上构建索引的影响,使用滚动索引构建过程,如副本集上构建滚动索引中所述。
如果已经启动集合扫描,则更改
maxIndexBuildMemoryUsageMegabytes
不会影响正在进行的索引构建。但是,强制副本集重新配置会重新启动集合扫描并使用提供的最新maxIndexBuildMemoryUsageMegabytes
。对于特征兼容性版本 (fcv)
"4.2"
和更高版本,索引构建内存限制适用于所有索引构建。
reportOpWriteConcernCountersInServerStatus
默认: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 t