OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

物理メモリサイズを変更する場合の留意事項

公開日:
更新日:
基本操作
#サイズ

はじめに

仮想環境やクラウド環境にVerticaを導入している場合、性能向上やコスト削減の目的などで物理メモリサイズを拡張/縮小したい場面があります。本記事では、物理メモリサイズを変更する場合にVertica側で必要となる作業を解説します。

作業内容

概要

① 要件チェックスクリプトを実行
② ユーザ定義リソースプールのmaxmemorysizeを変更
③ Vertica停止
④ サーバ(OS)停止
⑤ メモリ増設
⑥ サーバ(OS)起動
⑦ 増設したメモリが認識されているか確認
⑧ 要件チェックスクリプトを実行
⑨ カーネルパラメータ変更
⑩ サーバ(OS)再起動
⑪ 要件チェックスクリプトを実行
⑫ Vertica起動

① 要件チェックスクリプトを実行

メモリ増設前に、システム要件を満たしているか確認します。以下のスクリプトを全ノードにて、rootユーザ(OS) で実行します。Vertica のバージョンによって、スクリプトの実行パスが違うので、ご注意ください。

<< Vertica 9.2 まで >>
# /opt/vertica/oss/python/bin/python -m vertica.local_verify
 
<< Vertica 9.3 から 11.0 まで >>
# /opt/vertica/oss/python3/bin/python3.7 -m vertica.local_verify 

<< Vertica 11.1 >>
# /opt/vertica/oss/python3/bin/python3.9 -m vertica.local_verify

Verticaの要件を満たしている場合は、「pass: 50」が出力されます。

<< Vertica 10.1 の実行例 >>

Summary:
---
    pass: 50

Output found in /opt/vertica/log/local-verify-20210708_082218.xml

② ユーザ定義リソースプールの maxmemorysize を変更

ユーザ定義のリソースプールを作成して maxmemorysize を明示的に定義している場合は、必要に応じて maxmemorysize の値も調整します。

以下は、test_pool リソースプールの maxmemorysize を「5GB → 10GB」に拡張する場合の例です。

/* 作成済みのリソースプールを確認する SQL */
dbadmin=> SELECT name, memorysize, maxmemorysize FROM resource_pools;
   name    | memorysize | maxmemorysize
-----------+------------+---------------
 general   |            | Special: 95%
 sysquery  | 1G         |
 tm        | 10G        |
 refresh   | 0%         |
 recovery  | 0%         |
 dbd       | 0%         |
 jvm       | 0%         | 2G
 blobdata  | 0%         | 10%
 metadata  | 0%         |
 test_pool | 5G         |
(10 rows)

/* MAXMEMORYSIZE を調整する SQL */
dbadmin=> ALTER RESOURCE POOL test_pool MAXMEMORYSIZE '10G';
ALTER RESOURCE POOL

/* 調整後の確認 */
dbadmin=> SELECT name, memorysize, maxmemorysize FROM resource_pools;
   name    | memorysize | maxmemorysize
-----------+------------+---------------
 general   |            | Special: 95%
 sysquery  | 1G         |
 tm        | 10G        |
 refresh   | 0%         |
 recovery  | 0%         |
 dbd       | 0%         |
 jvm       | 0%         | 2G
 blobdata  | 0%         | 10%
 metadata  | 0%         |
 test_pool | 5G         | 10G
(10 rows)

③ Vertica 停止

メモリ増設をするために、Vertica を停止します。
「Management Console → エージェント → Vertica データベース」の順番に停止します。

④ サーバ(OS)停止

メモリ増設をするために、サーバ(OS) を停止します。
ご利用環境の手順にしたがって、停止をしてください。

⑤ メモリ増設

メモリの増設をします。
ご利用環境の手順にしたがって、増設をしてください。

⑥ サーバ(OS)を起動

サーバ(OS)を起動します。
ご利用環境の手順にしたがって、起動をしてください。

⑦ 増設したメモリが認識されているか確認

増設したメモリがハードウェア、OS レベルで認識されているか、確認します。
ご利用環境の手順にしたがって、確認をしてください。

⑧ 要件チェックスクリプトを実行

以下のスクリプトを全ノードにて、rootユーザ(OS) で実行します。

<< Vertica 9.2 まで >>
# /opt/vertica/oss/python/bin/python -m vertica.local_verify
 
<< Vertica 9.3 から 11.0 まで >>
# /opt/vertica/oss/python3/bin/python3.7 -m vertica.local_verify 

<< Vertica 11.1 >>
# /opt/vertica/oss/python3/bin/python3.9 -m vertica.local_verify

