• 【五】MongoDB管理之生产环境说明


    下面详细说明影响mongodb的系统配置,尤其在生产环境上。

    1、生产环境推荐的平台

    • Amazon Linux
    • Debian 7.1
    • Red Hat / CentOS 6.2+
    • SLES 11+
    • Ubuntu LTS 12.04
    • Ubuntu LTS 14.04
    • Windows Server 2012 & 2012 R2

    推荐使用官方最新的64位发行版本。

    2、网络配置

    1)使用可信任的网络环境

    MongoDB总是运行在可信任的网络环境中,通过网络规则设置避免所有不知来历的机器访问。MongoDB应该部署在独立的环境中,这个环境仅仅能被应用server,监控服务,mongodb组件等访问。

    2)禁用HTTP接口

    3、连接池管理

    为了避免连接超载,确保客户端维护合理的连接池大小,调整连接池的大小以适应具体案例,一般而言,开始连接池大小设置为数据库请求并发数的110-115%。

    4、硬件配置说明

    MongoDB对于服务器的硬件有一定的需求和限制。

    1)分配充足的CPU和RAM

    • 对于MMAPv1存储引擎:由于它本身的并发模型设计,MMAPv1并不需要更多的CPU核心,所以,增加CPU核心在一定程度上有所帮助但是性能提升并不显著。增加RAM能够帮助减少发生分页错误频率。
    • 对于WiredTiger存储引擎:它是为多线程设计,能够利用很多CPU核心,所以,活跃线程总数对应于CPU的数量能够提升性能。随着活跃并发操作数量增加到系统CPU个数,系统吞吐量增加;随着活跃并发操作数超过系统CPU的个数阙值,系统吞吐量下降;

    这个系统阙值数依赖于你的应用程序,你可以通过实验测量系统吞吐量来决定最优的活跃并发数。mongostat工具的输出能够提供活跃并发的读写数据。在v3.2版本中,默认使用WiredTiger存储引擎,MongoDB可以利用操作系统文件系统cache和WiredTiger引擎的cache。WiredTiger v3.2 cache默认设置为1GB或者内存的60%,取其中大的。当然,我们可以自己设置:一般而言,服务器物理内存10G以下的,比较合理的设置值是小于等于3G;对于物理内存大于10G的,可以大于3G。在v3.0版本中,cache默认为1G或物理内存的一半,取其中大的。

    注意:storage.wiredTiger.engineConfig.cacheSizeGB仅仅限制WiredTiger cache大小,不会限制mongd服务占用内存的总量。WiredTiger cache仅仅是mongodb使用内存的一个组件,除此之外,mongodb还可以利用操作系统中文件系统cache。

    如果一台节点上只有一个mongodb实例,那么建议使用默认的WiredTiger cache即可;如果一台节点上有多个实例,那么你需要考虑减少WriedTiger cache的大小以满足其他实例的需要。

    2)使用SSDs(固态硬盘)

    MongoDB在使用SATA SSDs上有很好的性价比。如果经济条件允许,建议使用SSDs。SSDs在随机IO操作上的性能表现完全适应于MMAPv1存储引擎的更新模型。通过使用SSDs和增加内存能够提升I/O的吞吐量

    3)NUMA设置

    MongoDB运行在NUMA系统上,能够导致一些操作问题,如间断性性能低下、高系统进程占用等。所以需要对内存交叉策略进行配置以使主机是non-NUMA状态,MongoDB在启动时就会对系统的NUMA进行检查,如果NUMA配置降低性能了就会进行警告提示。

    • windows系统上NUMA配置

    内存策略通过BIOS配置,具体请参考系统资料

    • liunx系统上NUMA配置
    numactl --interleave=all <path>   #path是mongod路径
    echo 0 > /proc/sys/vm/zone_reclaim_mode

    4)磁盘存储系统

    • swap分配:分配系统swap空间能够避免内存争用、预防系统出现OOM杀死mongod进程等问题。对于MMAPv1存储引擎,mongodb不会在swap空间中存储数据。(windows环境另算);对于WiredTiger存储引擎,mongodb可能会在swap中存储数据。
    • RAID:建议使用raid10,其他不建议。
    • 文件系统类型选择:对于MMAPv1存储引擎,建议xfs或ext4,如果可能,优先选择xfs。对于WiredTiger存储引擎,强烈推荐使用XFS文件系统,因为能够避免使用ext4产生的性能问题。一般而言如果你用xfs文件系统,操作系统内核版本应该在2.6.25及以后;如果使用ext4文件系统,建议内核版本2.6.23及以后。

    5、其他建议配置(liunx)

    • 对于存储数据库文件的磁盘卷,建议关闭atime
    vim /etc/fstab
    #在存储数据库文件的磁盘卷设备上default后面加上noatime,nodiratime
     UUID=98a683e4-ab44-4fe4-85de-7808ee5f167d /data                   xfs     defaults,noatime,nodiratime        1 2
    • 设置unlimit值大于20000
    • 禁用Transparent Huge Pages
    • 禁用NUMA
    • 设置SELinux on Red Hat
    • 如果使用分片集群,别忘了使用NTP同步主机的时间,这个是特别重要的。
  • 相关阅读:
    mod_rewrite
    敏捷开发
    转python和ruby的相同点
    ESB总线知识小结
    使用 squid 2.7 for windows 进行无缓存反向代理
    初探K2workflow
    没激情的工作
    多易拍 二次开发
    查看数二进制代码片段
    生成随机数
  • 原文地址:https://www.cnblogs.com/wangsicongde/p/7588646.html
Copyright © 2020-2023  润新知