1.connPoolMaxShardedConnsPerHost
**作用:**设置用于与分片通信的legacy连接池的最大大小。 池的大小不会阻止创建其他连接,但是会阻止连接池保留超出此限制的连接。
**默认:**200
**可用对象:**mongod和mongos
配置文件中配置,或mongod命令行中配置
2.connPoolMaxShardedInUseConnsPerHost
3.6.3版本开始引入该参数
**作用:**分片群集连接池的最大使用中连接数。
**默认:**未设置
**可用对象:**mongod和mongos
配置文件中配置,或mongod命令行中配置
3.shardedConnPoolIdleTimeoutMinutes
3.6.3版本开始引入该参数
**作用:**群集连接池中的连接在关闭之前可以保持空闲的时间限制。
**默认:**未设置
**可用对象:**mongod和mongos
配置文件中配置,或mongod命令行中配置
4.connPoolMaxConnsPerHost
**作用:**设置用于与全局连接池中其他mongod实例的传出连接的连接池的最大大小。 连接池的大小不会阻止创建其他连接,但是会阻止连接池保留超出connPoolMaxConnsPerHost
值的连接。
**默认:**200
**可用对象:**mongod和mongos
配置文件中配置,或mongod命令行中配置
5.connPoolMaxInUseConnsPerHost
3.6.3版本开始引入该参数
**作用:**设置在任何给定时间用于到旧全局连接池中其他mongod实例的发出连接的最大使用中连接数。
**默认:**未设置
**可用对象:**mongod和mongos
配置文件中配置,或mongod命令行中配置
6.globalConnPoolIdleTimeoutMinutes
3.6.3版本开始引入该参数
**作用:**设置全局连接池中的连接在关闭之前可以保持空闲的时间限制。
**默认:**未设置
**可用对象:**mongod和mongos
配置文件中配置,或mongod命令行中配置
7.cursorTimeoutMillis
**作用:**在MongoDB删除闲置游标之前,以毫秒为单位设置到期阈值; 即MongoDB会删除对于指定的cursorTimeoutMillis处于空闲状态的游标。
**默认:**600000(10分钟)
**可用对象:**mongod和mongos
mongod命令行中配置,或db.adminCommand( { setParameter: 1, cursorTimeoutMillis: 300000 } )
将cursorTimeoutMillis
设置为小于或等于0会导致所有游标立即超时。 通常,超时时间应大于查询返回结果的平均时间。 使用类似cursor.explain()
游标修饰符之类的工具来分析平均查询时间并选择适当的超时时间。
8.failIndexKeyTooLong
从4.4版本开启移除该参数
重要:
- MongoDB 4.4删除了不建议使用的
failIndexKeyTooLong
参数。 尝试在MongoDB 4.4上使用此参数将导致错误。- MongoDB 4.2弃用了
failIndexKeyTooLong
参数,并删除了FeatureCompatibilityVersion(fCV))设置为“ 4.2”或更大的索引键长度限制。
**作用:**对于将featureCompatibilityVersion(fCV)设置为“ 4.0”或更早版本的MongoDB 2.6至MongoDB版本,将应用索引key长度限制。 如果尝试插入或更新其索引字段超出“索引关键字长度限制”的文档,则该操作将失败并将错误返回给客户端。
为避免此问题,请考虑使用散列索引或为计算值建立索引。 如果您已有数据集并希望禁用此行为,以便可以升级然后逐步解决这些索引问题,则可以使用failIndexKeyTooLong
禁用此行为。
将failIndexKeyTooLong
设置为false是一个临时解决方法,而不是永久解决索引键过大的问题。 将failIndexKeyTooLong
设置为false时,如果查询使用的索引跳过了索引字段超过“索引关键字长度限制”的文档,则可能返回不完整的结果。
**默认:**true
**可用对象:**mongod
mongod命令行中配置,或db.adminCommand( { setParameter: 1, failIndexKeyTooLong: false } )
9.notablescan
**作用:**是否允许执行全表扫描的查询,如果设置1或true,则不会不执行全表扫描的查询并返回错误信息。包括所有查询。
只可在测试环境启用该参数,生产环境千万不要启用。
**默认:**false
**可用对象:**mongod
10.ttlMonitorEnabled
**作用:**为了支持TTL索引,mongod实例具有一个后台线程,该线程负责从具有TTL索引的集合中删除文档。
**默认:**true
**可用对象:**mongod
mongod命令行中配置,或db.adminCommand( { setParameter: 1, ttlMonitorEnabled: false } )
11.tcpFastOpenServer
4.4版本引入该参数
**作用:**启用对从客户端接受到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
内核3.7
及以上版本支持入站TFO
设置 /proc/sys/net/ipv4/tcp_fastopen
值来启用TFO:
1.设置2,启用入站TFO连接
2.设置3,启用入站和出战TFO连接
**默认:**true
**可用对象:**mongod和mongos
mongod命令行中配置,或配置文件中配置
12.tcpFastOpenClient
4.4版本引入该参数,只对Linux可用
**作用:**启用对从客户端接受到mongod / mongos的入站TCP快速打开(TFO)连接的支持。 TFO需要客户端和mongod / mongos主机支持,并启用TFO:
内核4.11
及以上版本支持出站TFO
设置 /proc/sys/net/ipv4/tcp_fastopen
值来启用TFO:
- 设置1,启用出站TFO连接
- 设置3,启用入站和出战TFO连接
**默认:**true
**可用对象:**mongod和mongos
13.tcpFastOpenQueueSize
4.4版本引入该参数
**作用:**作为建立TCP快速开放(TFO)连接的一部分,客户端在完成标准的TCP三向握手之前,向mongod / mongos提交有效的TFO cookie。 mongod / mongos将所有此类未决的TFO连接保留在队列中。
tcpFastOpenQueueSize参数设置未决TFO连接的队列大小。 当队列已满时,mongod / mongos会退回常规的三向握手(针对传入的客户端请求),并忽略TFO cookie的存在。 一旦队列大小回到限制以下,mongod / mongos将开始接受新的TFO cookie。
- 增加默认队列大小可能会改善TFO对网络性能的影响。 但是,由于过多的传入TFO请求,大队列大小也增加了服务器资源耗尽的风险。
- 减小默认队列大小可能会减少由于过多的传入TFO请求而导致资源服务器资源耗尽的风险。 但是,较小的队列大小也可能会降低TFO对网络性能的影响。
最小队列大小为0。队列0可以有效禁用TFO。
**默认:**1024
**可用对象:**mongod和mongos
14.disableJavaScriptJIT
从4.0版本开始,该参数默认值改为false(禁用JavaScript),之前为true
**作用:**MongoDB JavaScript引擎使用SpiderMonkey,它实现了即时(JIT)编译,以提高运行脚本时的性能。
**默认:**false(4.0及以后版本),true(4.0之前版本)
**可用对象:**mongod
db.adminCommand( { setParameter: 1, disableJavaScriptJIT: false } )
mongod --setParameter disableJavaScriptJIT=false
15.maxIndexBuildMemoryUsageMegabytes
3.4开始引入该参数
**作用:**限制创建索引时所用的内存大小,单位:MB
默认:
- 200(对于4.2.3及更高版本)
- 500(对于4.2.2和更早版本)
**可用对象:**mongod
4.2版本变化:
- 如果FCV(
setFeatureCompatibilityVersion
)设置为4.2,那么是作用于所有索引 - 如果FCV设置为4.0,那么只作用于前台创建的索引
16.reportOpWriteConcernCountersInServerStatus
4.0.6版本引入该参数
**作用:**是否在db.serverStatus()
命令中返回opWriteConcernCounters
信息。
**默认:**false
**可用对象:**mongod
mongod命令行中配置,或配置文件中配置
17.watchdogPeriodSeconds
**作用:**指定检测数据库相关文件系统状态的频率,单位:秒
-
--dbpath
指定的目录 -
--dbpath
指定目录中的journal目录,如果启用了journal -
--logpath
日志文件 -
--auditpath
审计文件
参数有效值:
- -1
- 大于等于60的整数
注意:
- 如果检测到文件或目录无响应,那么会等待差不多两倍的
watchdogPeriodSeconds
设置时间来终止mongodb进程。- 如果检测目录是连接到其他目录来的,那么不会检测连接的目标端目录。
默认:-1 (disable),也就是不检测
**可用对象:**mongod
启用监控只能在数据库启动时通过
--setParameter
配置mongod --setParameter watchdogPeriodSeconds=60
但是可以在数据库允许期间暂停监控或修改监控频率
- 暂停
db.adminCommand( { setParameter: 1, watchdogPeriodSeconds: -1 } )- 修改频率
db.adminCommand( { setParameter: 1, watchdogPeriodSeconds: 120 } )
18.tcmallocReleaseRate
是版本4.2.3中的新功能,但在3.6.17+和4.0.14+中也可用
**作用:**指定TCMalloc 释放速度,在支持内存的系统上,我们通过madvise(MADV_DONTNEED)将未使用的内存释放给系统的速率。 零表示我们永远不会将内存释放回系统。 增加此标志以更快地返回内存; 减少它以更慢地返回内存。 合理的比率在[0,10]范围内。
**默认:**1
**可用对象:**mongod
运行期间或启动数据库可修改
db.adminCommand( { setParameter: 1, tcmallocReleaseRate: 5.0 } )
mongod --setParameter “tcmallocReleaseRate=5.0”