1 查看参数
MongoDB 也有众多的配置参数,在官网有介绍:
查看所有参数的命令如下:
> db.adminCommand( { getParameter : "*" } )
{
"AlwaysRecordTraffic" : "",
"KeysRotationIntervalSec" : 7776000,
"ShardingTaskExecutorPoolHostTimeoutMS" : 300000,
"ShardingTaskExecutorPoolMaxConnecting" : 2,
"ShardingTaskExecutorPoolMaxSize" : 32767,
"ShardingTaskExecutorPoolMinSize" : 1,
"ShardingTaskExecutorPoolRefreshRequirementMS" : 60000,
"ShardingTaskExecutorPoolRefreshTimeoutMS" : 20000,
"ShardingTaskExecutorPoolReplicaSetMatching" : "automatic",
"TransactionRecordMinimumLifetimeMinutes" : 30,
"adaptiveServiceExecutorIdlePctThreshold" : 60,
……
获取命令行启动参数:
> db.adminCommand( "getCmdLineOpts" )
{
"argv" : [
"/usr/local/mongodb/bin/mongod",
"-f",
"/etc/mongo.conf"
],
"parsed" : {
"config" : "/etc/mongo.conf",
"net" : {
"port" : 27017
},
"processManagement" : {
"fork" : true
},
"storage" : {
"dbPath" : "/mongodb/data",
"journal" : {
"enabled" : true
}
},
"systemLog" : {
"destination" : "file",
"logAppend" : true,
"path" : "/mongodb/logs/mongodb.log",
"quiet" : true
}
},
"ok" : 1
}
>
查看某个具体参数:
> db.adminCommand( { getParameter:1, syncdelay:1 } )
{ "syncdelay" : 60, "ok" : 1 }
2 修改参数
MongoDB中参数修改有如下几种方式:
1.使用 setParameter命令:
db.adminCommand( { setParameter: 1,
: } )
2. 修改配置文件
3.在mongod和mongos的命令行选项中指定—setParameter。
mongod --setParameter <parameter>=<value>
mongos --setParameter <parameter>=<value>
db.adminCommand( { setParameter: 1, clusterAuthMode: "sendX509" } )
mongod --setParameter scramIterationCount=12000
> db.adminCommand( { getParameter:1, scramIterationCount:1 } )
{ "scramIterationCount" : 12000, "ok" : 1 }
> db.adminCommand( { setParameter: 1, scramIterationCount: 11000 } )
{ "was" : 12000, "ok" : 1 }
> db.adminCommand( { getParameter:1, scramIterationCount:1 } )
{ "scramIterationCount" : 11000, "ok" : 1 }
>
3 关于参数的动态、静态说明
实际上,MongoDB 的参数也是分动态和静态的。
1.动态参数可以在线修改。
2.静态参数只能是修改到配置文件,重启生效。
比如connPoolMaxShardedInUseConnsPerHost 参数:
> db.adminCommand( { getParameter:1, connPoolMaxShardedInUseConnsPerHost:1 } )
{ "connPoolMaxShardedInUseConnsPerHost" : 2147483647, "ok" : 1 }
> db.adminCommand( { setParameter: 1, connPoolMaxShardedInUseConnsPerHost: 10 } )
{
"ok" : 0,
"errmsg" : "not allowed to change [connPoolMaxShardedInUseConnsPerHost] at runtime"
}
> db.adminCommand( { getParameter:1, connPoolMaxShardedInUseConnsPerHost:1 } )
{ "connPoolMaxShardedInUseConnsPerHost" : 2147483647, "ok" : 1 }
>
在线修改时会直接提示:
“not allowed to change [connPoolMaxShardedInUseConnsPerHost] at runtime”
仔细阅读官方文档,发现了规律。 MongoDB的官方文档没有像Oracle 那样明确的标识参数是静态参数还是动态参数。
只有通过修改方式来辨别:
- 动态参数:文档会提供两种修改方法:
db.adminCommand( { setParameter: 1, tcmallocReleaseRate: 5.0 } ) mongod --setParameter "tcmallocReleaseRate=5.0"
- 静态参数:文档只会提供一种修改方法:
mongos --setParameter connPoolMaxShardedInUseConnsPerHost=100
这里还有一个问题需要注意,就是针对动态参数的修改,在下次重启后会失效。所以在修改动态参数时,除了修改实例,也需要修改配置文件。
版权声明:本文为博主原创文章,未经博主允许不得转载。