面试题答案
一键面试网络带宽相关配置参数及优化
net.port
- 参数说明:指定MongoDB实例监听的端口。确保此端口在网络环境中未被其他服务占用,避免网络通信冲突影响带宽使用。
- 优化方法:选择一个常规且未被占用的端口,如27017(默认端口)。在部署多个实例时,确保每个实例使用不同的端口。
net.bindIp
- 参数说明:指定MongoDB实例绑定的IP地址。若设置不当,可能导致无法通过正确的网络接口进行通信,浪费带宽资源。
- 优化方法:设置为合适的IP地址。如果是单节点部署且仅允许本地访问,可设置为
127.0.0.1
;若需要远程访问,则设置为服务器的实际IP地址或0.0.0.0
(允许所有IP访问,但需注意安全)。
replSet.networkInterface
- 参数说明:在副本集环境下,指定用于副本集成员之间通信的网络接口。选择不当可能导致副本集成员间带宽利用不佳。
- 优化方法:选择连接到高速网络的网络接口,比如千兆网卡对应的接口。通过
ip addr
等命令查看服务器网络接口信息,设置正确的接口名称。
节点负载相关配置参数及优化
storage.wiredTiger.engineConfig.cacheSizeGB
- 参数说明:指定WiredTiger存储引擎的缓存大小。合理设置该参数可减少磁盘I/O,降低节点负载。缓存过小会导致频繁磁盘读写,增加负载;缓存过大可能影响系统其他资源使用。
- 优化方法:根据服务器内存大小进行设置。一般建议设置为服务器可用内存的50% - 80%。例如,服务器有32GB内存,可设置为16GB - 25.6GB。
processManagement.fork
- 参数说明:设置MongoDB是否以守护进程方式运行。以守护进程方式运行可使MongoDB在后台稳定运行,不占用终端资源,一定程度上优化节点负载。
- 优化方法:在启动配置文件中设置
processManagement.fork: true
,让MongoDB在后台运行。
sharding.chunkSize
- 参数说明:在分片集群中,该参数指定每个数据块(chunk)的大小。chunkSize过小会导致过多的chunk,增加元数据管理负担;chunkSize过大可能导致数据分布不均衡,部分节点负载过高。
- 优化方法:根据数据量和读写模式调整。一般初始设置为64MB,对于读多写少且数据量较大的场景,可适当增大至128MB或256MB;对于写多读少的场景,可适当减小。通过
sh.config.settings.find()
查看当前chunkSize设置,使用sh.setBalancerState(true)
及相关命令调整。