メモリサイズが変わることで、local_verify が検出の可能性があるパラメータは、以下のとおりです。
local_verify が検出したものだけを対応してください。各パラメータを (a)~(f) として、以下に記載します。

<< Vertica 10.1 の実行例 >>

(a) min_free_kbytes Setting
  以下のように出力された場合は、推奨値である「71772」を設定します。

  # CheckNodeSysctl.check_vm_min_free_kbytes (0.001s)
      FAIL (S0050): vm.min_free_kbytes is too low: your 67584 kB < 71772 kB
          https://www.vertica.com/docs/10.1.x/HTML/index.htm#cshid=S0050

(b) System Max Open Files Limit
   以下のように出力された場合は、推奨値である「314413」を設定します。
   
   # CheckNodeSysctl.check_fs_file_max (0.001s)
       FAIL (S0120): fs.max-file is too low: your 262425 < 314413
           https://www.vertica.com/docs/10.1.x/HTML/index.htm#cshid=S0120

(c) pid_max Setting
   以下のように出力された場合は、推奨値である「524288」を設定します。
  
  # CheckNodeSysctl.check_kernel_pid_max (0.001s)
      FAIL (S0111): kernel.pid_max is too low: found 10000, which is below threshold 524288
          https://www.vertica.com/docs/10.1.x/HTML/index.htm#cshid=S0111

(d) Maximum Memory Maps Configuration
   以下のように出力された場合は、推奨値である「20122476」を設定します。

   # CheckNodeSysctl.check_vm_max_map_count (0.001s)
       FAIL (S0130): vm.max_map_count is too low: your 16509820 < 20122476
           https://www.vertica.com/docs/10.1.x/HTML/index.htm#cshid=S0130

(e) User Max Open Files Limit
   以下のように出力された場合は、推奨値である「314413」を設定します。
   
   # CheckNodeLimits.check_open_file_limit (0.170s)
       FAIL (S0060): Limits for open files are too low: your hard limit 257965 < 314413, your soft limit 257965 < 314413.
           https://www.vertica.com/docs/10.1.x/HTML/index.htm#cshid=S0060

(f) User Process Limit
   以下のように出力された場合は、推奨値である「314413」を設定します。
   
   # CheckNodeLimits.check_user_proc_limit (0.173s)
       FAIL (S0110): Limits for user processes are too low: your hard limit 257965 < 314413, your soft limit 257965 < 314413.
           https://www.vertica.com/docs/10.1.x/HTML/index.htm#cshid=S0110

⑨ カーネルパラメータ変更

「⑧」の検出内容に修正するために、各パラメータを全ノードで変更します。

[設定ファイル]

(a)~(d)の設定ファイル:/etc/sysctl.conf
(e)~(f)の設定ファイル:/etc/security/limits.conf

[パラメータ]
設定例を以下に記載していますが、設定値には local_verify が出力する推奨値を指定してください。

(a) vm.min_free_kbytes = 71772
(b) fs.file-max        = 314413
(c) kernel.pid_max     = 524288
(d) vm.max_map_count   = 20122476
(e) dbadmin -       nofile  314413
(f) dbadmin -       nproc   314413

⑩ サーバ(OS)再起動

カーネルパラメータの設定変更を反映するために、サーバ(OS)再起動を実行します。

⑪ 要件チェックスクリプトを実行

設定に漏れがないかの確認をおこなうため、以下のスクリプトを全ノードにて、rootユーザ(OS)で実行します。

<< Vertica 9.2 まで >>
# /opt/vertica/oss/python/bin/python -m vertica.local_verify
 
<< Vertica 9.3 から 11.0 まで >>
# /opt/vertica/oss/python3/bin/python3.7 -m vertica.local_verify 

<< Vertica 11.1 >>
# /opt/vertica/oss/python3/bin/python3.9 -m vertica.local_verify

Verticaの要件を満たしている場合は、「pass:50」が出力されます。

<< Vertica 10.1 の実行例 >>

Summary:
---
    pass: 50

Output found in /opt/vertica/log/local-verify-20210708_082218.xml

⑫ Vertica起動

Management Console、エージェント、Verticaデータベースのステータスを確認します。
もし、停止している場合は起動します。

検証バージョンについて

この記事の内容はVertica 11.1で確認しています。

更新履歴

2022/07/05 11.1用のコマンドを追加
2021/07/14 Vertica 10.1用に手順修正、見出しを要件チェックスクリプトに修正
2019/11/08 Vertica 9.2用に手順修正
2018/07/26 本記事を公開