fangxiaoji 2020-04-10
我们所使用的的Mongodb为社区版
官方推荐:
为了获得最佳的安装体验,MongoDB提供了适用于流行Linux发行版的软件包。 这些软件包是运行MongoDB的首选方式。
1、linux平台支持
支持在Red Hat Enterprise和相关Linux系统上安装MongoDB Community Edition。
支持在Ubuntu Linux系统上安装MongoDB Community Edition。
支持在Debian系统上安装MongoDB Community Edition。
支持在SUSE Linux系统上安装MongoDB Community Edition。
支持在Amazon Linux AMI系统上安装MongoDB Community Edition。
2、Mac OS平台支持
MongoDB 4.2 Community Edition支持macOS 10.12或更高版本。
3、Windos平台支持
MongoDB 4.2 Community Edition在x86_64架构上支持Windows的以下64位版本:
Windows Server 2019
Windows 10 / Windows Server 2016
Windows 8.1 / Windows Server 2012 R2
Windows 8 / Windows Server 2012
Windows 7 / Windows Server 2008 R2
MongoDB仅支持这些平台的64位版本。
1、系统禁止THP
2、设置系统 ulimit
3、关闭iptables和SElinux
自[CentOS]6版本开始引入了Transparent Huge Pages(THP),从CentOS7版本开始,该特性默认就会启用。尽管THP的本意是为提升内存的性能,不过某些数据库厂商还是建议直接关闭THP(比如说[Oracle]、MariaDB、MongoDB等),透明的Huge Pages可能会在运行时引起内存分配延迟,透明的大页(THP)是一种Linux内存管理系统,它可以减少机器上的后备缓冲区(TLB)查找的开销。
查看THP的启动状态:
[ ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
[ ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
运行以下命令即时禁用THP
[ ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[ ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[ ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[ ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
但是系统重启一会就不生效了。
两重方式都可以
systemd (systemctl)
[ ~]# cat /etc/systemd/system/disable-transparent-huge-pages.service
[Unit] Description=Disable Transparent Huge Pages (THP) DefaultDependencies=no After=sysinit.target local-fs.target Before=mongod.service [Service] Type=oneshot ExecStart=/bin/sh -c ‘echo never | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null‘ ExecStart=/bin/sh -c ‘echo never | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null‘ [Install] WantedBy=basic.target
[ ~]# systemctl daemon-reload
[ ~]# systemctl enable disable-transparent-huge-pages
[ ~]# systemctl start disable-transparent-huge-pages
System V Init (service)
[ ~]# /etc/init.d/disable-transparent-hugepages
#!/bin/bash ### BEGIN INIT INFO # Provides: disable-transparent-hugepages # Required-Start: $local_fs # Required-Stop: # X-Start-Before: mongod mongodb-mms-automation-agent # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Disable Linux transparent huge pages # Description: Disable Linux transparent huge pages, to improve # database performance. ### END INIT INFO case $1 in start) if [ -d /sys/kernel/mm/transparent_hugepage ]; then thp_path=/sys/kernel/mm/transparent_hugepage elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then thp_path=/sys/kernel/mm/redhat_transparent_hugepage else return 0 fi echo ‘never‘ | tee ${thp_path}/enabled > /dev/null unset thp_path ;; esac
[ ~]# chmod 755 /etc/init.d/disable-transparent-hugepages
[ ~]# chkconfig --add disable-transparent-hugepages
[ ~]# /etc/init.d/disable-transparent-hugepages start
大多数类似UNIX的操作系统(包括Linux和macOS)都提供了一种方法来限制和控制基于进程和用户的系统资源(例如线程,文件和网络连接)的使用。这些“ ulimit”可防止单个用户使用过多的系统资源。有时,这些限制的默认值较低,在正常的MongoDB操作过程中可能会导致许多问题。
mongod并且mongos每次使用线程和文件描述符跟踪连接并管理内部操作。本节概述了MongoDB的常规资源利用模式。将这些数字与有关您的部署及其使用的实际信息结合使用,以确定理想的ulimit设置。
通常,所有mongod和mongos实例:
ulimit
指的是针对每个用户的各种资源限制。因此,如果您的[mongod
]实例是以同时运行多个进程或多个[mongod
]进程的用户身份执行的,则可能会看到这些资源的争用。另外,请注意,processes
值(即-u
)是指不同进程和子进程线程的组合数量。
您可以ulimit
通过发出以下格式的命令来更改设置:
ulimit -n <值>
硬和软的ulimit设置会影响到Mongodb的性能,硬ulimit是指用户可以激活的最大进程数,
红帽企业Linux和CentOS 6和7强制执行一个单独的最大进程限制nproc ,该限制将覆盖ulimit 设置。该值在以下配置文件中定义,具体取决于版本: | 系统版本 | 值 | 文件 |
---|---|---|---|
RHEL / CentOS 7 | 4096 | /etc/security/limits.d/20-nproc.conf | |
RHEL / CentOS 6 | 1024 | /etc/security/limits.d/90-nproc.conf |
修改ulimit两种方法
1、添加配置信息: [ ~]# vim /etc/security/limits.d/20-nproc.conf * soft nproc 64000 * soft nofile 64000
重启mongodb服务
2、添加配置 [ ~]#vim /etc/security/limits.conf mongod soft nofile 64000 mongod hard nofile 64000 mongod soft nproc 32000 mongod hard nproc 32000
重启 mongodb服务:
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service
配置文件:/etc/selinux/config
将参数设置为: SELINUX=disabled