本記事では、limits.confを設定してプロセス数を制限する方法について説明します。
個人で試用する場合は、この手順をスキップできます。本番環境で使用する場合は、limits.confの設定を推奨します。
設定ファイル /etc/security/limits.conf を使用して、グローバルレベルでリソース制限を変更できます。OceanBaseデータベースのプロセスに関連する制限には、スレッドの最大スタックサイズ(Stack)、最大ファイルハンドル数(Open Files)、コアファイルサイズ(Core File Size)が含まれます。
設定の変更
説明
各マシンでこの操作を個別に実行する必要があります。
セッションレベルの最大スタックサイズを unlimited、最大ファイルハンドル数を 655350、コアファイルサイズを unlimited に設定します。
以下のコマンドを実行して、/etc/security/limits.conf 設定ファイルを開きます:
[admin@test001 ~]$ sudo vim /etc/security/limits.conf
/etc/security/limits.conf 設定ファイルに以下の内容を追加します:
* soft nofile 655350
* hard nofile 655350
* soft stack unlimited
* hard stack unlimited
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited
説明
/etc/security/limits.d/20-nproc.confファイルに nproc の設定が存在するか確認してください。存在する場合は、そのファイル内の nproc 値も同時に変更する必要があります。limits.confの設定は、新規にログインするセッション(新しく開いた端末、SSH 接続、または新しく起動したプロセスなど)にのみ適用されます。既存のセッションやプロセスは新しい設定を自動的に継承せず、再ログインまたは関連サービスの再起動が必要です。
設定の確認
現在のセッションを終了し、再ログインします。以下のコマンドを実行して、設定が有効になっているか確認します。
[admin@test001 ~]$ ulimit -a
出力は次のとおりです。
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 252876
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 655350
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) unlimited
cpu time (seconds, -t) unlimited
max user processes (-u) 655360
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
結果からわかること:
core file sizeはコアファイルの最大サイズ(ブロック単位)を表し、limits.conf設定ファイルの core パラメータに対応します。値が unlimited であるか確認する必要があります。open filesは最大ファイルディスクリプタ数を表し、limits.conf設定ファイルの nofile パラメータに対応します。値が 655350 であるか確認する必要があります。stack sizeはスタックサイズ(KB 単位)を表し、limits.conf設定ファイルの stack パラメータに対応します。値が unlimited であるか確認する必要があります。max user processesは最大ユーザープロセス数を表し、limits.conf設定ファイルの nproc パラメータに対応します。値が 655360 であるか確認する必要があります。