Linux下mongodb最佳实践
禁用numa
numa架构,把多核中央CPU分成不同的node ,每个node 分配单独的内存控制器,每个node中的CPU访问内存消耗和跨node访问内存消耗是不一样的,对于多CPU 大内存的数据库服务器和数据库服务来说,这种设计不利于发挥多进程的优势。
增加linux 文件描述符限制
ulimit -n 64000 ulimit -u 64000
修改配置文件
vi /etc/security/limits.conf
* soft nproc 64000
* hard nproc 64000
* soft nofile 64000
* hard nofile 64000
修改mongodb 数据文件路径的atime更新
- mount时禁用目录的atime 更新
例如 /dev/xvdb /data ext4 noatime 0 0
重新mount mount -o remount /data
- 针对单个特定的目录禁止atime
chattr -R +A /some/dir
- 如果系统支持relatime,可以细粒度控制atime更新
设置操作系统的文件页预读
查看当前值 sudo blockdev –report
修改值 sudo blockdev --setra 32
使用ntp服务器
使用副本集和shard 的时候一定要使用ntp服务器保证个节点之间的时间同步。