注意
从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>
参数
身份验证参数
allowRolesFromX509Certificates默认值:true
布尔值标志,允许或禁止从客户端 X.509 证书检索授权角色。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。
authenticationMechanisms指定服务器接受的身份验证机制列表。将其设置为以下一个或多个以下值。如果指定多个值,则使用逗号分隔的列表,并且不要使用空格。有关身份验证机制的说明,请参阅自管理部署上的身份验证。
值说明RFC 5802 使用 SHA-1 哈希函数的标准 Salted Challenge Response Authentication Mechanism
RFC 7677 使用 SHA-256 哈希函数的标准 Salted Challenge Response Authentication Mechanism
MongoDB TLS/SSL 证书身份验证。
GSSAPI (Kerberos)
使用 Kerberos 的外部身份验证。此机制仅在 MongoDB Enterprise 中可用。
PLAIN (LDAP SASL)
使用 LDAP 进行外部身份验证。您也可使用
PLAIN对数据库内用户进行身份验证。PLAIN以纯文本形式传输密码。此机制仅在 MongoDB Enterprise 中可用。OpenID Connect 是构建在 OAuth22 之上的身份验证层。此机制仅在 MongoDB Enterprise 中可用。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。例如,要将
PLAIN和SCRAM-SHA-256指定为身份验证机制,使用以下命令:mongod --setParameter authenticationMechanisms=PLAIN,SCRAM-SHA-256 --auth
authFailedDelayMs默认值:0
注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
通知客户端其身份验证尝试失败之前等待的毫秒数。该参数范围介于
0到5000之间(含)。设置此参数会使对数据库暴力登录攻击更加耗时。但是,等待 MongoDB Server 响应的客户端仍然会消耗服务器资源,并且如果服务器同时拒绝对多个其他客户端的访问,这可能会对良性登录尝试产生不利影响。
awsSTSRetryCount在版本 7.0 中进行了更改:(也从 6.0.7 和 5.0.18 开始)。
在上一个版本中,仅当服务器返回 HTTP 500 错误时,AWS IAM 身份验证才会重试。
类型:整型
默认值:2
对于使用Amazon Web Services IAM凭证或Amazon Web Services 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的详细信息,请参阅在自管理部署上为
mongodmongosTLS/SSL 配置 和 以及客户端的 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
JWKSMinimumQuiescePeriodSecs默认值:60 秒(1 分钟)
指定在给定 IdP 的
JWKSetURI端点的后续提取之间必须经过的最小时间段。如果在静默期内多次更改 RSA 公钥,则该密钥可能长达一分钟无法按预期工作,除非手动缩短静默期。如果该参数设立为零,则没有静默期,并且密钥可以重复刷新。此参数在初创企业和运行时都可用。要设立该参数,请使用
setParameter设置。
KeysRotationIntervalSec默认:7776000 秒(90 天)
指定 HMAC 签名密钥在轮换到下一个之前保持有效的秒数。该参数主要便于身份验证测试。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。
ldapConnectionPoolHostRefreshIntervalMillis仅适用于
mongod。默认值:60000
LDAP 连接池中进行运行状况检查之间的毫秒数。
您只能在启动期间设置
ldapConnectionPoolHostRefreshIntervalMillis,但无法使用setParameter数据库命令更改此设置。
ldapConnectionPoolIdleHostTimeoutSecs仅适用于
mongod。默认值:300
连接到 LDAP 服务器的池连接在关闭前保持空闲状态的最大秒数。
您只能在启动期间设置
ldapConnectionPoolIdleHostTimeoutSecs,但无法使用setParameter数据库命令更改此设置。
ldapConnectionPoolMaximumConnectionsInProgressPerHost仅适用于
mongod。从 MongoDB 版本 5.0.9 和 6.0.0 开始已更改 将默认值更改为
2。在之前的版本中,默认值未设置。默认值:2
每个 LDAP 服务器正在进行的连接操作的最大数量。
您只能在启动期间设置
ldapConnectionPoolMaximumConnectionsInProgressPerHost,但无法使用setParameter数据库命令更改此设置。
ldapConnectionPoolMaximumConnectionsPerHost仅适用于
mongod。从 MongoDB 版本 5.0.9 和 6.0.0 开始已更改 将默认值更改为
2147483647。在之前的版本中,默认值未设置。默认值:2147483647
保持向 LDAP 服务器开放的最大连接数。
您只能在启动期间设置
ldapConnectionPoolMaximumConnectionsPerHost,并且不能在运行时使用setParameter数据库命令更改此设置。
ldapConnectionPoolMinimumConnectionsPerHost仅适用于
mongod。默认值:1
保持向 LDAP 服务器开放的最小连接数。
您只能在启动期间设置
ldapConnectionPoolMinimumConnectionsPerHost,并且不能在运行时使用setParameter数据库命令更改此设置。
ldapConnectionPoolUseLatencyForHostPriority仅适用于
mongod。默认值:true
一个布尔值,用于确定 LDAP 连接池(请参阅
ldapUseConnectionPool)是否应使用 LDAP 服务器的延迟来确定连接顺序(从最低延迟到最高延迟)。您只能在启动期间设置
ldapConnectionPoolUseLatencyForHostPriority,并且不能在运行时使用setParameter数据库命令更改此设置。
ldapForceMultiThreadMode默认: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 服务器。
ldapRetryCount6.1 版本新增内容。
仅适用于
mongod。类型:整型
默认值:0
对于在自托管部署上使用 LDAP 授权的 MongoDB 部署。
在出现网络错误后服务器 LDAP 管理器重试的操作数。
例如,以下代码将
ldapRetryCount设置为3秒:mongod --ldapRetryCount=3 或者,如果使用
mongosh中的setParameter命令:db.adminCommand( { setParameter: 1, ldapRetryCount: 3 } )
ldapShouldRefreshUserCacheEntries5.2 版本中的新增功能。
仅适用于
mongod。类型:布尔值
默认值:true
对于在自托管部署上使用 LDAP 授权的 MongoDB 部署。
从 MongoDB 5.2 开始,从 LDAP 服务器检索的缓存用户信息的更新间隔取决于
ldapShouldRefreshUserCacheEntries:如果为 true,则使用
ldapUserCacheRefreshInterval。如果为 false,则使用
ldapUserCacheInvalidationInterval。
您只能在启动期间在
configuration file中或使用命令行上的--setParameter选项设置ldapShouldRefreshUserCacheEntries。例如,以下命令禁用ldapShouldRefreshUserCacheEntries:mongod --setParameter ldapShouldRefreshUserCacheEntries=false
ldapUseConnectionPool指定在连接 LDAP 服务器进行身份验证/授权时,MongoDB 是否应使用连接池化。
MongoDB 使用以下默认值:
在 Windows 上为 true。
在 Linux 上运行为 true:MongoDB Enterprise 二进制文件链接到
libldap_r在 Linux 上运行为 false:MongoDB Enterprise 二进制文件链接到
libldap
您只能在启动期间设置
ldapUseConnectionPool,但无法使用setParameter数据库命令更改此设置。
ldapUserCacheInvalidationInterval在 5.2 版本中进行了更改。
仅适用于
mongod。默认:30 秒
注意
从 MongoDB 5.2 开始,从 LDAP 服务器检索的缓存用户信息的更新间隔取决于
ldapShouldRefreshUserCacheEntries:如果为 true,则使用
ldapUserCacheRefreshInterval。如果为 false,则使用
ldapUserCacheInvalidationInterval。
用于在自管理部署上使用 LDAP 授权的 MongoDB 部署。
mongod实例在外部用户缓存刷新之间的等待间隔(以秒为单位)。MongoDB 刷新外部用户缓存后,下次 LDAP 授权用户发出操作时,MongoDB 会从 LDAP 服务器重新获取授权数据。增加指定的值会增加 MongoDB 和 LDAP 服务器不同步的时间,但会减少 LDAP 服务器的负载。相反,减少指定的值会减少 MongoDB 和 LDAP 服务器不同步的时间,但会增加 LDAP 服务器的负载。
ldapUserCacheRefreshInterval5.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 } )
ldapUserCacheStalenessInterval5.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 } )
maxValidateMemoryUsageMB仅适用于
mongod。版本 5.0 中的新增功能。
默认值:200
validate命令的最大内存使用限制(以兆字节为单位)。如果超出限制,validate会返回尽可能多的结果,并警告由于内存限制,可能无法报告所有损坏。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
ocspEnabled适用于 Linux 和 macOS。
默认值:true
启用或禁用 OCSP 的标志。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。例如,以下命令禁用 OCSP:
mongod --setParameter ocspEnabled=false ... 从 MongoDB 6.0 开始,如果在初始同步期间将
ocspEnabled设置为true,那么所有节点必须能够访问 OCSP 响应程序。如果节点在
STARTUP2状态下发生故障,则将tlsOCSPVerifyTimeoutSecs设置为小于5的值。
ocspStaplingRefreshPeriodSecs适用于 Linux。
刷新装订的 OCSP 状态响应之前等待的秒数。指定一个大于或等于 1 的数字。
您只能在启动期间在
configuration file中设置ocspStaplingRefreshPeriodSecs,或使用命令行上的--setParameter选项设置。例如,以下代码将该参数设置为 3600 秒:mongod --setParameter ocspStaplingRefreshPeriodSecs=3600 ... 从 MongoDB 5.0 开始,
rotateCertificates命令和db.rotateCertificates()方法也会刷新任何已装订 OCSP 响应。
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) 时,只要
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访问权限令牌指定一个
audienceoidcIdentityProviders字段。 包含空数组或包含多个字符串的数组的audience字段无效。如果定义了多个 IdP,则对于共享
issuer的每个配置,这必须是唯一值。requestScopesOptional
array[ string ]
principalNameOptional
字符串
从包含 MongoDB 用户标识符的访问令牌中提取的声明。
默认值为
sub(代表subject)。useAuthorizationClaimOptional
布尔
确定是否需要
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 角色名称的访问令牌中提取的声明。
logClaimsOptional
array[ string ]
完成身份验证后将包含在日志和审核消息中的访问令牌声明列表。
JWKSPollSecsOptional
整型
向 IdP请求更新的JSON Web 密钥集 (JWKS) 的频率(以秒为单位)。设置为 0 将禁用轮询。
如果定义了多个 IdP,则对于共享
issuer的每项配置,该值必须相同。supportsHumanFlowsOptional
bool
OIDC 提供商是否支持人工或机器工作流程。这会影响
clientId和matchPattern字段。您可能会发现,通过机器工作负载 IdP 将此字段设置为
false非常有用,这样就可以在不需要时省略clientId。默认值:
true版本 7.2 中的新增内容。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。
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 会使用ffdhe3072Diffie-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' ...
pessimisticConnectivityCheckForAcceptedConnections仅适用于 Linux
类型:布尔值
默认:false
当设置为
true时,指示服务器在处理已接受的连接之前检查连接情况,并立即丢弃客户端终止的连接。请考虑在较小的实例类型上启用此参数。在处理已在客户端关闭的新连接时,如果您希望容忍新连接建立时的少量延迟,来减少服务器工作负载,可以使用该功能。
saslauthdPath注意
仅适用于 MongoDB Enterprise(适用于 Windows 的 MongoDB Enterprise 除外)。
指定用于代理身份验证的
saslauthd实例的 Unix 域套接字的路径。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。
saslHostNamesaslHostName覆盖 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的详细信息,请参阅在自管理部署上为
mongodmongosTLS/SSL 配置 和 以及客户端的 TLS/SSL 配置。此参数仅在运行时可用。要设置参数,请使用
setParameter命令。db.adminCommand( { setParameter: 1, sslMode: "preferSSL" } ) 提示
tlsClusterAuthX509Override7.0 版本中的新增功能。
覆盖
clusterAuthX509配置选项。setParameter: tlsClusterAuthX509Override: "{ attributes: 'O=MongoDB, OU=MongoDB Server' }" 该参数支持
attributes和extensionValue覆盖项。当服务器验证来自成员的连接时,它会分析 X.509 证书以确定其是否属于集群成员。如果服务器使用
attributes设置或tlsClusterAuthX509Override参数上的attributes字段,它会检查证书的标识名 (DN) 值。如果设置了extensionValue设置或tlsClusterAuthX509Override参数的extensionValue字段,它会检查证书的扩展值。如果它找到了匹配项,便会授权该连接为对等互连。当新证书具有不同的属性或扩展名值时,使用此参数可以轮换证书。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。
tlsMode设置为:
preferTLSrequireTLS
tlsMode参数在滚动升级到 TLS/SSL 期间非常有用,可最大限度地减少停机时间。此参数仅在运行时可用。要设置参数,请使用
setParameter命令。db.adminCommand( { setParameter: 1, tlsMode: "preferTLS" } ) 有关 TLS/SSL 和MongoDB的详细信息,请参阅在自管理部署上为
mongodmongosTLS/SSL 配置 和 以及客户端的 TLS/SSL 配置。提示
tlsOCSPStaplingTimeoutSecs适用于 Linux。
mongod/mongos实例等待接收其证书的 OCSP 状态响应的最大秒数。指定一个大于或等于 (
>=) 1 的整数。如果未设置,tlsOCSPStaplingTimeoutSecs将使用tlsOCSPVerifyTimeoutSecs值。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。例如,以下代码将
tlsOCSPStaplingTimeoutSecs设置为 20 秒:mongod --setParameter tlsOCSPStaplingTimeoutSecs=20 ...
tlsOCSPVerifyTimeoutSecs适用于 Linux 和 Windows。
默认值:5
mongod/mongos在验证服务器证书时应等待 OCSP 响应的最大秒数。指定一个大于或等于 (
>=) 1 的整数。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。例如,以下代码将
tlsOCSPVerifyTimeoutSecs设置为 20 秒:mongod --setParameter tlsOCSPVerifyTimeoutSecs=20 ...
tlsUseSystemCA仅适用于
mongod。类型:布尔值
默认:false
指定 MongoDB 是否加载已提供给操作系统的证书颁发机构的 TLS 证书。
重要
在启动启用了 TLS/SSL 的
mongod实例时,您必须指定--tlsCAFile标记、net.tls.CAFile配置选项或tlsUseSystemCA参数的值。--tlsCAFile、tls.CAFile和tlsUseSystemCA是互斥的。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。例如,要将
tlsUseSystemCA设置为true:mongod --setParameter tlsUseSystemCA=true 有关 TLS/SSL 和MongoDB的详细信息,请参阅在自管理部署上为
mongodmongosTLS/SSL 配置 和 以及客户端的 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值的新证书。请参阅在自管理集群上轮换不含 clusterAuthX509 属性的 x.509 证书。有关会员证书要求的更多信息,请参阅会员证书要求了解详情。
tlsX509ExpirationWarningThresholdDays默认值:30
mongodmongos如果提供的 X.509 证书在30mongod/mongos系统时钟的 天内过期,tlsX509ExpirationWarningThresholdDays/ 会记录连接警告。使用 参数控制证书过期警告阈值:增加参数值以在证书到期日期之前触发警告。
减小参数值可在接近证书到期日期时触发警告。
将参数设置为
0以禁用警告。
该参数的最小值为
0。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。有关 x.509 证书有效性的更多信息,请参阅 RFC 5280 4.1.2.5.
userCacheInvalidationIntervalSecs仅适用于
mongos。默认值:30
在
mongos实例上,指定mongos实例检查以确定用户对象的内存缓存是否有过时数据的间隔(以秒为单位),如有,则清除缓存。如果用户对象没有任何更改,则mongos将不会清除缓存。此参数的最小值为
1秒,最大值为86400秒(24 小时)。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
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 } )
connPoolMaxConnsPerHost默认值:200
为传出连接至全局连接池的其他
mongod实例设置旧版连接池的最大大小。池的大小不会阻止创建额外的连接,但会阻止连接池保留超过connPoolMaxConnsPerHost值的连接。注意
该参数与 TaskExecutor 池中的连接分开。请参阅
ShardingTaskExecutorPoolMaxSize。仅当您的驱动程序不使用连接池且您在分片集群的环境下使用身份验证时,才调整此设置。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。mongod --setParameter connPoolMaxConnsPerHost=250
connPoolMaxInUseConnsPerHost为传出连接至传统全局连接中的其他
mongod实例设置给定时间内正在使用的最大连接数。默认情况下,该参数未设置。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。mongod --setParameter connPoolMaxInUseConnsPerHost=100
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 仅在游标未关联会话时才会在达到
cursorTimeoutMillis阈值后清理孤立游标。对于关联会话的游标,MongoDB 会依据
localLogicalSessionTimeoutMinutes生命周期来清理游标,而无论cursorTimeoutMillis值如何。要处理长时间空闲的情况,请使用Mongo.startSession(),并使用refreshSessions命令刷新会话。有关详细信息,请参阅使用refreshSessions刷新游标。
fassertOnLockTimeoutForStepUpDown5.3 版本中的新增功能。
默认值:15 秒
允许接收请求的服务器升级或降级,以在超时期间无法响应时(例如由于服务器磁盘故障)终止操作。这使集群能够成功选举出新的主节点和,从而继续保持可用性。
fassertOnLockTimeoutForStepUpDown默认为 15 秒。要禁用节点快速插入,请设置fassertOnLockTimeoutForStepUpDown=0。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
以下示例禁用节点快速插入:
mongod --setParameter fassertOnLockTimeoutForStepUpDown=0
globalConnPoolIdleTimeoutMinutes设置传统全局连接池中的连接在关闭之前可以保持空闲状态的时间限制。
默认情况下,该参数未设置。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。mongos --setParameter globalConnPoolIdleTimeoutMinutes=10
httpVerboseLogging在 Linux 和 macOS 上为 curl 添加了更详细的跟踪。对 Windows 没有影响。
默认情况下,该参数未设置。
此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
mongos --setParameter httpVerboseLogging=true
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
indexMaxNumGeneratedKeysPerDocument5.3 版本中的新增功能。
默认值:100000
限制为文档生成的最大键数,以防止出现内存不足错误。可以提高限制,但是如果某个操作需要的键数超过
indexMaxNumGeneratedKeysPerDocument参数指定的键数,则操作将失败。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。
ingressAdmissionControllerTicketPoolSize仅适用于
mongod。默认值:
1000000控制入口队列同时允许的最大操作数。
1000000的默认值表示无界的数值等效值,它允许所有传入操作,直到 MongoDB 允许的默认最大连接数。在队列中有操作等待的情况下,增加该值可在新池大小允许的范围内解锁尽可能多的操作。减小该值不会阻止任何当前正在执行的操作,但传入的可控操作会被阻止,直到有工单可用。
mongod --setParameter ingressAdmissionControllerTicketPoolSize=100000 警告
除非得到 MongoDB 工程师的指示,否则请避免修改
ingressAdmissionControllerTicketPoolSize。此设置对 WiredTiger 和 MongoDB 都有重大影响。
ingressConnectionEstablishmentRateLimiterEnabled"版本 8.2 新增内容:(也适用于 8.1.1 和 8.0.12)"
类型:布尔值
默认值:
false确定是否启用了新连接建立的速率限制。启用后,MongoDB 会应用速率限制来控制每秒可建立的新连接数量。
此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
ingressConnectionEstablishmentRatePerSec"版本 8.2 新增内容:(也适用于 8.1.1 和 8.0.12)"
类型:int32
默认值:已禁用
最低: 1
指定在启用速率限制时,每秒可以建立的最大新连接数。
此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
ingressConnectionEstablishmentBurstCapacitySecs"版本 8.2 新增内容:(也适用于 8.1.1 和 8.0.12)"
类型:double
默认值:已禁用
最低: 1
描述服务器在开始限制速率之前可以允许多少秒的连接建立。这使服务器能够处理超过
ingressConnectionEstablishmentRatePerSec指定速率限制的临时突发连接请求。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
ingressConnectionEstablishmentMaxQueueDepth"版本 8.2 新增内容:(也适用于 8.1.1 和 8.0.12)"
类型:int32
默认:
0(已禁用)指定连接建立队列中最大连接尝试次数。当队列达到此连接尝试次数时,服务器将拒绝新的连接尝试。
默认值
0表示服务器会拒绝所有需要排队等待建立的连接。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
ingressConnectionEstablishmentRateLimiterBypass"版本 8.2 新增内容:(也适用于 8.1.1 和 8.0.12)"
类型:字符串数组
默认值:
[]提供服务器必须豁免连接建立速率限制的 IP 地址和 CIDR 范围的列表。这允许特定的受信任客户端绕过速率限制。
此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
maxIndexBuildMemoryUsageMegabytes仅适用于
mongod。Default (absolute): 200Minimum (absolute): 50Maximum (percent): 0.8限制在一个集合上同时构建索引时可能消耗的内存量。指定的内存量将在使用单个
createIndexes命令或其Shell 助手db.collection.createIndexes()构建的所有索引之间共享。当索引构建进程生成索引键并对其进行排序时,增加该限制可提高排序性能。索引构建消耗的内存与WiredTiger缓存内存是分开的(请参阅cacheSizeGB)。将此值设置为 0-0.8,以将构建限制为内存百分比。
将此值设置为 1.0 或更大,以将构建的绝对数限制为兆字节数。
如果此设置分配的空间少于 50 MB,
mongod将至少使用 50 MB。如果百分比设置大于 0.8,则mongod最多使用 80% 的可用内存。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
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。防止在可以使用索引(无论是否存在)的情况下运行某些集合扫描。若为
true,MongoDB 将不会执行需要集合扫描的查询,并将返回错误。排除项包括没有过滤器的查询和针对固定大小集合(如 oplog)的查询。考虑以下将
notablescan设置为true或 true 的示例:db.adminCommand( { setParameter: 1, notablescan: true } ) 将
notablescan设置为true可用于测试应用程序查询,例如,用于识别扫描整个集合且不能使用索引的查询。要在没有
notablescan的情况下检测未编制索引的查询,请考虑阅读分析查询性能部分并使用logLevel参数、mongostat和分析。不要使用
notablescan运行生产mongod实例,因为阻止集合扫描可能会影响所有数据库中的查询,包括管理查询。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
注意
notablescan不允许使用集群索引的无界查询,因为这些查询需要完整的集合扫描。有关更多信息,请参阅集合扫描。
reportOpWriteConcernCountersInServerStatus仅适用于
mongod。默认:false
一个布尔类型标志,用于确定
db.serverStatus()方法和serverStatus命令是否返回opWriteConcernCounters信息。[1]mongod --setParameter reportOpWriteConcernCountersInServerStatus=true [1] 启用 reportOpWriteConcernCountersInServerStatus会对性能产生负面影响,特别是在不使用 TLS 的情况下。
slowConnectionThresholdMillis6.3 版本中的新功能。
默认值:100
设置时间限制(以毫秒为单位),以记录服务器慢速连接的建立。
如果建立连接的时间比
slowConnectionThresholdMillis参数长,则会在日志中添加一个事件,并将消息msg字段设置为"Slow connection establishment"。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
以下示例将
slowConnectionThresholdMillis设置为250毫秒。mongod --setParameter slowConnectionThresholdMillis=250 或者,如果使用
mongosh中的setParameter命令:db.adminCommand( { setParameter: 1, slowConnectionThresholdMillis: 250 } )
警告
tcmallocAggressiveMemoryDecommit 在 8.0 中已被弃用。MongoDB 8.0 使用更新版本的 tcmalloc 来改善内存碎片和管理。有关更多信息,请参阅 tcmalloc 升级。要将内存释放回操作系统,请考虑改用 tcmallocEnableBackgroundThread。
tcmallocEnableBackgroundThread8.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 仍会释放内存。从MongoDB8.0 开始,由于
tcmallocReleaseRate0tcmalloc升级优先考虑 CPU 性能而非内存发布, 的默认值减少为 。在早期版本中, MongoDB使用旧版本的
tcmalloc:将默认
tcmallocReleaseRate设置为1。tcmallocReleaseRate的可接受值介于0和10(含)之间。
重要
如果您在使用
tcmalloc-gperf的平台(例如Windows 、PPC 或 s390x)上运行MongoDB ,则tcmallocReleaseRate的行为与早期MongoDB版本相同。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
要在运行期间修改发布率,可以使用
setParameter命令。示例:db.adminCommand( { setParameter: 1, tcmallocReleaseRate: 2097152 } ) 您也可以在启动时设置
tcmallocReleaseRate,例如:mongod --setParameter "tcmallocReleaseRate=2097152"
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设置。
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设置。提示
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 索引。
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会返回错误。
记录参数
enableDetailedConnectionHealthMetricLogLines7.0 版本中的新增功能。
类型:布尔值
默认值:true
决定是否启用与集群连接运行状况指标相关的特定日志消息。如果将
enableDetailedConnectionHealthMetricLogLines设置为false,则会关闭以下日志消息,但 MongoDB 仍会收集有关集群连接运行状况指标的数据:日志消息说明已接受来自对等方的 TLS 连接
指示服务器在与已接受的入口连接的 TLS 握手期间成功解析了对等证书。
入口 TLS 握手已完成
指示与入口连接的 TLS 握手已完成。
你好,已完成
指示传入客户端连接上的初始连接握手已完成。
MongoDB 仅使用第一个
hello命令显示日志消息。身份验证指标报告
指定身份验证对话中某一步骤的完成时间。
自会话启动或身份验证握手以来,在入口连接上收到了第一条命令
指示入口连接接收到第一条不属于握手的命令。
网络响应发送时间慢
表示通过入口连接将响应发送回客户端所花费的时间(以毫秒为单位)超过了
slowMS服务器参数定义的时长。已完成 OCSP 请求的客户端验证
在建立出口 TLS 连接时,如果对等方没有在 TLS 握手中包含一个 OCSP 响应,那么服务器必须向证书颁发机构发送一个 OCSP 请求。当证书颁发机构收到 OCSP 响应时,MongoDB 会写入这条日志消息。
连接建立缓慢
表示通过入口连接将响应发送回客户端所需的时间超过使用
slowConnectionThresholdMillis参数指定的阈值。当连接建立超时时, MongoDB也会发出此日志消息。等待获取连接时操作超时
表示操作在等待获取出口连接时超时。
已获取远程操作连接并完成线路写入
表示服务器花费了一毫秒或更长的时间在出口连接上写入传出请求,从连接建立的瞬间开始计算。
此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
logComponentVerbosity默认值:0
设置日志消息的各种组件的详细程度。详细程度决定 MongoDB 输出的信息和调试消息的数量。[2]
详细程度级别的范围可以从
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(),用于设置单个组件的日志级别。有关设置日志详细程度级别的各种方法,请参阅配置日志详细程度级别。[2] 从版本 4.2 开始,MongoDB 在日志消息中包含调试详细级别(1 至 5 级)。例如,如果详细级别为 2,则 MongoDB 记录 D2。在以前版本中,MongoDB 日志消息仅为调试级别指定D。
logLevel默认值:0(仅供参考)
指定一个介于
0和5之间的整数,表示日志记录的详细程度,其中5为最详细。[3]此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
以下示例将
logLevel设置为2:db.adminCommand( { setParameter: 1, logLevel: 2 } ) [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
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 } )
redactEncryptedFields6.1.0 版本新增。
类型:布尔值
默认值:
true配置
mongod和mongos以编辑所有日志消息中加密的Binary数据的字段值。如果
redactClientLogData参数或security.redactClientLogData设置已设置为false,redactEncryptedFields已设置为true(默认值),则会从所有日志消息中编辑加密字段。如果
redactClientLogData参数或security.redactClientLogData设置已设置为true,则无论redactEncryptedFields设置如何,所有字段都将被编辑。
此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
suppressNoTLSPeerCertificateWarning类型:布尔值
默认:false
默认情况下, 启用 TLS/SSL 并且
net.ssl.allowConnectionsWithoutCertificates:true的mongod或mongos允许客户端在不提供证书验证的情况下进行连接,同时记录警告。将suppressNoTLSPeerCertificateWarning设置为1或true,以抑制这些警告。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。以下操作将
suppressNoTLSPeerCertificateWarning设置为true:db.adminCommand( { setParameter: 1, suppressNoTLSPeerCertificateWarning: true} )
traceExceptions配置
mongod记录每个数据库和套接字 C++ 异常的完整源代码堆栈跟踪,以用于调试。若为true,mongod将记录完整的堆栈跟踪。此参数仅在运行时可用。要设置参数,请使用
setParameter命令。考虑以下示例,其中将
traceExceptionstrue设置为:db.adminCommand( { setParameter: 1, traceExceptions: true } )
诊断参数
为了方便 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 工程师出于特定诊断目的请求修改时,才需要修改这些值。
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类型:整型
默认值:
250(分片集群中为500)指定
diagnostic.data目录的最大大小(以兆字节为单位)。如果目录大小超过这个数字,目录中最早的诊断文件将根据文件名中的时间戳自动删除。在 8.0 版中更改:对于分片集群中使用的
mongos和mongod实例,diagnosticDataCollectionDirectorySizeMB的默认值为 400 MB。在副本集中使用或用作独立服务器的mongod实例的默认值为 200 MB。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
例如,以下操作将目录的最大大小设置为
250兆字节:mongod --setParameter diagnosticDataCollectionDirectorySizeMB=250 diagnosticDataCollectionDirectorySizeMB的最小值为10MB。diagnosticDataCollectionDirectorySizeMB必须大于最大诊断文件大小diagnosticDataCollectionFileSizeMB。
diagnosticDataCollectionEnabled类型:布尔值
默认值:true
确定是否能够基于诊断目的收集和记录数据。默认情况下启用诊断日志记录。
此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
例如,以下命令禁用诊断集合:
mongod --setParameter diagnosticDataCollectionEnabled=false
diagnosticDataCollectionFileSizeMB类型:整型
默认值:10
指定每个诊断文件的大小(以兆字节为单位)。如果文件超过最大文件大小,则 MongoDB 将创建新文件。
此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
例如,以下操作将每个诊断文件的最大大小设置为
20兆字节:mongod --setParameter diagnosticDataCollectionFileSizeMB=20 diagnosticDataCollectionFileSizeMB的最小值为1MB。
diagnosticDataCollectionPeriodMillis类型:整型
默认值:1000
指定收集诊断数据的时间间隔(以毫秒为单位)。
此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
例如,以下操作将时间间隔设置为
5000毫秒或 5 秒:mongod --setParameter diagnosticDataCollectionPeriodMillis=5000 diagnosticDataCollectionPeriodMillis的最小值为100毫秒。
复制性和一致性
allowMultipleArbiters5.3 版本中的新增功能。
仅适用于
mongod。类型:布尔值
默认:false
指定副本集是否允许使用多个仲裁节点。
不建议使用多个仲裁节点:
多个仲裁节点会使多数写关注的使用不可靠。MongoDB 在计算成员多数时对仲裁节点进行计数,但仲裁节点不会存储数据。通过包含多个仲裁节点,大多数写入操作有可能在写入复制到大多数承载节点之前返回成功。
即使副本集没有足够的从节点用于数据复制,多个仲裁节点也允许副本集接受写入。
有更多信息,请参阅对多个仲裁节点的关注。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。mongod --setParameter allowMultipleArbiters=true
connectTimeoutMs类型:整型
默认值:10000
设置副本集监控器的连接超时时间(以毫秒为单位)。
此参数仅在启动时可用。如果您设置此参数,则其值必须大于或等于 500。
以下示例会将
mongod实例的connectTimeoutMs设为 700 毫秒:mongod --setParameter connectTimeoutMs=700
createRollbackDataFiles仅适用于
mongod。类型:布尔值
默认值:true
确定 MongoDB 是否创建包含回滚期间受影响的文档的回滚文件的标志。
默认情况下,
createRollbackDataFiles是true,MongoDB 会创建回滚文件。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
以下示例将
createRollbackDataFiles设置为 false,这样就不会创建回滚文件:mongod --setParameter createRollbackDataFiles=false 在运行期间,也可以使用
setParameter命令设置该参数:db.adminCommand( { setParameter: 1, createRollbackDataFiles: false } ) 更多信息,请参阅收集回滚数据。
disableSplitHorizonIPCheck5.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
enableFlowControl类型:布尔值
默认值:true
启用或禁用控制主节点应用其写入操作的速率,以便将从节点成员的
majority committed延迟保持在可配置的最大值以下。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
enableOverrideClusterChainingSetting5.0.2 版本新增。
类型:布尔值
默认:false
如果
enableOverrideClusterChainingSetting为true,则副本集从节点成员也可以从其他从节点成员复制数据,即使settings.chainingAllowed为false。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。例如,要将
mongod实例的enableOverrideClusterChainingSetting设置为true:mongod --setParameter enableOverrideClusterChainingSetting=true
flowControlTargetLagSeconds类型:整型
默认值:10
使用流量控制运行时的目标最大
majority committed延迟。启用流量控制后,该机制会尝试将majority committed延迟保持在指定秒数以下。 若已禁用流量控制,则该参数无效。指定值必须大于 0。
一般来说,默认设置应该足够使用;但是,如果要修改默认值,减小值而不是增大值可能会更有用。
此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
flowControlWarnThresholdSeconds类型:整型
默认值:10
一旦流控制机制检测到多数提交点未移动,等待记录警告的时间。
指定值必须大于或等于0,其中 0 为禁用警告。
此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
heartBeatFrequencyMs类型:整型
默认值:10000
将
replicaSetMonitorProtocol设为'sdam'时,heartBeatFrequencyMs可决定在各hello请求之间需等待多长时间(以毫秒为单位)。将
replicaSetMonitorProtocol设为'streamable'时,heartBeatFrequencyMs可决定在各hello往返时间 (RTT) 测量之间需等待多长时间(以毫秒为单位)。RTT 测量可用于服务器选择。此参数仅在启动时可用。如果您设置此参数,则其值必须大于或等于 500。
以下示例将
heartBeatFrequencyMs在mongod实例中设置为 700 毫秒:mongod --setParameter heartBeatFrequencyMs=700
initialSyncIndexBuildMemoryPercentage8.2版本新增。
仅适用于
mongod。类型:double
默认值:10.0
MongoDB在初始同步期间为索引构建分配的系统内存百分比。使用的系统内存量受
initialSyncIndexBuildMemoryMinMB和initialSyncIndexBuildMemoryMaxMB值的限制。您可以指定一个介于
0.0和80.0(含)之间的值。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
示例,要将
initialSyncIndexBuildMemoryPercentagemongod实例的 设立为40 %:mongod --setParameter initialSyncIndexBuildMemoryPercentage=40
initialSyncIndexBuildMemoryMaxMB8.2版本新增。
仅适用于
mongod。类型:整型
默认值:16384
MongoDB在初始同步期间可用于索引构建的最大系统内存量(以兆字节为单位)。
您可以指定一个介于
50和10000000之间的值。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
示例,要将
initialSyncIndexBuildMemoryMaxMBmongod实例的 设立为20000 MB:mongod --setParameter initialSyncIndexBuildMemoryMaxMB=20000
initialSyncIndexBuildMemoryMinMB8.2版本新增。
仅适用于
mongod。类型:整数
默认值:200
MongoDB在初始同步期间可用于索引构建的最小系统内存量(以兆字节为单位)。
您可以指定一个介于
50和10000000之间的值。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
示例,要将
initialSyncIndexBuildMemoryMinMBmongod实例的 设立为60 MB:mongod --setParameter initialSyncIndexBuildMemoryMinMB=60
initialSyncMethod5.2 版本中的新增功能。
仅适用于
mongod。类型:字符串
默认值:
logical仅在 MongoDB Enterprise 中可用。
用于初始同步的方法。
设置为
logical以使用逻辑初始同步。设置为fileCopyBased以使用基于文件副本的初始同步。此参数仅影响指定该参数的成员的同步方法。在单个副本集成员上设置此参数不会影响任何其他副本集成员的同步方法。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。
initialSyncSourceReadPreference仅适用于
mongod。类型:字符串
执行初始同步的首选来源。指定以下任何一个读取偏好模式:
primaryPreferred(投票副本集成员的默认值)nearest(新增或无投票权的副本集成员的默认值)
如果副本集已禁用
chaining,则默认initialSyncSourceReadPreference读取偏好模式为primary。无法为
initialSyncSourceReadPreference指定标签集或maxStalenessSeconds。如果
mongod无法根据指定的读取偏好(read preference)找到同步源,则会在日志中记录错误并重新启动初始同步过程。如果在10次尝试后无法完成初始同步过程,mongod将会退出并显示错误。有关同步源选择的更多信息,请参阅初始同步源选择。在选择初始同步源时,
initialSyncSourceReadPreference优先于复制集的settings.chainingAllowed设置。副本集成员成功完成初始同步后,在选择复制同步源时会延迟chainingAllowed的值。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。
initialSyncTransientErrorRetryPeriodSeconds类型:整型
默认值:86400
被临时网络错误中断时,从节点执行初始同步以尝试恢复该过程的时间(以秒为单位)。默认值相当于 24 小时。
此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
localLogicalSessionTimeoutMinutes类型:整型
默认值:30
警告
仅用于测试目的
此参数仅用于测试目的,不适用于生产用途。
会话在最近一次使用后保持活动状态的时间(以分钟为单位)。未从客户端收到新的读/写操作或未在此阈值内使用
refreshSessions刷新的会话将从缓存中清除。与过期会话相关的状态可随时被服务器清理。该参数仅适用于设置该参数的实例。要在副本集和分片集群上设置该参数,您必须在每个成员上指定相同的值;否则,会话将无法正常运行。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。例如,要将测试
mongod实例的localLogicalSessionTimeoutMinutes设置为 20 分钟:mongod --setParameter localLogicalSessionTimeoutMinutes=20
localThresholdMs类型:整型
默认:15
定义服务器选择中所用延迟窗口的长度(以毫秒为单位)。
此参数仅在启动时可用。如果您设置此参数,则其值必须大于或等于 0。
以下示例会将
mongod实例的localThresholdMs设为 20 毫秒:mongod --setParameter localThresholdMs=20
logicalSessionRefreshMillis类型:整型
默认值:300000(5 分钟)
缓存根据主会话存储刷新其逻辑会话记录的时间间隔(以毫秒为单位)。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。例如,要将
mongod实例的logicalSessionRefreshMillis设置为 10 分钟:mongod --setParameter logicalSessionRefreshMillis=600000
maxAcceptableLogicalClockDriftSecs类型:整型
默认值:31536000(1 年)
当前集群时间可以提前的最大值;具体来说,
maxAcceptableLogicalClockDriftSecs是集群时间的新值与当前集群时间之间的最大差值。集群时间是用于操作排序的逻辑时间。如果新的集群时间与当前集群时间相差超过
maxAcceptableLogicalClockDriftSecs,那么您无法将集群时间提前到新值。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。例如,要将
mongod实例的maxAcceptableLogicalClockDriftSecs设置为 15 分钟:mongod --setParameter maxAcceptableLogicalClockDriftSecs=900
maxNumSyncSourceChangesPerHour版本 5.0 中的新增功能。
类型:整型
默认值:3
每次更新同步源以及每次节点获取一批 oplog 条目时都会对同步源进行求值。如果一小时内源更改次数超过
maxNumSyncSourceChangesPerHour,则该节点将暂时停止对该同步源进行求值。如果该参数设置较高,则该节点可能会进行不必要的源更改。如果一个节点没有同步源,此参数不会阻止该节点从另一个节点开始同步。如果同步源无效,该节点将重新求值。同样,如果主节点发生变化并且链接被禁用,则该节点将更新以从新的主节点同步。
此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
maxSessions类型:整型
默认值:1000000
可以缓存的最大会话数。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。例如,要将
mongod实例的maxSessions设置为 1000:mongod --setParameter maxSessions=1000
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是分开的。targetedMirroring包含用于配置如何针对特定节点进行缓存预热的字段。有关定向镜像的更多信息,请参阅定向镜像读。
包括以下字段:
tag默认为空
BSONObj。可用于确定镜像节点的副本集标签。您可以使用以下语法为节点配置定向节点:tag: { "<tag1>": "<string1>" }您只能提供一个标签。同一副本集具有这些标签的所有节点都会成为攻击目标。
samplingRate类型:浮点
范围:
0.0到1.0(含)将目标读取镜像到托管或多个主机的速率。速率为
0.0表示不镜像任何读取,速率为1.0表示对所有读取进行镜像。虽然samplingRate默认为0.01,但targetedMirroring功能默认关闭,因为tag字段默认为空。maxTimeMS类型:int
镜像读取超时前的最长时间(以毫秒为单位)。
maxTimeMS的最小值为0。默认为1000。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
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 } } )
mirrorReadsMaxConnPoolSize8.2版本新增。
类型:int
默认值:4
控制镜像池中的最大连接数。此参数会影响一般镜像读和定向镜像读。
mirrorReadsMaxConnPoolSize的最小值为 1。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
oplogBatchDelayMillis6.0 版本中的新功能。
类型:整型
默认值:0
从节点上延迟应 oplog 操作批处理的毫秒数。默认情况下,
oplogBatchDelayMillis为0,表示会立即应用 oplog 批处理。若没有延迟,MongoDB 可能会将频繁、小批量的 oplog 应用于从节点。增大
oplogBatchDelayMillis会导致 MongoDB 在从节点上应用 oplog 批处理的频率下降,并且每次批处理包含更多的数据。这样会导致从节点上的 IOPS 减小,但带有写关注"majority"的写入操作的延迟会增加。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。例如,运行以下命令将
mongod实例的oplogBatchDelayMillis设置为 20 毫秒:mongod --setParameter oplogBatchDelayMillis=20
oplogFetcherUsesExhaust仅适用于
mongod。类型:布尔值
默认值:true
启用或禁用流复制。将值设置为
true以启用流复制。将值设置为
false以禁用流复制。如已禁用,从节点会通过发送请求至 sync from 源并等待响应来获取一批 oplog 条目。这需要针对每批 oplog 条目进行一次网络往返。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。
oplogInitialFindMaxSeconds仅适用于
mongod。类型:整型
默认:60
数据同步期间副本集节点等待
find命令完成的最长时间(以秒为单位)。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
periodicNoopIntervalSecs仅适用于
mongod。类型:整型
默认值:10
在每个单独的节点上写入 noop 之间的持续时间(以秒为单位)。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。注意
要为 MongoDB Atlas 集群修改此值,则须联系 Atlas 支持。
以下示例在启动时将
periodicNoopIntervalSecs设置为 1 秒:mongod --setParameter periodicNoopIntervalSecs=1
replBatchLimitBytesDefault: 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 } )
replicaSetMonitorProtocol类型:字符串
默认值:“streamable”
确定要使用哪个副本集监控协议。您可将此参数设为
"streamable",而它符合服务器发现和监控 (SDAM) 规范,并允许持续发出hello请求。您也可将此参数设为"sdam",而它符合 SDAM 规范。此参数仅在启动时可用。
以下示例会在
mongod实例上将replicaSetMonitorProtocol设为"sdam":mongod --setParameter replicaSetMonitorProtocol='sdam'
replWriterMinThreadCount版本 5.0 中的新增功能。
仅适用于
mongod。类型:整型
默认值:0
用于并行应用复制操作的最小线程数。值的范围可以从 0 到 256(含)。您只能在启动时设置
replWriterMinThreadCount,但无法使用setParameter命令更改此设置。复制操作的并行应用最多使用
replWriterThreadCount个线程。如果replWriterMinThreadCount配置的值小于replWriterThreadCount,则线程池将超时空闲线程,直到线程池中的线程总数等于replWriterMinThreadCount为止。replWriterMinThreadCount配置的值必须小于或等于replWriterThreadCount。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。
replWriterThreadCount仅适用于
mongod。类型:整型
默认值:16
用于并行应用复制操作的最大线程数。值的范围可以从 1 到 256(包含)。但是,所使用的最大线程数的上限为可用内核数的两倍。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。
rollbackTimeLimitSecs仅适用于
mongod。类型:64 位整数
默认值:86400(1 天)
可回滚数据的最长期限。该参数的负值无效。
如果待回滚实例的 oplog 结束到公共点(源节点和待回滚节点拥有相同数据的最后一个点)后的第一次操作之间的时间超过该值,则回滚将失败。
要实现无限回滚期,将值设置为
2147483647,这是允许的最大值,大致相当于 68 年。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
TransactionRecordMinimumLifetimeMinutes仅适用于
mongod。类型:整型
默认值:30
事务记录在符合清理条件之前存在于
transactions集合中的最小生命周期。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。例如,要将
mongod实例的TransactionRecordMinimumLifetimeMinutes设置为 20 分钟:mongod --setParameter TransactionRecordMinimumLifetimeMinutes=20
waitForSecondaryBeforeNoopWriteMS仅适用于
mongod。类型:整型
默认值:10
如果
afterClusterTime大于 oplog 的上次应用时间,则从节点必须等待的时长(以毫秒为单位)。经过waitForSecondaryBeforeNoopWriteMS后,如果afterClusterTime仍然大于上次应用时间,则从节点执行无操作写入,以提前上次应用时间。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
以下示例将
waitForSecondaryBeforeNoopWriteMS设置为 20 毫秒:mongod --setParameter waitForSecondaryBeforeNoopWriteMS=20 在运行期间,也可以使用
setParameter命令设置该参数:db.adminCommand( { setParameter: 1, waitForSecondaryBeforeNoopWriteMS: 20 } )
分片参数
analyzeShardKeyCharacteristicsDefaultSampleSize7.0 版本中的新增功能。
仅适用于
mongod。类型:整型
默认值:10000000
如果运行
analyzeShardKey时未设置sampleRate和sampleSize,则指定在计算分片键特征指标时要采样的文档数。必须大于0。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
此示例在启动时将
analyzeShardKeyCharacteristicsDefaultSampleSize设置为10000:mongod --setParameter analyzeShardKeyCharacteristicsDefaultSampleSize=10000 在运行期间,您可以使用
setParameter命令设置或修改参数:db.adminCommand( { setParameter: 1, analyzeShardKeyCharacteristicsDefaultSampleSize: 10000 } )
analyzeShardKeyMonotonicityCorrelationCoefficientThreshold7.0 版本中的新增功能。
仅适用于
mongod。类型:double
默认值:0.7
指定用于确定分片键是否按插入顺序单调变化的
RecordId相关系数阈值。必须大于0且小于或等于1。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
此示例在启动时将
analyzeShardKeyMonotonicityCorrelationCoefficientThreshold设置为1:mongod --setParameter analyzeShardKeyMonotonicityCorrelationCoefficientThreshold=1 在运行期间,您可以使用
setParameter命令设置或修改参数:db.adminCommand( { setParameter: 1, analyzeShardKeyMonotonicityCorrelationCoefficientThreshold: 1 } )
analyzeShardKeyNumMostCommonValues7.0 版本中的新增功能。
仅适用于
mongod。类型:整型
默认值:5
指定要返回的最常用分片键值的个数。如果集合包含的唯一分片键少于此值,则
analyzeShardKeyNumMostCommonValues将返回最常用值的个数。必须大于0且小于或等于1000。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
此示例在启动时将
analyzeShardKeyNumMostCommonValues设置为3:mongod --setParameter analyzeShardKeyNumMostCommonValues=3 在运行期间,您可以使用
setParameter命令设置或修改参数:db.adminCommand( { setParameter: 1, analyzeShardKeyNumMostCommonValues: 3 } )
analyzeShardKeyNumRanges7.0 版本中的新增功能。
仅适用于
mongod。类型:整型
默认值:100
指定计算分片键范围热度时将分片键空间划分为多少个范围。必须大于
0且小于或等于10000。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
此示例在启动时将
analyzeShardKeyNumRanges设置为50:mongod --setParameter analyzeShardKeyNumRanges=50 在运行期间,您可以使用
setParameter命令设置或修改参数:db.adminCommand( { setParameter: 1, analyzeShardKeyNumRanges: 50 } )
analyzeShardKeyNumSamplesPerRange7.0 版本中的新增功能。
仅适用于
mongod。类型:非负整数
默认值:10
每个分片键范围要示例的文档数。必须是大于零且小于或等于
10000的值。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
此示例在启动时将
analyzeShardKeyNumSamplesPerRange设置为50:mongod --setParameter analyzeShardKeyNumSamplesPerRange=50 在运行期间,您可以使用
setParameter命令设置或修改参数:db.adminCommand( { setParameter: 1, analyzeShardKeyNumSamplesPerRange: 50 } )
autoMergerIntervalSecs7.0 版本中的新增功能。
仅适用于
mongod。类型:整型
默认值:3600
启用 AutoMerger 后,指定自动合并之间的时间间隔(以秒为单位)。默认值为 3600 秒,即一小时。
autoMergerIntervalSecs只能在配置服务器上设置。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
此示例是在启动时将
autoMergerIntervalSecs设置为 7200 秒,即两小时:mongod --setParameter autoMergerIntervalSecs=7200 在运行期间,您可以使用
setParameter命令设置或修改参数:db.adminCommand( { setParameter: 1, autoMergerIntervalSecs: 7200 } )
autoMergerThrottlingMS7.0 版本中的新增功能。
仅适用于
mongod。类型:整型
默认值:15000
启用 AutoMerger 后,指定 AutoMerger 在同一集合上启动的合并之间的最小时间间隔(以毫秒为单位)。
autoMergerThrottlingMS只能在配置服务器上设置。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
此示例是在启动时将
autoMergerThrottlingMS设置为 60000 毫秒,即一分钟:mongod --setParameter autoMergerThrottlingMS=60000 在运行期间,您可以使用
setParameter命令设置或修改参数:db.adminCommand( { setParameter: 1, autoMergerThrottlingMS: 60000 } )
balancerMigrationsThrottlingMs7.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 } )
catalogCacheCollectionMaxEntries8.1 版本新增:(从 8.0.10、7.0.22 开始也可用)
类型:整型
默认值:10000
集合的目录缓存中允许的最大条目数。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。
catalogCacheDatabaseMaxEntries8.1 版本新增:(从 8.0.10、7.0.22 开始也可用)
类型:整型
默认值:10000
数据库目录缓存中允许的最大条目数。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。
chunkDefragmentationThrottlingMS5.3 版本中的新增功能。
类型:整型
默认值:0
当对分片集合中的数据块进行碎片整理时,指定由负载均衡器运行的连续分割与合并命令之间的最短时间段(以毫秒为单位)。
chunkDefragmentationThrottlingMS会限制分割和合并命令的速度。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
以下示例将
chunkDefragmentationThrottlingMS设置为10毫秒:mongod --setParameter chunkDefragmentationThrottlingMS=10 在运行期间,也可以使用
setParameter命令设置该参数:db.adminCommand( { setParameter: 1, chunkDefragmentationThrottlingMS: 10 } )
disableResumableRangeDeleter仅适用于
mongod。类型:布尔值
默认:false
如果在分片的主节点 (primary node in the replica set)上设立,则指定MongoDB是否暂停该分片上的范围删除。如果设立为
true, MongoDB将暂停清理包含孤立文档的范围。该分片可以继续向其他分片捐赠数据段,但在您将此参数设立为false之前,分片不会删除捐赠的文档。只要该分片在config.rangeDeletions集合中没有与传入数据段的范围重叠的待处理范围删除任务,则该分片可以继续从其他分片接收数据段。当
disableResumableRangeDeleter为true时,如果接收分片的主分片上存在孤立文档,并且与传入数据块的范围相同,则数据块迁移将失败。如果该参数不是分片的主节点,则该参数对
mongod没有影响。重要
如果您将
disableResumableRangeDeleter参数设置为true,则确保将其一致地应用于分片副本集中的所有成员。如果发生故障转移,该设置在新的主节点上的值会决定范围删除器的行为。从MongoDB 8.2 开始,您可以在初创企业和运行期间设立
disableResumableRangeDeleter。要在初创企业时设立
disableResumableRangeDeleter,请使用以下命令:mongod --setParameter disableResumableRangeDeleter=false 要在运行期间设立
disableResumableRangeDeleter,请使用以下命令:db.adminCommand( { setParameter: 1, disableResumableRangeDeleter: false } )
enableFinerGrainedCatalogCacheRefresh注意
8.0 中已弃用
从 MongoDB 8.0 开始,该参数已弃用,不会导致任何变更或错误。
类型:布尔值
默认值:true
该参数允许仅在需要刷新分片时才刷新目录缓存。如已禁用,任何过时的数据段都会导致集合的整个数据段分布被视为过时,并强制所有联系分片的路由器刷新其分片目录缓存。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。mongod --setParameter enableFinerGrainedCatalogCacheRefresh=true mongos --setParameter enableFinerGrainedCatalogCacheRefresh=true
enableShardedIndexConsistencyCheck仅适用于
mongod。类型:布尔值
默认值:true
如果在配置服务器的主节点上设置,则启用或禁用分片集合的索引一致性检查。如果该参数不是配置服务器上的主节点,则该参数对
mongod没有影响。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
以下示例将配置服务器主节点的
enableShardedIndexConsistencyCheck设置为false:mongod --setParameter enableShardedIndexConsistencyCheck=false 在运行期间,也可以使用
setParameter命令设置该参数:db.adminCommand( { setParameter: 1, enableShardedIndexConsistencyCheck: false } ) 提示
shardedIndexConsistencyCheckIntervalMSparameterserverStatus命令返回的shardedIndexConsistency指标。
findChunksOnConfigTimeoutMS版本 5.0 中的新增功能。
类型:非负整数
默认值:900000
如果集群中有大量数据段,并且数据段加载失败并出现错误
ExceededTimeLimit,则增加参数值:mongod --setParameter findChunksOnConfigTimeoutMS=1000000 此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
loadRoutingTableOnStartup仅适用于
mongos。类型:布尔值
默认值:true
配置
mongos实例以在启动时预加载分片集群的路由表。启用此设置后,mongos在开始接受客户端连接之前为每个分片集合缓存集群范围内的路由表,作为其启动过程的一部分。如果未启用此设置,则
mongos仅为传入客户端连接加载所需的路由表,并且仅为给定请求的命名空间加载特定路由表。已启用
loadRoutingTableOnStartup参数的mongos实例可能需要更长的启动时间,但一旦启动,初始客户端连接的服务速度会更快。loadRoutingTableOnStartup默认为 使能。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。
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已弃用
注意
从MongoDB 8.1 开始,旧的
metadataRefreshInTransactionMaxWaitBehindCritSecMS参数已重命名为metadataRefreshInTransactionMaxWaitMS。您可以继续使用metadataRefreshInTransactionMaxWaitBehindCritSecMS作为参数名称,但它已弃用,并将在未来的MongoDB发布中删除。5.2 版本新增:(从 5.1.0、5.0.4 开始也可用)
在版本8.1中进行了更改。
仅适用于
mongod。类型:整型
默认值:500
限制分片在事务中等待关键部分的时间。
当查询访问分片时,数据段迁移或 DDL 操作可能已占用集合的关键部分。如果查询发现关键部分已被占用,则分片会一直等待,直到关键部分被释放。当分片将控制权返回到
mongos时,mongos会重试查询。但是,如果多分片事务与在多个分片上获取关键部分的操作交互,则该交互可能会导致分布式死锁。metadataRefreshInTransactionMaxWaitBehindCritSecMS限制分片在事务中等待关键部分发布的最长时间。要减少事务中关键部分的最大等待时间,则降低
metadataRefreshInTransactionMaxWaitBehindCritSecMS的值。警告
如果
metadataRefreshInTransactionMaxWaitBehindCritSecMS太低,mongos可能会使用所有重试尝试并返回错误。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
例如,将
metadataRefreshInTransactionMaxWaitBehindCritSecMS设置为 400 毫秒:db.adminCommand( { setParameter: 1, metadataRefreshInTransactionMaxWaitBehindCritSecMS: 400 } )
metadataRefreshInTransactionMaxWaitMS在版本8.1中进行了更改。
仅适用于
mongod。类型:整型
默认值:500
限制分片在事务中等待关键部分的时间。
注意
从MongoDB 8.1 开始,旧的
metadataRefreshInTransactionMaxWaitBehindCritSecMS参数已重命名为metadataRefreshInTransactionMaxWaitMS。您可以继续使用metadataRefreshInTransactionMaxWaitBehindCritSecMS作为参数名称,但它已弃用,并将在未来的MongoDB发布中删除。当查询访问分片时,数据段迁移或 DDL 操作可能已占用集合的关键部分。如果查询发现关键部分已被占用,则分片会一直等待,直到关键部分被释放。当分片将控制权返回到
mongos时,mongos会重试查询。但是,如果多分片事务与在多个分片上获取关键部分的操作交互,则该交互可能会导致分布式死锁。metadataRefreshInTransactionMaxWaitMS限制分片在事务中等待关键部分发布的最长时间。要减少事务中关键部分的最大等待时间,则降低
metadataRefreshInTransactionMaxWaitMS的值。警告
如果
metadataRefreshInTransactionMaxWaitMS太低,mongos可能会使用所有重试尝试并返回错误。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
例如,将
metadataRefreshInTransactionMaxWaitMS设置为 400 毫秒:db.adminCommand( { setParameter: 1, metadataRefreshInTransactionMaxWaitMS: 400 } )
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 } )
mongosShutdownTimeoutMillisForSignaledShutdown版本 5.0 中的新增功能。
仅适用于
mongos。类型:整型
默认值:15000
指定在响应
SIGTERM信号而启动mongos关闭之前等待任何正在进行的数据库操作完成的时间(以毫秒为单位)。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
例如,要将时间设置为 250 毫秒,您可以在启动期间发出以下命令:
mongos --setParameter mongosShutdownTimeoutMillisForSignaledShutdown=250 或者,如果在连接至正在运行的
mongos的mongosh会话中使用setParameter命令:db.adminCommand( { setParameter: 1, mongosShutdownTimeoutMillisForSignaledShutdown: 250 } )
orphanCleanupDelaySecs在版本8.2中进行了更改。
仅适用于
mongod。默认值:3600(60 分钟)
从源分片中删除已迁移数据段之前的最小延迟。
在删除已迁移的数据块之前, MongoDB会等待涉及该数据块的进行中查询在分片主节点 (primary node in the replica set)上完成,然后再等待
orphanCleanupDelaySecs秒。从 8.2 开始,对分片片从节点进行的正在进行的查询的行为由
terminateSecondaryReadsOnOrphanCleanup确定。如果分片存在存储限制,请考虑暂时减小此值。如果在分片片从节点上运行查询超过 60 分钟,请考虑增加此值。
此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
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 } )
queryAnalysisSampleExpirationSecs7.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 } )
queryAnalysisSamplerConfigurationRefreshSecs7.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 } )
queryAnalysisWriterIntervalSecs7.0 版本中的新增功能。
7.0.1 版本中的更改。
仅适用于
mongod。类型:整型
默认值:90
将采样查询写入磁盘的时间间隔(以秒为单位)。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。从 MongoDB 7.0.1 开始,您可以在运行期间设置
queryAnalysisWriterIntervalSecs。此示例将在
mongod实例上,在启动时将queryAnalysisWriterIntervalSecs设置为 60 秒:mongod --setParameter queryAnalysisWriterIntervalSecs=60 如要将该值设置为 60 秒,请进行以下运行:
db.adminCommand( { setParameter: 1, queryAnalysisWriterIntervalSecs: 60 } )
queryAnalysisWriterMaxBatchSize7.0 版本中的新增功能。
仅适用于
mongod。类型:整型
默认值:100000
一次写入磁盘的最大采样查询次数。必须大于
0且小于或等于100000。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
此示例将在
mongod实例上,在启动时将queryAnalysisWriterMaxBatchSize设置为1000:mongod --setParameter queryAnalysisWriterMaxBatchSize=1000 在运行期间,也可以使用
setParameter命令设置该参数:db.adminCommand( { setParameter: 1, queryAnalysisWriterMaxBatchSize: 1000 } )
queryAnalysisWriterMaxMemoryUsageBytes7.0 版本中的新增功能。
仅适用于
mongod。类型:整型
默认值:100 * 1024 * 1024
允许查询采样编写器使用的最大内存量(以字节为单位)。一旦达到该上限,所有新的查询和差异都将从采样中丢弃,直到刷新缓冲区。必须大于
0。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
此示例将在
mongod实例上,在启动时将queryAnalysisWriterMaxMemoryUsageBytes设置为10000000:mongod --setParameter queryAnalysisWriterMaxMemoryUsageBytes=10000000
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 开始,该参数的新值将应用于更新后处理的所有范围删除,无论范围删除创建于何时。
routingTableCacheChunkBucketSize7.0.1 版本新增。
在版本 7.2 中进行了更改。
类型:整型
默认值:500
指定路由表高速缓存桶的大小,用于实施数据块分组优化。必须大于
0。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。例如,要在
mongod上将缓存数据段存储桶大小设置为250,则在启动时发出以下命令:mongod --setParameter routingTableCacheChunkBucketSize=250
shardedIndexConsistencyCheckIntervalMS仅适用于
mongod。类型:整型
默认值:600000
如果在配置服务器的主节点上设置,则配置服务器主节点检查分片集合的索引一致性的时间间隔(以毫秒为单位)。如果该参数不是配置服务器上的主节点,则该参数对
mongod没有影响。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。例如,以下操作在启动时将时间间隔设置为 300000 毫秒(5 分钟):
mongod --setParameter shardedIndexConsistencyCheckIntervalMS=300000 提示
enableShardedIndexConsistencyCheckparameterserverStatus命令返回的shardedIndexConsistency指标。
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。
ShardingTaskExecutorPoolMaxSizeForConfigServers6.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。
ShardingTaskExecutorPoolMinSizeForConfigServers6.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 } )
ShardingTaskExecutorPoolReplicaSetMatching5.0 版本中的更改。
类型:字符串
默认值:“自动”
在
mongos实例上,此参数设置策略,该策略确定其连接池与副本集中的节点的最小大小限制。在
mongod实例上,此参数设置策略,该策略确定其连接池与其他副本集中的节点的最小大小限制。请注意,此参数仅托管与用户请求和 CRUD 操作直接相关的操作的连接。
可用值为:
匹配策略说明"automatic"(默认)从 5.0 开始,
"automatic"是新的默认值。为
mongos设置时,实例遵循为"matchPrimaryNode"选项指定的行为。为
mongod设置时,实例遵循为"disabled"选项指定的行为。警告:如果将
ShardingTaskExecutorPoolReplicaSetMatching设立为"automatic",则replicaSetMatchingStrategy仍会描述实际使用的策略,而不是"automatic"。要查找 的值,使用ShardingTaskExecutorPoolReplicaSetMatchinggetParameter返回服务器参数的值。"matchPrimaryNode""matchBusiestNode""disabled"当为
mongos设立时,该实例的实例连接池与分片的集群 v 中副本集的每个节点(具体来说,分片副本集和配置服务器)的最小连接数等于ShardingTaskExecutorPoolMinSize。当设立为
mongod时,该实例的连接池与分片集群中另一个副本集的每个节点的最小连接数(具体来说,分片副本集和配置服务器)等于ShardingTaskExecutorPoolMinSize。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
以下示例在启动期间将
ShardingTaskExecutorPoolReplicaSetMatching设置为"automatic":mongod --setParameter ShardingTaskExecutorPoolReplicaSetMatching="automatic" 在运行期间,也可以使用
setParameter命令设置该参数:db.adminCommand( { setParameter: 1, ShardingTaskExecutorPoolReplicaSetMatching: "automatic" } )
shutdownTimeoutMillisForSignaledShutdown版本 5.0 中的新增功能。
仅适用于
mongod。类型:整型
默认值:15000
指定在响应
SIGTERM信号而启动mongod关闭之前等待任何正在进行的数据库操作完成的时间(以毫秒为单位)。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
例如,要将时间设置为 250 毫秒,您可以在启动期间发出以下命令:
mongod --setParameter shutdownTimeoutMillisForSignaledShutdown=250 或者,如果在连接至正在运行的
mongod的mongosh会话中使用setParameter命令:db.adminCommand( { setParameter: 1, shutdownTimeoutMillisForSignaledShutdown: 250 } )
skipShardingConfigurationChecks仅适用于
mongod。类型:布尔值
默认值:false
当
true时,允许启动分片成员或配置服务器成员作为独立运行的维护操作。该参数与--configsvr或--shardsvr选项互斥。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。mongod --setParameter skipShardingConfigurationChecks=true 重要
维护完成后,在重新启动
mongod时删除skipShardingConfigurationChecks参数。
taskExecutorPoolSize仅适用于
mongos。类型:整数
默认值:1
用于给定
mongos的任务执行器连接池的数量。如果参数值小于或等于
0,则任务执行程序连接池的数量为核心数,但以下情况除外:如果内核数小于 4,则任务执行器连接池数量为 4。
如果内核数大于 64,则任务执行器连接池数量为 64。
taskExecutorPoolSize的默认值为1:此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
mongos --setParameter taskExecutorPoolSize=6
terminateSecondaryReadsOnOrphanCleanup仅适用于
mongod。8.2版本新增。
类型:布尔值
默认值:true
控制在数据块迁移后删除孤立文档之前,是否自动终止从从节点(secondary node from replica set)上长时间运行的读取操作。
在分片的集群中,当数据块成功从源分片迁移到目标分片, MongoDB不会立即从源分片删除已迁移的文档。相反,源分片的主节点 (primary node in the replica set)会等待涉及已迁移数据块的命名空间的任何进行中的读取完成,然后再等待一段由
orphanCleanupDelaySecs控制的时间(默认:1 小时)。这种额外的延迟允许任何长时间运行的从节点(secondary node from replica set)读取在从源分片删除孤立文档之前完成。从源分片删除孤立文档后,在数据块迁移之前启动的从从节点(secondary node from replica set)点上运行的任何正在进行的读取都可能会静默地错过文档,而不返回错误,除非将
terminateSecondaryReadsOnOrphanCleanup设立为true。当
terminateSecondaryReadsOnOrphanCleanup设立为true时,在从从节点(secondary node from replica set)中删除孤立文档之前,在数据块迁移提交之前开始的从从节点(secondary node from replica set)上的读取操作会自动终止。这可以防止长时间运行的从从节点(secondary node from replica set)读取默默地丢失迁移过程中移动的文档。当设立为
false时,即使删除孤立文档,从从节点(secondary node from replica set)的读取操作也会继续执行。操作可能会默默地错过文档而不返回错误。这与 8.2 之前的MongoDB版本中的行为一致。注意
此行为仅影响在数据块迁移提交之前启动的读取操作。它适用于从节点上的所有读取操作,包括查询、聚合和跨多个命名空间的操作。
此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
错误响应
当读操作由于
terminateSecondaryReadsOnOrphanCleanup而终止时, MongoDB会返回以下错误:{ code: 175, name: QueryPlanKilled, categories: [CursorInvalidatedError], errmsg: "Read has been terminated due to orphan range cleanup" } 根据设计,此错误不可重试。要学习;了解有关处理这些错误的更多信息,请参阅分片集群中的长时间运行从节点读取。
warmMinConnectionsInShardingTaskExecutorPoolOnStartup仅适用于
mongos。类型:布尔值
默认值:true
配置
mongos实例以在启动时预热其连接池。启用此参数后,mongos会在开始接受客户端连接之前尝试为每个分片服务器建立ShardingTaskExecutorPoolMinSize网络连接,作为启动程序的一部分。您可以使用
warmMinConnectionsInShardingTaskExecutorPoolOnStartupWaitMS参数配置此行为的超时时间。如果达到此超时时间,无论连接池的大小如何,mongos都将开始接受客户端连接。启用此参数的
mongos实例可能会经历更长的启动时间,但启动后将加快初始客户端连接的服务速度。warmMinConnectionsInShardingTaskExecutorPoolOnStartup默认为 使能。此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。
warmMinConnectionsInShardingTaskExecutorPoolOnStartupWaitMS仅适用于
mongos。类型:整数
默认:2000(2 秒)
设置在使用
warmMinConnectionsInShardingTaskExecutorPoolOnStartup参数时,mongos等待每个分片主机建立ShardingTaskExecutorPoolMinSize连接的超时阈值(以毫秒为单位)。如果达到此超时时间,无论连接池的大小如何,mongos都将开始接受客户端连接。此参数仅在启动时可用。要设置该参数,请使用
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 }"
存储参数
enableAutoCompaction8.1.0版本新增。
类型:布尔值
默认:false
指定实例是否运行自动背景压实。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。以下示例对实例启用自动背景压实:
mongod --setParameter "enableAutoCompaction=true"
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 系统上不可用。
storageEngineConcurrentReadTransactions7.0 版本中的更改。
仅适用于
mongod。类型:整型
指定存储引擎允许的并发读取事务(读取票证)的最大数量。
注意
从版本 7.0 开始,为优化性能,MongoDB 会动态调整票证数量,可能的最大值为 128。
修改此值可能会导致性能问题或错误。要确定禁用动态并发存储引擎事务算法是否是集群的最佳选择,请联系 MongoDB 支持团队。
从 MongoDB 7.0 开始,该参数可用于所有存储引擎。在之前的版本中,该参数仅可用于 WiredTiger 存储引擎。
storageEngineConcurrentWriteTransactions7.0 版本中的更改。
仅适用于
mongod。类型:整型
指定 WiredTiger 存储引擎中允许的并发写入事务的最大数量。
注意
从版本 7.0 开始,为优化性能,MongoDB 会动态调整票证数量,可能的最大值为 128。
修改此值可能会导致性能问题或错误。要确定禁用动态并发存储引擎事务算法是否是集群的最佳选择,请联系 MongoDB 支持团队。
从 MongoDB 7.0 开始,该参数可用于所有存储引擎。在之前的版本中,该参数仅可用于 WiredTiger 存储引擎。
syncdelay仅适用于
mongod。默认:60
指定
mongod将其工作内存刷新到磁盘的间隔(以秒为单位)。默认情况下,mongod每 60 秒向磁盘刷新一次内存。几乎在所有情况下,您都不应该设置该值,而应该使用默认设置。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
考虑以下示例,其将
syncdelay设置为60秒:db.adminCommand( { setParameter: 1, syncdelay: 60 } ) 为了提供持久性数据,WiredTiger 使用了检查点。 有关详细信息,请参阅《日志和 WiredTiger 存储引擎》。
temporarilyUnavailableBackoffBaseMs仅适用于
mongod。默认值:1000
指定重试由于缓存压力而回滚的写入操作之前的初始延迟。
在极少数情况下,写入可能会由于缓存压力而失败。发生这种情况时,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。默认值:10
指定由于缓存压力而回滚写入操作时的最大重试次数。
在极少数情况下,写入可能会由于缓存压力而失败。发生这种情况时,MongoDB 会抛出
TemporarilyUnavailable错误并在两个位置增加temporarilyUnavailableErrors计数器:慢查询日志和全时诊断数据捕获 (FTDC)。多文档事务中的单个操作绝不会返回
TemporarilyUnavailable错误。通过修改
temporarilyUnavailableBackoffBaseMs和temporarilyUnavailableMaxRetries参数来调整写入重试属性。该参数接受:
值说明integer >= 0最大重试次数。
重试之间的延迟时间越来越长。 要配置退避时间,请使用
temporarilyUnavailableBackoffBaseMs。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
要设置新值,则使用
db.adminCommand():db.adminCommand( { setParameter: 1, temporarilyUnavailableMaxRetries: 5 } ) 6.1.0 版本新增。
upsertMaxRetryAttemptsOnDuplicateKeyError8.1.0版本新增。
upsert操作遇到重复键错误时的最大重试次数。类型:整数
默认值:100
此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
重要
从MongoDB 8.1 开始,如果
upsert操作在多文档ACID 事务中运行,则upsert在遇到重复键错误时不会重试。以下示例将服务器在遇到重复键错误时重试
upsert操作的最大次数设置为50。mongod --setParameter "upsertMaxRetryAttemptsOnDuplicateKeyError=50" 在运行期间,您还可以使用
setParameter命令设立参数:db.adminCommand( { setParameter: 1, upsertMaxRetryAttemptsOnDuplicateKeyError: 50 } )
WiredTiger 参数
wiredTigerConcurrentReadTransactions仅适用于
mongod。类型:整型
指定存储引擎允许的并发读取事务(读取票证)的最大数量。
注意
从版本 7.0 开始,为优化性能,MongoDB 会动态调整票证数量,可能的最大值为 128。
修改此值可能会导致性能问题或错误。要确定禁用动态并发存储引擎事务算法是否是集群的最佳选择,请联系 MongoDB 支持团队。
从 MongoDB 7.0 开始,该参数可用于所有存储引擎。在之前的版本中,该参数仅可用于 WiredTiger 存储引擎。
在 6.0 版本中进行了更改。
wiredTigerConcurrentReadTransactions参数已重命名为storageEngineConcurrentReadTransactions。
wiredTigerConcurrentWriteTransactions仅适用于
mongod。类型:整型
指定 WiredTiger 存储引擎中允许的并发写入事务的最大数量。
注意
从版本 7.0 开始,为优化性能,MongoDB 会动态调整票证数量,可能的最大值为 128。
修改此值可能会导致性能问题或错误。要确定禁用动态并发存储引擎事务算法是否是集群的最佳选择,请联系 MongoDB 支持团队。
从 MongoDB 7.0 开始,该参数可用于所有存储引擎。在之前的版本中,该参数仅可用于 WiredTiger 存储引擎。
在 6.0 版本中进行了更改。
wiredTigerConcurrentWriteTransactions参数已重命名为storageEngineConcurrentWriteTransactions。
wiredTigerEngineRuntimeConfig仅适用于
mongod。为正在运行的
mongod实例指定wiredTiger存储引擎配置选项。此参数仅在运行时可用。要设置参数,请使用
setParameter命令。警告
除非在 MongoDB 工程师的指导下,否则避免修改
wiredTigerEngineRuntimeConfig,因为此设置对 WiredTiger 和 MongoDB 都具有重大影响。考虑以下操作原型:
db.adminCommand({ "setParameter": 1, "wiredTigerEngineRuntimeConfig": "<option>=<setting>,<option>=<setting>" })
wiredTigerFileHandleCloseIdleTime仅适用于
mongod。类型:整型
默认值:600
指定
wiredTiger中的文件句柄在关闭之前可以保持空闲的时间(以秒为单位)。如果将
wiredTigerFileHandleCloseIdleTime设置为0,则空闲句柄不会关闭。提示
此参数区分大小写。 如果您将
wiredTigerFileHandleCloseIdleTime中的w大写并运行该参数,则该操作将返回以下错误消息:{ "code":2,"codeName":"BadValue","errmsg":"Unknown --setParameter 'WiredTigerFileHandleCloseIdleTime'" } 此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。例如:
mongod --setParameter wiredTigerFileHandleCloseIdleTime=100000
wiredTigerSessionMax8.1版本新增。
类型:32 位整数
默认值:33000
仅适用于
mongod。WiredTiger允许的最大会话数。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。
请参阅 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设置。
auditEncryptionHeaderMetadataFile6.0 版本中的新功能。
类型:字符串
注意
仅在 MongoDB Enterprise 中可用。MongoDB Enterprise 和 Atlas 有不同的配置要求。
记录用于审核日志加密的元数据审核标头的路径和文件名。标头位于每个审核日志文件的顶部,包含用于解密审核日志的元数据。标题也会保存在审计日志中。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。例如,以下操作能设置
auditEncryptionHeaderMetadataFile的路径和文件:mongod --setParameter auditEncryptionHeaderMetadataFile=/auditFiles/auditHeadersMetadataFile.log
auditEncryptKeyWithKMIPGet6.0 版本中的新功能。
类型:布尔值
默认:false
注意
仅在 MongoDB Enterprise 中可用。MongoDB Enterprise 和 Atlas 有不同的配置要求。
为仅支持 KMIP 协议版本 1.0 或 1.1 的Key Management Interoperability Protocol (KMIP) 服务器启用审核日志加密。
此参数仅在启动时可用。要设置该参数,请使用
setParameter设置。以下示例将
auditEncryptKeyWithKMIPGet设置为true:mongod --setParameter auditEncryptKeyWithKMIPGet=true
事务参数
AbortExpiredTransactionsSessionCheckoutTimeout版本 8.1 中的新功能:(也适用于 8.0.13)
仅适用于
mongod。类型:整型
默认值:100 毫秒
从会话池中签出会话以运行数据库操作。
AbortExpiredTransactionsSessionCheckoutTimeout设置尝试结束过期ACID 事务时要签出会话的最大毫秒数。如果成功结束过期ACID 事务, MongoDB会递增
metrics.abortExpiredTransactions.successfulKills。如果ACID 事务由于在尝试签出会话时超时而未成功结束,MongoDB会递增metrics.abortExpiredTransactions.timedOutKills。此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
以下示例将
AbortExpiredTransactionsSessionCheckoutTimeout设置为120毫秒:db.adminCommand( { setParameter: 1, AbortExpiredTransactionsSessionCheckoutTimeout: 120 } ) 您也可以在初创企业期间设立此参数。示例:
mongod --setParameter AbortExpiredTransactionsSessionCheckoutTimeout=120
coordinateCommitReturnImmediatelyAfterPersistingDecision版本 5.0 中的新增功能。
在版本 6.1 中进行了更新
仅适用于
mongod。类型:布尔值
默认:false
当设置为
true时,分片事务协调器向客户端返回多文档事务提交决策,但前提是对请求的事务写关注作出的决策持续有效。如果客户端请求的写关注小于
"majority",则在决策返回给客户端后,提交可能会回退。事务可能没有“读你所写”的一致性。也就是说,读取操作可能不会显示其之前的写入操作的结果。在以下情况下,可能会出现该问题:
事务必须写入多个分片。
读取和早期写入发生在不同会话中。
因果一致性仅确保同一会话中发生的读取与写入的因果关系。
此参数在运行时和启动时均可用:
要在运行时设立参数,请使用
setParameter命令。要在初创企业时设立参数,请使用
setParameter设置。
以下示例将
coordinateCommitReturnImmediatelyAfterPersistingDecision设置为true:mongod --setParameter coordinateCommitReturnImmediatelyAfterPersistingDecision=true 在运行期间,也可以使用
setParameter命令设置该参数:db.adminCommand( { setParameter: 1, coordinateCommitReturnImmediatelyAfterPersistingDecision: true } )
internalSessionsReapThreshold6.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更改为相同的值。保持该值一致将会:确保路由表历史记录的保留时间至少达到分片副本集成员的事务生命周期限制。
降低事务重试频率,从而提高性能。
transactionTooLargeForCacheThreshold6.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
基于槽的执行参数
planCacheSize6.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" } )