1.計画システムユーザー
ユーザー名を変更し、ユーザー名の名前を「gaussdba」から「gauss」に変更します。
usermod -l gauss gaussdba
「gauss」ユーザーをロックして、ログインできないようにします。
usermod -L gauss
「gauss」ユーザーアカウントのロックを解除して、ログインできるようにします。
usermod -U gauss
アカウントの有効期限が切れているかどうかを確認します
chage -l gauss
アカウントを無期限に設定する
chage -M 99999 gauss
ユーザーを削除する
userdel -r gauss
説明:
- userdelコマンドは、ユーザーアカウントと関連ファイルを削除できます。パラメータを追加しない場合、ユーザーアカウントのみが削除され、関連ファイルは削除されません。
- ユーザーアカウントを削除する前に、GaussDBがアンインストールされていることを確認してください。
2.共有メモリとセマフォを設定します
背景情報
- GaussDBは、許可された接続ごとにセマフォmax_connectionsを使用します。16のセットがあり、各セットには17番目のセマフォも含まれています。このセマフォには、他のセマフォセットと競合するかどうかを検出するための「マジックナンバー」が格納されます。
- このメカニズムが欠落していると、サーバーの起動時に不正なシステムコールエラーが発生し、カーネルは現時点でのみ再構成できます。
- GaussDBは、IPCリソースのハード制限の1つを超えると起動を拒否し、発生した問題とそのために何をする必要があるかを示すエラーメッセージを残します。
- これらの設定を変更するには、マシンを再起動するか、カーネルを再コンパイルする必要があります。
パラメータ名 | パラメータの説明 | リーズナブルな価値 |
SHMMAX | 最大共有メモリセグメントサイズ(バイト) | この記事のパラメータの説明を参照してください。 |
SHMMIN | 最小共有メモリセグメントサイズ(バイト) | 1 |
シュモール | 使用可能な共有メモリの合計量(バイトまたはページ) | バイトの場合、値はSHMMAXと同じであり、ページの場合、値はceil(SHMMAX / PAGESIZE)です。 説明: getconf PAGESIZEコマンドを使用して、ページのバイト数を表示できます。 |
SHMSEG | プロセスごとの共有メモリセグメントの最大数 | 1つのセグメントのみが必要です。 |
SHMMNI | システム全体の共有メモリセグメントの最大数 | SHMSEGに似ており、他のアプリケーション用のスペースもあります。 |
サイン | 信号セットの最大数 | ceil(max_connections / 16)。 |
SEMMNS | システム全体のセマフォの最大数 | ceil(max_connections / 16)* 17に加えて他のアプリケーション用のスペース。 |
SEMMSL | 信号灯のセットあたりの信号機の最大数 | 17。 |
SEMMAP | セマフォマップのレコード数 | この記事のパラメータの説明を参照してください。 |
SEMVMX | セマフォの最大値 | デフォルトは32767です。 |
パラメータの説明:
-
SHMMAX
は、バイト単位で記録された最大共有メモリセグメントのサイズです。shmgetから無効な引数などのエラーメッセージを受け取った場合、このパラメータの制限を超えている可能性があります。 -
SHMALL
この値は、GaussDBと共有メモリセグメントを使用する他のアプリケーションの組み合わせと同じです。 -
注:
SHMALLは、バイト数ではなく、多くのシステムのページ数を使用します。 -
GaussDBのパラメータSHMMINは約500KBです。 -
パラメータSEMMNSは、システム内のセマフォの最大数を設定します。この値は、少なくともmax_connections設定と同じ大きさであり、16接続ごとに1つ追加する必要があります(表System V IPCパラメータを参照)。 -
パラメータSEMMNIは、システムに一度に存在できるセマフォセットの数を決定します。少なくともceil(max_connections / 16)である必要があります。 -
SEMMA
パラメータは、セマフォマッピングを格納するためのスペースのサイズを決定します。各セマフォには、このスペースにマッピングがあります。このスペースがフラグメントでいっぱいになると、使用可能なセマフォは本来よりも少なくなります。 -
パラメータSEMMSLは、信号灯のセットに含めることができる信号灯の数を決定します。GaussDBでは17です。
問題:デフォルト設定は小規模なインストールにのみ適しています(デフォルトの最大共有メモリは1024MBです)。最大共有メモリセグメントは、2つの方法で設定できます。たとえば、最大共有メモリセグメントを4Gまたは1048576ページに設定するには、次の2つの方法があります。
方法1:sysctlインターフェースを使用して設定します。操作手順は次のとおりです。
rootユーザーとしてLinuxオペレーティングシステムにログインします。sysctlインターフェースを使用して変更します。
sysctl -w kernel.shmmax=4294967296
sysctl -w kernel.shmall=1048576
方法2:sysctl.confファイルを変更します。操作手順は次のとおりです。
rootユーザーとしてLinuxオペレーティングシステムにログインします。viエディターでsysctl.confを開き、次のカーネルパラメーターを追加します。
vi /etc/sysctl.conf
kernel.shmmax = 4294967296
kernel.shmall = 1048576
Linuxの起動時にカーネルパラメータを自動的に読み取るには、次のコマンドを実行します。
/sbin/chkconfig boot.sysctl on
次のコマンドを実行して、カーネルパラメータを有効にします。
/sbin/sysctl -p
3.リソース制限を設定します
Linuxカーネルには通常、システム全体のリソース制限があり、GaussDBサーバーの操作を妨げる可能性があります。
背景情報
- 一部のシステムでは、独立したプロセスが多くのファイルを開くことができます。多くのプロセスが同時に多くのファイルを開くと、システムで指定された上限にすぐに達します。このとき、GaussDBのmax_files_per_process構成パラメーターを設定して、プロセスごとに開くファイルの最大数を制限できます。
- Linuxカーネルのコンパイル時に、システムが開くことができるファイルの最大数は固定されています。GaussDBサーバーへの各接続は1つのプロセスを使用するため、開くことができるファイルの最大数は、プロセスの数に必要な数を加えたものに等しくなります。システムの他の部分によって。
問題:システムが開くことができるファイルの最大数を設定する方法は2つあります。
方法1:file-maxファイルを変更します。操作手順は次のとおりです。
rootユーザーとしてLinuxオペレーティングシステムにログインします。file-maxファイルを変更します。
vi /proc/sys/fs/file-max
方法2:/etc/sysctl.confにfs.file-maxパラメーターを追加します。操作手順は次のとおりです。
rootユーザーとしてLinuxオペレーティングシステムにログインします。このパラメーターをカーネル構成ファイル「/etc/sysctl.conf」に追加します。
vi /etc/sysctl.conf
fs.file-max = 4866970
Linuxの起動時にカーネルパラメータを自動的に読み取るには、次のコマンドを実行します。
/sbin/chkconfig boot.sysctl on
次のコマンドを実行して、カーネルパラメータを有効にします。
/sbin/sysctl -p
4.Linuxメモリのオーバーコミットを設定します
仮想メモリが不足してGaussDBサーバープロセスが終了するのを防ぐには、Linuxメモリのオーバーコミットを設定する必要があります。
背景情報
メモリ不足のためにカーネルがGaussDBサーバープロセスを終了すると、次のようなカーネル情報が表示されます。メモリ不足:プロセス12345を強制終了しました(gaussdb)このとき、既存のデータ接続は正常に動作しますが、新しい接続を確立できません。GaussDBを再起動すると問題が解決します。ただし、この問題を回避するには、十分なメモリを備えたマシンでGaussDBを実行するか、メモリの動作を変更して解決する必要があります。
問題:メモリの動作を変更する方法は2つあります。
方法1:sysctlを使用して厳密なオーバーコミットモードを選択します。操作手順は次のとおりです。
rootユーザーとしてLinuxオペレーティングシステムにログインします。送信モードを設定します。コマンドは次のとおりです。
/sbin/sysctl -w vm.overcommit_memory=2
方法2:/etc/sysctl.confでvm.overcommit_memoryパラメーターを設定します。操作手順は次のとおりです。
rootユーザーとしてLinuxオペレーティングシステムにログインします。viエディターを使用して、vm.overcommit_memory構成パラメーターをsysctl.confに書き込みます。コマンドは次のとおりです。
vi /etc/sysctl.conf
vm.overcommit_memory = 2
Linuxの起動時にカーネルパラメータを自動的に読み取るには、次のコマンドを実行します。
/sbin/chkconfig boot.sysctl on
次のコマンドを実行して、カーネルパラメータを有効にします。
/sbin/sysctl -p
5.例
データベースを起動できません。エラーは次のとおりです。
**FATAL**: could not create semaphores: 设备上没有空间(pg_sema.c:123)
**DETAIL**: Failed system call was semget (5432129.17.03600)
**HINT**: This error does "not" mean that you have run out of disk...(SEMMNS)...(SEMMIN)...
解決
vim /etc/sysctl.conf
# 追加或修改
kernel.sem = 250 256000 32 1024
# 加载生效
sysctl -p