设为首页 收藏本站
查看: 1236|回复: 0

[经验分享] 【NoSQL】MongoDB服务器相关选型和基础优化参考

[复制链接]

尚未签到

发表于 2018-10-27 14:41:37 | 显示全部楼层 |阅读模式
  好久没上文章了...先上篇一先!
  硬盘选择
  1. 硬盘有条件尽量选择SAS盘,不差钱的可以选择SSD、funsion-io之类的,再者。也可以根据当初应用环境选择性的考虑下SATA盘
  2. RAID方面可以选择RAID10和RAID5,推荐选用RAID10,它即有速度也相对安全,RAID5的话适合读比较多的业务。但是还是推荐用RAID10,用空间换取时间。RAID5在一块盘出现问题的情况下性能极速下降!
  3. RAID卡的选择,尽量选用大牌子的RAID卡,这样减少出现各种各样的RAID卡故障。还有就是RAID缓存要选择相对比较大的!
  内存选择
  现在内存是白菜价的时代,现在一般笔记本上都到16G了,没有哪个公司会在内存上纠结吧,理论上任何服务器是内存越大越好,尤其是数据库服务器,至少16G以上。
  CPU选择
  选用64位的CPU这个不用说了,再者就是缓存要大,CPU要多核心多线程,但是有些数据库对多核CPU要求不是很严格,比如:MongoDB,MongoDB对内存要求很高!MySQL的InnoDB引擎则对CPU利用率比较高,尽量选用强悍点的CPU!
  系统选择
  1. 系统肯定是64位系统,可以是linux也可以是unix,linux有很多选择,常用的就是CentOS Ubuntu竺,Unix就可以选择开源的FreeBSD
  2. 内核选择,推荐2.6以上的内核,也不用太高
  3. 文件系统的选择,有以下几种选择:EXT3/EXT4/XFS,EXT4和XFS更适合数据库,其实XFS更适合作为MySQL数据库的文件系统,可以在EXT3的基础上性能增加1.5倍。
  其它方面:
  网卡至少选用千M,万M更好,没万M也可以做bonding.
  总之,针对不同的应用选择不的机器类型,尤其作为数据,数据库层尽量选用相对好的服务器。
  下面以MongoDB服务器的硬件选择作个简单的说明:
  1. 相关硬件级别
  网络最低为千M网卡,有万M更好!
  大内存(可以根据索引大小来设置内存,原则上是内存越大越好。)
  双核高速CPU,mongodb实例没必要搞多核,因为mongodb对CPU多核支持不是很好,但是作为mongos路由服务器对CPU资源消耗比较多!
  mongodb实例有独立的挂载盘用于给mongodb存放数据以隔离io的频繁操作。
  磁盘可以考虑用RAID10或RAID5,资金允许可以考虑用SSD来保存
  2. 系统级别
  采用64位系统支持更多的内存和让支持更大的存储数据
  禁止文件系统更新读取次数统计(修改/etc/fstab文件)
  mount -o remount,noatime /data
  如果存储的数据中有大的文件,建议使用ext4/xfs这样的文件系统
  这里可以考虑把数据目录和日志文件及相关的中间件目录(如果有的话)分开来,隔离IO
  ulimit设置
  设置最大打开文件描述符
  cat /etc/security/limits.conf
  soft   nofile       102400
  hard   nofile       102400
  增加系统进程数(线程)的限制-->max user processes
  centos 5与centos 6不同的是,只要在/etc/security/limits.conf 设置了root soft nofile 102400 和root hard        nofile102400,对应的uilmit -u 后的结果就会是102400,这里需要注意区别!
  因此cetos 6还必须这样设置: sed -i 's/1024.*/102400/' /etc/security/limits.d/90-nproc.conf
  TCP连接内存优化
  cat /etc/sysctl.conf
  net.ipv4.tcp_syncookies = 1
  net.ipv4.tcp_tw_reuse = 1
  net.ipv4.tcp_tw_recycle = 1
  net.ipv4.tcp_timestsmps = 0
  net.ipv4.tcp_synack_retries = 2
  net.ipv4.tcp_syn_retries = 2
  net.ipv4.tcp_wmem = 8192 436600 873200
  net.ipv4.tcp_rmem = 32768 436600 873200
  net.ipv4.tcp_mem = 94500000 91500000 92700000
  net.ipv4.tcp_max_orphans = 3276800
  net.ipv4.tcp_fin_timeout = 30
  直接生效
  /sbin/sysctl -p
  对于服务器多核问题可以在启动时加入启动参数:
  numactl --interleave=all
  启动实例: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
  最后一点要说明的是,MongoDB的版本推荐选用2.2.0相对比较高的稳定版本,功能上更加完善!还有一点是Linux系统的内核上的选择对MongoDB有一定的影响!
  可以本文不是规范也不一定适合每一位读者,根据实际情况参考即可!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-627201-1-1.html 上篇帖子: MongoDB与其他数据库的对比 下篇帖子: 小米科技 电商部门 Mongodb sharding Cluster with Replica Set 集群 文档
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表