PostgreSQLを稼働させるために Linux 環境で変更が推奨される項目について記述して
います。
12.1 カーネル設定
12.1.1 メモリー・オーバーコミット
Red Hat Enterprise Linuxは標準でメモリー・オーバーコミットの機能が動作していま
す。メモリーが不足する状況になった場合にメモリー使用量が多い PostgreSQL インスタ ンスが強制終了されることを防ぐため、メモリー・オーバーコミットの機能は停止すべき と考えます。
表 80 オーバーコミット設定
カーネル・パラメータ デフォルト値 推奨値 備考
vm.overcommit_memory 0 2
vm.overcommit_ratio 50 99
12.1.2 I/O スケジューラ
一般的なシステムではI/Oスケジューラの変更は必要ないと思われます。一括読み込みが 多いシステムではdeadlineに変更することも検討します。
例 132 I/O スケジューラをdeadlineに変更(/etc/grub.confファイル)
12.1.3 SWAP
できるだけスワップアウトせずにメモリー内にプロセスを維持するため、カーネル・パ
ラメータvm.swappinessは5以下にすることが推奨されます。
表 81 スワップ設定
パラメータ デフォルト値 推奨値 備考
vm.swappiness 60 0
kernel /vmlinuz-2.6.18-274.3.1.el5 ro root=/dev/vg00/lvol1 elevetor=deadline
12.1.4 Huge Page
大規模メモリー環境ではHuge Pageを利用する設定を行います。PostgreSQL 9.4のデフ ォ ル ト 設 定 で は Huge Page が 利 用 で き れ ば 利 用 し ま す 。 カ ー ネ ル ・ パ ラ メ ー タ
vm.nr_hugepagesには共有メモリーで使用される領域以上のサイズ(2 MB単位)を指定
します。必要量量が不足する場合はインスタンス起動エラーになります。
表 82 Huge Pages
パラメータ デフォルト値 推奨値 備考
vm.nr_hugepages 0 shared_buffers以上
12.1.5 省電力モード
パ フ ォ ー マ ン ス 上 の 理 由 か ら 省 電 力 モ ー ド は 使 用 し な い こ と が 推 奨 さ れ ま す 。
/etc/grub.confファイルに以下のエントリを指定します。あわせてBIOS設定が必要な場合
があります。
表 83 省電力モード
パラメータ 推奨値 備考 intel_idle.max_cstate 0
processor.max_cstate 0
12.2 ファイルシステム設定
PostgreSQLはストレージとしてファイルシステムを使用し、多数の小規模ファイルを自
動的に作成します。このためファイルシステムのパフォーマンスがシステムの性能に大き く影響します。Linux環境ではext4またはXFSが推奨されます。
12.2.1 ext4 使用時
データベース・クラスタ用ファイルシステムのマウント・オプションとして noatime、
nodiratimeを指定します。
12.2.2 XFS 使用時
データベース・クラスタ用ファイルシステムのマウント・オプションとしてnobarrier、
noatime、noexec、nodiratimeを指定します。
12.3 Core ファイル
トラブルの解析には障害発生時に生成された core ファイルが役に立ちます。ここでは Red Hat Enterprise Linuxのトラブル解析ツールを使ってPostgreSQLがcoreファイルを 生成する設定について記述しています。
12.3.1 CORE ファイル出力設定
標準ではcoreファイルのサイズ制限が0になっているため、制限を解除します。
□ limits.confファイルの編集
/etc/security/limits.confファイルに以下のエントリーを追加します。
□ .bashrcファイルの編集
postgresユーザーの{HOME}/.bashrcファイルに以下のエントリーを追加します。
12.3.2 ABRT による Core 管理
Red Hat Enterprise Linux 6にはバグ・レポートに必要な情報を自動的に収集するAuto
Bug Reporting Tool (ABRT) が搭載されました。ABRTは標準的なインストールで自動的
に動作しています。
□ カーネル・パラメータの設定
ABRTがインストールされた環境では、カーネル・パラメータkernel.core_patternが 以下の設定に変更されています。
このためCoreファイルが生成されるとABRTにファイル内容が渡されます。
□ ディレクトリの作成と出力先の設定
Coreファイルは標準では /var/spool/abrtディレクトリに出力されます。ディレクト リを変更するには /etc/abrt/abrt.conf ファイルのDumpLocation パラメータを変更し
postgres - core unlimited
ulimit -c unlimited
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e
ます。
例 133 ディレクトリの作成とABRT設定
□ ABRTパッケージ設定
標準では署名されていないプログラムのCoreファイルは生成されません。この制限 を 解 除 す る た め に は/etc/abrt/abrt-action-save-package-data.conf フ ァ イ ル の
OpenGPGCheckパラメータをnoに設定します。
例 134 署名されていないプログラムのCoreを出力する
□ その他の設定
/etc/abrt/plugins/CCpp.confファイルにはCore ファイルの生成ルールやフォーマット
を指定します。
例 135 Coreファイル設定
ABRT の 詳 細 は 以 下 の URL を 参 照 し て く だ さ い 。 https://access.redhat.com/site/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/
Deployment_Guide/sect-abrt-configuration.html
# mkdir –p /var/crash/abrt
# chown abrt:abrt /var/crash/abrt
# chmod 755 /var/crash/abrt
# cat /etc/abrt/abrt.conf
DumpLocation = /var/spool/abrt ← 出力ディレクトリ
MaxCrashReportsSize = 0 ← ファイル・サイズの制限なし
# cat /etc/abrt/abrt-action-save-package-data.conf OpenGPGCheck = no
# cat /etc/abrt/plugins/CCpp.conf MakeCompatCore = no
SaveBinaryImage = yes
12.4 その他
12.4.1 SSH
レプリケーション環境では、アーカイブログのギャップを解消するために recovery.conf ファイルのrestore_commandパラメータが使用されます。ここにはアーカイブログ・ファ イルのコピー用コマンドを記述します。プライマリ・ホストにscpコマンドでパスワードな しで接続できるように設定を行います。
12.4.2 Firewall
ファイア・ウォールを使用する場合はローカルTCPポート5,432(パラメータport)に 対する接続を許可します。
12.4.3 SE-Linux
現状では SE-Linux とPostgreSQL の組み合わせについて明確な指針が無いように見え
ます。PermissiveモードまたはDisabledモードに設定することが一般的です。