如何修改MongoDB中WiredTiger的allocation_size参数并启动mongod?
解决MongoDB WiredTiger allocation_size参数修改失败的问题
你尝试的两种方法都无法成功修改allocation_size,原因和正确的解决方式如下:
一、为什么之前的操作失败?
- 运行时动态修改无效:
allocation_size是WiredTiger存储引擎的静态配置参数,它决定了数据文件的磁盘空间分配粒度,不支持在mongod进程运行时通过setParameter动态调整,所以你执行的db.adminCommand会返回无效参数错误。 - 创建集合时参数格式错误:WiredTiger的
configString中,allocation_size要求传入整数形式的字节数,而不是64KB这种带单位的字符串,这就是创建集合时返回错误的原因。
二、正确修改allocation_size为16KB的方法
根据需求分为两种场景:
1. 全局默认设置(所有新集合生效)
如果想让所有新创建的集合都使用16KB的allocation_size,需要在启动mongod时通过命令行或配置文件指定:
命令行启动方式
直接在启动mongod时添加参数:
mongod --storageEngine wiredTiger --wiredTigerCollectionConfigString "allocation_size=16384"
这里16384是16KB对应的字节数(16*1024),用字节数可以避免单位解析错误。
配置文件启动方式
编辑你的mongod.conf配置文件,添加以下内容:
storage: engine: wiredTiger wiredTiger: collectionConfig: configString: "allocation_size=16384"
然后用配置文件启动mongod:
mongod -f mongod.conf
2. 针对单个集合设置
如果只需要特定集合使用16KB的allocation_size,在创建集合时传入正确格式的字节数参数即可:
db.createCollection("users", { storageEngine: { wiredTiger: { configString: "allocation_size=16384" } } })
内容的提问来源于stack exchange,提问作者Kunal
相关产品推荐
相关产品推荐

