本記事では、マシンのsysctl.conf設定を変更することで、Linuxシステムのパフォーマンスを向上させる方法について説明します。
個人で試用する場合は、この手順をスキップしてもかまいません。本番環境で使用する場合は、sysctl.confの設定を推奨します。
説明
各マシンでこの操作を個別に実行する必要があります。
設定の変更
以下のコマンドを実行して、/etc/sysctl.conf 設定ファイルを開きます:
[admin@test001 ~]$ sudo vim /etc/sysctl.conf
/etc/sysctl.conf 設定ファイルに以下の内容を追加します:
#for oceanbase
##カーネルの非同期I/O制限の変更
fs.aio-max-nr = 1048576
##ネットワーク最適化
net.core.somaxconn = 2048
net.core.netdev_max_backlog = 10000
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_slow_start_after_idle = 0
vm.swappiness = 0
vm.min_free_kbytes = 2097152
vm.overcommit_memory = 0
fs.file-max = 6573688
fs.pipe-user-pages-soft = 0
##プロセスが保有できる仮想メモリ領域数の変更
vm.max_map_count = 655360
##コアファイルのファイル名形式とディレクトリの設定
kernel.core_pattern = /data/core-%e-%p-%t
ここで、kernel.core_pattern の /data はOceanBaseデータベースの data ディレクトリです。
注意
max_map_countの設定が不適切な場合、重大なメモリリークを引き起こす可能性があります。少なくともコアファイルのディレクトリには、OBServerの設定である
memory_limitと同じサイズのディスク容量を確保する必要があります。同時に、データディレクトリとログディレクトリの利用可能容量に影響を与えないようにする必要があります。
設定の読み込み
設定の変更が完了したら、以下のコマンドを実行して設定を読み込み、有効にします。
[admin@test001 ~]$ sudo sysctl -p
ARM環境でのデプロイメントに関する推奨事項
BIOS/UEFIおよびカーネル起動パラメータでNUMAサポートを有効にします。
ARMおよび海光アーキテクチャの環境では、設定ファイル
/etc/sysctl.confを変更し、パラメータkernel.numa_balancing、vm.zone_reclaim_mode、vm.swappinessを0に設定することを推奨します。以下のコマンドを実行して/etc/sysctl.confファイルを開きます:[admin@test001 ~]$ sudo vim /etc/sysctl.conf/etc/sysctl.confファイルに以下の内容を追加します:##NUMA Balancingを無効にして、バランシング処理中のパフォーマンスジッターを回避する kernel.numa_balancing = 0 ##メモリ回収および再割り当て機能を無効にする vm.zone_reclaim_mode = 0 vm.swappiness = 0sysctl.conf設定ファイルの値を適用します:[admin@test001 ~]$ sudo sysctl -p