Mongodbインストールはシステム最適化を読み取る必要があります

Mongodbは2つの利用可能なサービスバージョンをリリースしました:Community EditionとEnterprise Edition

私たちが使用するMongodbは、コミュニティバージョンで
公式に推奨されています
最高のインストールエクスペリエンスを実現するために、MongoDBは人気のあるLinuxディストリビューションに適したパッケージを提供しています。これらのパッケージは、MongoDBを実行するための推奨される方法です。
1. Linuxプラットフォームのサポート

Red Hatにインストール

Red Hat Enterpriseおよび関連するLinuxシステムでのMongoDB Community Editionのインストールをサポートします。

Ubuntuにインストール

Ubuntu LinuxシステムへのMongoDB Community Editionのインストールをサポートします。

Debianにインストール

DebianシステムへのMongoDB Community Editionのインストールのサポート。

SUSEにインストール

SUSE LinuxシステムへのMongoDB Community Editionのインストールをサポートします。

Amazonにインストール

Amazon Linux AMIシステムへのMongoDB Community Editionのインストールをサポートします。

MongoDBは、LinuxのWindowsサブシステム(WSL)をサポートしていません。

2. Mac OSプラットフォームは、
MongoDB 4.2 Community Editionをサポートし、macOS 10.12以降をサポートします。

3. Windosプラットフォームは
、x86_64アーキテクチャでMongoDB 4.2 Community Editionをサポートし、次の64ビットバージョンのWindowsをサポートします。

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ビットバージョンのみをサポートしています。

Mongodbをインストールする前のCentosシステムの最適化

1.システムがTHPを禁止している
2. システムをセットアップするulimit
3. iptablesとSElinuxをオフにする

1. THPを禁止すべき理由

[CentOS] 6バージョン以降、Transparent Huge Pages(THP)が導入されました。この機能は、CentOS 7バージョン以降、デフォルトで有効になります。THPはもともとメモリのパフォーマンスを向上させることを目的としていましたが、一部のデータベースベンダーはTHPを直接オフにすることを推奨しています([Oracle]、MariaDB、MongoDBなど)。透過的な巨大なページは、実行時にメモリ割り当ての遅延を引き起こす可能性があります。 Huge page(THP)は、マシン上のバックバッファー(TLB)のルックアップのオーバーヘッドを削減できるLinuxメモリ管理システムです。

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 / enabled
always madvise [never]
[root @ master〜
]
#cat / sys / kernel / mm / transparent_hugepage / defrag always 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(サービス)
[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」により、1人のユーザーがシステムリソースを使いすぎないようにすることができます。これらの制限のデフォルト値が低い場合があり、通常のMongoDB操作中に多くの問題を引き起こす可能性があります。
mongodとmongosは、スレッドとファイル記述子を使用して、接続を追跡し、内部操作を毎回管理します。このセクションでは、MongoDBの一般的なリソース利用モデルの概要を説明します。これらの数値を実際のデプロイメントに関する情報と組み合わせて使用​​し、理想的なulimit設定を決定します。

一般に、すべてのmongodおよびmongosインスタンス:

  • ファイル記述子とスレッドを使用して、各着信接続を追跡します。
  • 各内部スレッドまたはpthreadをシステムプロセスとして追跡する

ulimit各ユーザーのさまざまなリソース制限を参照します。したがって、[ mongod]インスタンスが複数のプロセスまたは複数の[ mongod]プロセスを同時に実行しているユーザーとして実行された場合、これらのリソースの競合が発生する可能性があります。また、processes値(つまり-u)は、異なるプロセスとサブプロセスのスレッドの合計数を指すことに注意してください

ulimit次の形式でコマンドを発行することにより、設定変更できます。

ulimit -n <値>

ハードおよびソフトのulimit設定はMongodbのパフォーマンスに影響します。ハードulimitは、ユーザーがアクティブ化できるプロセスの最大数を指します。

Red Hat Enterprise 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を変更する2つの方法

1、添加配置信息:

[root@master ~]# vim /etc/security/limits.d/20-nproc.conf

*          soft    nproc     64000
*          soft    nofile     64000

mongodbサービスを再起動します。

2、添加配置

[root@master ~]#vim  /etc/security/limits.conf
mongod soft nofile 64000
mongod hard nofile 64000
mongod soft nproc 32000
mongod hard nproc 32000

mongodbサービスを再起動します。

3. iptablesとSElinuxを閉じる

systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service

構成ファイル:/ etc / selinux / config
パラメータを次のように設定します:SELINUX =無効

サーバーのタイムゾーン:サーバーの時刻に一貫性を持たせるには、タイムサービスを構成する必要があります。

おすすめ

転載: blog.51cto.com/jiachen/2486059