Mongodb 설치 필수 시스템 최적화

Mongodb는 두 가지 서비스 버전을 발표했는데 그것이 바로 커뮤니티 버전과 기업 버전이다
우리가 사용하는 몬godb는 커뮤니티 버전에 대한 공식 추천입니다. 최고의 설치 체험을 위해 몬godb는 유행하는 리눅스 버전에 적용되는 소프트웨어 패키지를 제공합니다.이 패키지는 MongodB를 실행하는 데 가장 좋은 방법입니다.1. linux 플랫폼 지원
Red Hat에 설치
Red Hat Enterprise 및 관련 Linux 시스템에 MongoDB Community Edition을 설치할 수 있습니다.
Ubuntu에 설치
MongoDB Community Edition은 Ubuntu Linux 시스템에 설치할 수 있습니다.
Debian에 설치
Debian 시스템에 MongoDB Community Edition을 설치할 수 있습니다.
SUSE에 설치
MongoDB Community Edition은 SUSE Linux 시스템에 설치할 수 있습니다.
아마존에 설치
MongoDB Community Edition은 Amazon Linux AMI 시스템에 설치할 수 있습니다.
MongoDB는 Linux의 Windows 서브시스템(WSL)을 지원하지 않습니다.
2. Mac OS 플랫폼은 MongoDB 4.2 Community Edition을 지원하고 MacOS 10.12 이상의 버전을 지원합니다.
3, Windos 플랫폼은 x86 에서 MongoDB 4.2 Community Edition 지원64 아키텍처에서 Windows를 지원하는 64비트 버전은 다음과 같습니다.
Windows Server 2019Windows 10/Windows Server 2016Windows 8.1/Windows Server 2012 R2Windows 8/Windows Server 2012Windows 7/Windows Server 2008 R2
MongoDB는 이 플랫폼의 64비트 버전만 지원합니다.
Centos 시스템 Mongodb 설치 전 시스템 최적화
1. 시스템 금지 THP2, 시스템 설정 ulimit 3, iptables와 SElinux 닫기
1、왜 THP 금지
[CentOS] 6 릴리즈부터 THP(Transparent Huge Pages)가 도입되어 CentOS 7 릴리즈부터 기본적으로 활성화됩니다.비록 THP의 본뜻은 메모리의 성능을 향상시키기 위한 것이지만 일부 데이터베이스 업체들은 THP(예를 들어 [Oracle],MariaDB,MongoDB 등)를 직접 닫는 것을 권장한다. 투명한 HugePages는 실행할 때 메모리 분배 지연을 일으킬 수 있다. 투명한 큰 페이지(THP)는 리눅스 메모리 관리 시스템으로 기계의 버퍼(TLB) 검색 비용을 줄일 수 있다.
THP의 시작 상태를 보려면 다음과 같이 하십시오.
[root@master ~]# cat/sys/kernel/mm/transparent_hugepage/enabled[always] madvise never[root@master ~]# cat/sys/kernel/mm/transparent_hugepage/defrag[always] madvise never
다음 명령을 실행하여 THP 즉시 비활성화
[root@master ~]# echo never >/sys/kernel/mm/transparent_hugepage/enabled[root@master ~]# echo never >/sys/kernel/mm/transparent_hugepage/defrag[root@master ~]# cat/sys/kernel/mm/transparent_hugepage/enabledalways madvise [never][root@master ~]# cat/sys/kernel/mm/transparent_hugepage/defragalways madvise [never] 그러나 시스템이 다시 시작되면 효력이 발생하지 않습니다.
서비스를 사용하여 THP 제어
이중 모드 모두 systemd (systemctl) 가능
[root@master ~]# 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

[root@master ~]# systemctl daemon-reload[root@master ~]# systemctl enable disable-transparent-huge-pages[root@master ~]# systemctl start disable-transparent-huge-pages
System V Init (service)[root@master ~]#/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

[root@master ~]# chmod 755/etc/init.d/disable-transparent-hugepages[root@master ~]# chkconfig --add disable-transparent-hugepages[root@master ~]#/etc/init.d/disable-transparent-hugepages start
2, UNIX ulimit 설정
대부분의 UNIX와 유사한 운영체제 (Linux와 macOS 포함) 는 프로세스와 사용자를 바탕으로 하는 시스템 자원 (예를 들어 루트, 파일, 네트워크 연결) 의 사용을 제한하고 제어하는 방법을 제공한다.이러한'ulimit'는 한 사용자가 너무 많은 시스템 자원을 사용하는 것을 방지할 수 있다.때때로 이러한 제한의 기본값이 비교적 낮아서 정상적인 몬goDB 작업 과정에서 많은 문제를 초래할 수 있다.mongod 그리고 mongos는 매번 루트와 파일 설명자를 사용하여 연결을 추적하고 내부 조작을 관리합니다.이 절에서는 MongoDB의 일반적인 자원 이용 모델을 개술하였다.이 숫자들을 사용자의 배치와 사용에 대한 실제 정보와 결합하여 사용하십시오. 이상적인ulimit 설정을 확인하십시오.
일반적으로 모든 Mongod 및 Mongos 인스턴스는 다음과 같습니다.
  • 은 전송된 모든 연결을 파일 설명자와 스레드로 추적합니다.
  • 각 내부 스레드 또는 pthread를 시스템 프로세스로 추적
  • 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、      :
    
    [root@master ~]# vim /etc/security/limits.d/20-nproc.conf
    
    *          soft    nproc     64000
    *          soft    nofile     64000

    몬godb 서비스 다시 시작
    2、    
    
    [root@master ~]#vim  /etc/security/limits.conf
    mongod soft nofile 64000
    mongod hard nofile 64000
    mongod soft nproc 32000
    mongod hard nproc 32000

    몬godb 서비스를 다시 시작하려면:
    3, iptables 및 SElinux 닫기
    systemctl status firewalld.servicesystemctl stop firewalld.servicesystemctl disable firewalld.service
    구성 파일:/etc/selinux/config 매개변수를 SELINUX=disabled로 설정
    서버 시간대: 시간 서비스를 설정하여 서버 시간이 일치하도록 하겠습니다.

    좋은 웹페이지 즐겨찾기