在CentOS上配置MongoDB性能优化涉及多个步骤,包括安装、配置、索引优化、查询优化、资源优化和监控调优等。以下是详细的步骤和建议:
安装MongoDB
使用yum安装
- 安装EPEL仓库:
sudo yum install epel-release
- 安装MongoDB:
sudo yum install mongodb-org
- 启动并设置开机自启动:
sudo systemctl start mongod sudo systemctl enable mongod sudo systemctl status mongod
配置MongoDB
修改配置文件
- 启用访问控制:
security: authorization: enabled
- 修改用户限制:
sudo vi /etc/security/limits.conf # 加入如下内容 mongod soft nofiles 64000 mongod soft nproc 64000
- 创建测试的数据库和用户:
use admin db.createUser({ user: "admin", pwd: "your_password", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ] })
性能优化
硬件和操作系统优化
- 使用SSD硬盘。
- 关闭传输页缓存。
- 优化内核参数,如调整Max processes或files,关闭透明大页功能,修改磁盘调度算法等。
MongoDB软件配置优化
- 调整WiredTiger缓存大小:
storage: wiredTiger: engineConfig: cacheSizeGB:
- 分配足够的oplog空间:
replication: oplogSizeMB:
- 启用Log Rotation:
systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log logRotate: reindex
- 设置journal日志刷新时间和flush时间:
replication: journal: commitIntervalMs:syncPeriodSecs:
- 连接内存优化:
operationProfiling: mode: slowOp
- 连接数优化:
sudo sysctl -w fs.file-max=100000 sudo sysctl -w net.ipv4.tcp_tw_reuse=1
- 关闭Transparent Huge Pages:
echo never | sudo tee /proc/sys/vm/dirty_background_ratio echo 100 | sudo tee /proc/sys/vm/dirty_ratio
数据库设计和查询优化
- Schema和集合设计:合理设计数据模型,避免频繁的跨集合查询。
- 使用索引:为经常用于查询的字段创建索引。
- 优化查询语句:避免复杂查询,尽量使用简单查询条件和投影操作。
- 监控和分析:使用MongoDB提供的工具和日志进行诊断和调优。
监控与调优
- 使用MongoDB提供的工具如
mongostat
和mongotop
定期检查系统性能指标。 - 结合Logstash、ELK Stack等工具实现日志的实时收集、过滤和分析。
通过上述步骤和建议,您可以在CentOS系统中显著提高MongoDB的性能。请注意,性能调优是一个持续的过程,需要根据实际情况进行调整和优化。在进行任何更改之前,建议先备份数据并评估潜在的风险和影响。