【NoSQL】MongoDB服务器相关选型和基础优化参考

前端之家收集整理的这篇文章主要介绍了【NoSQL】MongoDB服务器相关选型和基础优化参考前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

好久没上文章了...先上篇一先!

硬盘选择@H_301_6@@H_404_7@@H_301_6@

1. @H_301_6@硬盘有条件尽量选择SAS@H_301_6@盘,不差钱的可以选择SSD@H_301_6@、funsion-io@H_301_6@之类的,再者。也可以根据当初应用环境选择性的考虑下SATA@H_301_6@盘@H_301_6@@H_301_6@


2. RAID@H_301_6@方面可以选择RAID10@H_301_6@和RAID5@H_301_6@,推荐选用RAID10@H_301_6@,它即有速度也相对安全,RAID5@H_301_6@的话适合读比较多的业务。但是还是推荐用RAID10@H_301_6@,用空间换取时间。RAID5@H_301_6@在一块盘出现问题的情况下性能极速下降!@H_301_6@@H_301_6@


3. RAID@H_301_6@卡的选择,尽量选用大牌子的RAID@H_301_6@卡,这样减少出现各种各样的RAID@H_301_6@卡故障。还有就是RAID@H_301_6@缓存要选择相对比较大的!@H_301_6@@H_301_6@



@H_301_6@

内存选择@H_301_6@@H_404_7@@H_301_6@@H_301_6@


现在内存是白菜价的时代,现在一般笔记本上都到16G@H_301_6@了,没有哪个公司会在内存上纠结吧,理论上任何服务器是内存越大越好,尤其是数据库服务器,至少16G@H_301_6@以上。@H_301_6@@H_301_6@



@H_301_6@

cpu@H_301_6@选择@H_301_6@@H_404_7@@H_301_6@@H_301_6@


选用64@H_301_6@位的cpu@H_301_6@这个不用说了,再者就是缓存要大,cpu@H_301_6@要多核心多线程,但是有些数据库对多核cpu@H_301_6@要求不是很严格,比如:MongoDB@H_301_6@,MongoDB@H_301_6@对内存要求很高!MysqL@H_301_6@的InnoDB@H_301_6@引擎则对cpu@H_301_6@利用率比较高,尽量选用强悍点的cpu@H_301_6@!@H_301_6@@H_301_6@



@H_301_6@

系统选择@H_301_6@@H_404_7@@H_301_6@@H_301_6@


1. @H_301_6@系统肯定是64@H_301_6@位系统,可以是linux@H_301_6@也可以是unix@H_301_6@,linux@H_301_6@有很多选择,常用的就是CentOS Ubuntu@H_301_6@竺,Unix@H_301_6@就可以选择开源的FreeBSD@H_301_6@@H_301_6@


2. @H_301_6@内核选择,推荐2.6@H_301_6@以上的内核,也不用太高@H_301_6@@H_301_6@


3. @H_301_6@文件系统的选择,有以下几种选择:EXT3/EXT4/XFS@H_301_6@,EXT4@H_301_6@和XFS@H_301_6@更适合数据库,其实XFS@H_301_6@更适合作为MysqL@H_301_6@数据库文件系统,可以在EXT3@H_301_6@的基础上性能增加1.5@H_301_6@倍。@H_301_6@@H_301_6@



@H_301_6@

其它方面:@H_301_6@@H_404_7@@H_301_6@@H_301_6@


网卡至少选用千M@H_301_6@,万M@H_301_6@更好,没万M@H_301_6@也可以做bonding.@H_301_6@@H_301_6@



@H_301_6@

总之,针对不同的应用选择不的机器类型,尤其作为数据,数据库层尽量选用相对好的服务器。@H_301_6@@H_301_6@



@H_301_6@


下面以MongoDB@H_301_6@服务器的硬件选择作个简单的说明:@H_301_6@@H_301_6@



@H_301_6@

1. @H_301_6@相关硬件级别@H_301_6@@H_404_7@@H_301_6@@H_301_6@



@H_301_6@

@H_301_6@@H_301_6@网络最低为千M@H_301_6@网卡,有万M@H_301_6@更好!
@H_301_6@@H_301_6@


@H_301_6@@H_301_6@大内存(可以根据索引大小来设置内存,原则上是内存越大越好。)
@H_301_6@@H_301_6@


@H_301_6@@H_301_6@双核高速cpu@H_301_6@,mongodb@H_301_6@实例没必要搞多核,因为mongodb@H_301_6@对cpu@H_301_6@多核支持不是很好,但是作为mongos@H_301_6@路由服务器对cpu@H_301_6@资源消耗比较多!@H_301_6@@H_301_6@



