|
mongoDB部署对硬件有哪些要求?
# --- mongodb hardware spec checklist ---
1. servers
[ ] 千兆内网网卡
[ ] 两台(等同配置) server 给每对master/slave shard - 即初始化时候就会有两台主机
[ ] 独立任务主机(可以是虚拟主机,但是不能运行其它的任务 )
[ ] 根据索引大小配置的内存 - 原则上越多越好
[ ] 双核高速CPU (不必要更多核,因为mongodb也用不上)
[ ] 最好有一台多核的低内存server上跑mongos调度程序,如果资源不足
可以将 mongos运行在每个需要调用mongodb的前端server上
但是不支持将mongos运行在mongodb 数据server上(因为mongos比较消耗cpu资源)
[ ] 最好server有独立的挂载盘(>100G)提供给mongodb存放数据以隔离io操作
2. system level
[ ] 64-bit linux
[ ] 禁止文件系统更新读取次数统计 (xfs可省略)
mount -o remount,noatime /data
/etc/fstab
[ ] mongodb 使用大的文件保存数据,并且会preallocates这些文件。所以建议使用ext4/xfs这样的filesystem
[ ] 不要使用large vm page
cat /proc/meminfo | grep Huge
[ ] 为了避免Sharded cluster和replica sets之间出现socket error, 降低确省的
TCP keepalive time 从7200 seconds到300s在所有的mongodb/mongos服务器
cat /proc/sys/net/ipv4/tcp_keepalive_time
echo 300 > /proc/sys/net/ipv4/tcp_keepalive_time
[ ] 调整ulimit 从确省的1024到比较合理的数值
echo 300 > /proc/sys/net/ipv4/tcp_keepalive_time
[ ] 调整ulimit 从确省的1024到比较合理的数值
- check ulimit
ulimit -a
- 设置系统全局的ulimit
/etc/security/limits.conf
* soft nofile 12000
* hard nofile 16000
/etc/ssh/sshd_config
UsePAM yes
- 如果使用centos时候调整
/etc/sysconfig/mongod
NFILES=65535
- 或者可以直接在启动mongod时候加入设置调整
ulimit -n 20000; mongod --maxConns 10000
[ ] 如果/data必须和系统盘放在一起,考虑停止 syslog的sync
/etc/syslog.conf
*.info;mail.none;authpriv.none;cron.none -/var/log/messages
[ ] numa问题 for 多核server, 加入启动参数
numactl --interleave=all /path/to/mongod |
|