本記事では、マシンの 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
##core ファイルのファイル名形式およびディレクトリを設定
kernel.core_pattern = /data/core-%e-%p-%t
このうち、kernel.core_pattern の /data は OceanBase データベースの data ディレクトリです。
注意
max_map_countの設定が適切でない場合、深刻なメモリリークが発生する可能性があります。coreファイルのディレクトリには、少なくとも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