@H_301_6@

@H_301_6@@H_301_6@mongodb@H_301_6@实例有独立的挂载盘用于给mongodb@H_301_6@存放数据以隔离io@H_301_6@的频繁操作。@H_301_6@@H_301_6@



@H_301_6@

@H_301_6@@H_301_6@磁盘可以考虑用RAID10@H_301_6@或RAID5@H_301_6@,资金允许可以考虑用SSD@H_301_6@来保存@H_301_6@@H_301_6@


@H_301_6@

2. @H_301_6@系统级别@H_301_6@@H_404_7@@H_301_6@@H_301_6@



@H_301_6@

@H_301_6@@H_301_6@采用64@H_301_6@位系统支持更多的内存和让支持更大的存储数据@H_301_6@@H_301_6@



@H_301_6@

@H_301_6@@H_301_6@禁止文件系统更新读取次数统计(@H_301_6@修改/etc/fstab@H_301_6@文件) @H_301_6@@H_301_6@


mount -o remount,noatime /data@H_301_6@



@H_301_6@

@H_301_6@@H_301_6@如果存储的数据中有大的文件,建议使用ext4/xfs@H_301_6@这样的文件系统@H_301_6@@H_301_6@


这里可以考虑把数据目录和日志文件及相关的中间件目录(@H_301_6@如果有的话)@H_301_6@分开来,隔离IO@H_301_6@@H_301_6@



@H_301_6@

@H_301_6@@H_301_6@ulimit@H_301_6@设置@H_301_6@@H_301_6@


设置最大打开文件描述符@H_301_6@@H_301_6@


cat /etc/security/limits.conf@H_301_6@


soft nofile 102400@H_301_6@


hard nofile 102400@H_301_6@



@H_301_6@

增加系统进程数(线程)的限制-->max user processes
centos 5@H_301_6@与centos 6@H_301_6@不同的是,只要在/etc/security/limits.conf @H_301_6@设置了root soft nofile 102400 @H_301_6@和root hard nofile102400@H_301_6@,对应的uilmit -u @H_301_6@后的结果就会是102400@H_301_6@,这里需要注意区别!@H_301_6@@H_301_6@


因此cetos 6@H_301_6@还必须这样设置: sed -i 's/1024.*/102400/' /etc/security/limits.d/90-nproc.conf@H_301_6@@H_301_6@



@H_301_6@

@H_301_6@@H_301_6@TCP@H_301_6@连接内存优化@H_301_6@@H_301_6@


cat /etc/sysctl.conf@H_301_6@


net.ipv4.tcp_syncookies = 1 @H_301_6@


net.ipv4.tcp_tw_reuse = 1 @H_301_6@


net.ipv4.tcp_tw_recycle = 1 @H_301_6@


net.ipv4.tcp_timestsmps = 0 @H_301_6@


net.ipv4.tcp_synack_retries = 2 @H_301_6@


net.ipv4.tcp_syn_retries = 2 @H_301_6@


net.ipv4.tcp_wmem = 8192 436600 873200 @H_301_6@


net.ipv4.tcp_rmem = 32768 436600 873200 @H_301_6@


net.ipv4.tcp_mem = 94500000 91500000 92700000 @H_301_6@


net.ipv4.tcp_max_orphans = 3276800 @H_301_6@


net.ipv4.tcp_fin_timeout = 30@H_301_6@



@H_301_6@

直接生效@H_301_6@@H_301_6@


/sbin/sysctl -p @H_301_6@


对于@H_301_6@服务器多核问题可以在启动时加入启动参数:@H_301_6@@H_301_6@


numactl --interleave=all@H_301_6@


启动实例:umactl --interleave=all /opt/mongodb/bin/mongod -shardsvr -replSet shard1 -port 27021 -dbpath /data0/mongodb/db/shard13 -oplogSize 1000 -logpath /data1/mongodb/logs/shard13.log -logappend --maxConns 10000 --quiet -fork --directoryperdb @H_301_6@@H_301_6@

@H_301_6@@H_301_6@


最后一点要说明的是,MongoDB的版本推荐选用2.2.0相对比较高的稳定版本,功能上更加完善!还有一点是Linux系统的内核上的选择对MongoDB有一定的影响!


可以本文不是规范也不一定适合每一位读者,根据实际情况参考即可!@H_301_6@

原文链接:https://www.f2er.com/nosql/204440.html

猜你在找的NoSQL相关文章