这些常规操作系统设置如果不符合 Vertica 要求,将由安装程序自动配置。通过将 --no-system-configuration
参数用于 install_vertica
脚本,可以阻止安装程序自动进行这些配置更改。
常规操作系统配置 - 由安装程序自动配置
- 1: Sysctl
- 2: Nice 限制配置
- 3: min_free_kbytes 设置
- 4: 用户可打开的文件数上限
- 5: 系统可打开的文件数上限
- 6: Pam 限制
- 7: pid_max 设置
- 8: 用户地址空间限制
- 9: 用户文件大小限制
- 10: 用户进程限制
- 11: 最大内存映射配置
1 - Sysctl
在安装过程中,Vertica 会尝试自动更改各种操作系统级别的设置。安装程序无法更改系统中超出安装程序要求的阈值的值。通过将 --no-system-configuration
参数用于 install_vertica
脚本,可以阻止安装程序自动进行这些配置更改。
要永久编辑某些设置并防止其在重新引导后恢复原来的设置,请使用 sysctl。
与 Vertica 的安装相关的 sysctl 设置包括:
使用 sysctl 永久更改设置:
-
以 root 用户身份打开 /etc/sysctl.conf 文件:
# vi /etc/sysctl.conf
-
输入参数和值:
parameter = value
例如,要设置
fs.file-max
参数和值以满足 Vertica 要求,请输入:fs.file-max = 65536
-
保存更改并关闭 /etc/sysctl.conf 文件。
-
以 root 用户身份重新加载配置文件:
# sysctl -p
确定安装程序添加的设置
可通过打开 /etc/sysctl.conf 文件来查看安装程序是否已添加某项设置:
# vi /etc/sysctl.conf
如果安装程序已添加某项设置,则会显示以下行:
# The following 1 line added by Vertica tools. 2015-02-23 13:20:29
parameter = value
2 - Nice 限制配置
Vertica 系统用户(默认为 dbadmin)必须能够提高和降低 Vertica 进程的优先级。为此,/etc/security/limits.conf
文件中的 Nice 选项必须包含 dbadmin 用户的条目。安装程序将以标识符S0010 报告此问题。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
注意
Vertica 决不会将优先级提高到超过默认级别 0。但 Vertica 可以降低特定 Vertica 线程的优先级,并且需要能够将这些线程的优先级提高回默认级别。此设置允许 Vertica 将优先级提高回默认级别。所有系统
要为 dbadmin 用户设置 Nice 限制配置,请编辑 /etc/security/limits.conf
并添加以下行。将 dbadmin 替换为系统用户的名称。
dbadmin - nice 0
3 - min_free_kbytes 设置
本主题详细说明如何更新 min_free_kbytes 设置,使其在 Vertica 支持的范围以内。安装程序将以标识符S0050(如果设置的值过低)或 S0051(如果设置的值过高)报告此问题。
vm.min_free_kbytes 设置将配置页面回收阈值。增大此数字时,系统会更早开始回收内存,减小此数字时,系统会更晚开始回收内存。min_free_kbytes 的默认值是在启动时基于系统中可用的物理 RAM 页数进行计算。
该设置必须是以下选项中的最大值:
-
系统配置的默认值
-
4096
-
运行以下命令的结果:
$ memtot=`grep MemTotal /proc/meminfo | awk '{printf "%.0f",$2}'` $ echo "scale=0;sqrt ($memtot*16)" | bc
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
所有系统
要手动设置 min_free_kbytes:
-
使用以下命令确定当前/默认设置:
$ sysctl vm.min_free_kbytes
-
如果前一条命令的结果是
No such file or directory
,或默认值小于 4096,则运行以下命令确定正确的值:$ memtot=`grep MemTotal /proc/meminfo | awk '{printf "%.0f",$2}'` $ echo "scale=0;sqrt ($memtot*16)" | bc
-
使用上一条命令输出中的值,在
/etc/sysctl.conf
中编辑或添加vm.min_free_kbytes
的当前值。# The min_free_kbytes setting vm.min_free_kbytes=16132
-
运行
sysctl -p
立即在sysctl.conf
中应用更改。注意
必须对群集中的每个节点重复执行这些步骤。
4 - 用户可打开的文件数上限
本主题详细说明如何更改用户可打开的文件数上限设置,使其满足 Vertica 要求。安装程序会以标识符 S0060 报告此问题。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
Vertica 要求在打开文件时不限制 dbadmin 用户。每个用户的打开文件限制计算如下:
用户可打开的文件数上限 = { ≥ 65536 | ≤ RAM-MBs }
作为 dbadmin 用户,您可以通过运行 ulimit -n
来确定打开文件的限制。例如:
$ ulimit -n
65536
要手动设置该限制,请编辑 /etc/security/limits.conf
,并针对配置为数据库管理员(默认为 dbadmin
)的用户编辑/添加 nofile
设置。例如:
dbadmin - nofile 65536
该设置必须不小于 65536 MB,但不大于 fs.nr_open
的系统值。例如,Red Hat Enterprise Linux 9 上的 fs.nr_open
值的默认值为 1048576 MB。
注意
系统还有可打开的文件数限制。5 - 系统可打开的文件数上限
本主题详细说明如何修改系统中可打开的文件数限制,使其符合 Vertica 要求。安装程序将以标识符S0120。
Vertica 会打开许多文件。一些平台对于可打开的文件数具有全局限制。必须将可打开的文件数限制设为足够大的值,以免干扰数据库操作。
建议的值至少为以 MB 为单位的内存量,但不小于 65536。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
所有系统
要手动设置可打开的文件数限制:
-
运行
/sbin/sysctl fs.file-max
以确定当前限制。 -
如果该限制不是 65536 或以 MB 为单位的系统内存量(两者中较大者),则在
fs.file-max=max number of files
中编辑或添加/etc/sysctl.conf
。# Controls the maximum number of open files fs.file-max=65536
-
运行
sysctl -p
立即在sysctl.conf
中应用更改。
注意
对于群集中的每个节点,需要重复这些步骤。6 - Pam 限制
本主题详细说明如何启用 Vertica 所需的“su”pam_limits.so 模块。安装程序将以标识符S0070 报告此设置问题。
在一些系统上,文件 /etc/pam.d/su
中没有设置名为 pam_limits.so
的 Pam 模块。如果没有设置该模块,它会禁止将限制(例如打开文件描述符)传递到任何使用 su -
开头的命令。
特别是,Vertica init 脚本将无法启动 Vertica,因为它会使用 su -
命令调用管理工具来启动数据库。此问题最早在 Debian 系统中发现,但在其他 Linux 发行版中可能会导致配置缺失。有关更多详细信息,请参见 pam_limits 手册页。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
所有系统
要手动配置此设置,请将以下行附加到 /etc/pam.d/su
文件:
session required pam_limits.so
有关更多详细信息,请参阅 pam_limits 手册页:man pam_limits
。
7 - pid_max 设置
本主题说明如何将 pid_max
更改为支持的值。pid_max
的值应该是
pid_max = num-user-proc + 2**15 = num-user-proc + 32768
其中,num-user-proc 是以兆字节为单位的内存大小。
pid_max
的最小值是 524288。
如果您的 pid_max
值太低,安装程序会报告此问题并指示最小值。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
所有系统
要更改 pid_max
值:
# sysctl -w kernel.pid_max=524288
8 - 用户地址空间限制
本主题详细说明如何修改 dbadmin 用户的 Linux 地址空间限制,使其符合 Vertica 要求。地址空间设置可控制每个用户的最大线程数和进程数。如果此设置不符合要求,则安装程序会以标识符报告此问题。S0090。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
不得通过用户限制来减小可供 dbadmin 用户使用的地址空间,而必须将其设为无限制 (unlimited)。
所有系统
要手动设置地址空间限制:
-
以 dbadmin 用户身份运行
ulimit -v
以确定当前限制。 -
如果该限制不是无限制 (unlimited),则在
/etc/security/limits.conf
中添加以下行。将 dbadmin 替换为数据库管理员用户
dbadmin - as unlimited
9 - 用户文件大小限制
本主题详细说明如何修改系统中的文件大小限制,以使其符合 Vertica 要求。安装程序将以标识符S0100 报告此问题。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
不得通过用户限制来减小 dbadmin 用户的文件大小限制,而必须将其设为无限制 (unlimited)。
所有系统
要手动设置文件大小限制:
-
以 dbadmin 用户身份运行
ulimit -f
以确定当前限制。 -
如果该限制不是无限制 (unlimited),则在
/etc/security/limits.conf
中编辑/添加以下行。将 dbadmin 替换为数据库管理员用户。
dbadmin - fsize unlimited
10 - 用户进程限制
本主题详细说明如何更改用户进程限制,使其符合 Vertica 要求。安装程序会以标识符:S0110 报告不支持的调度程序问题。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
用户进程限制必须足够高,以允许 Vertica 打开大量线程。建议的限制是以 MB 为单位的 RAM 量,并且必须不小于 1024。
所有系统
要手动设置用户进程限制:
-
以 dbadmin 用户身份运行
ulimit -u
以确定当前限制。 -
如果该限制不是服务器上以 MB 为单位的内存量,则在
/etc/security/limits.conf
中编辑/添加以下行。将 4096 替换为服务器上以 MB 为单位的系统内存量。
dbadmin - nproc 4096
11 - 最大内存映射配置
本主题详细说明如何修改系统中的进程可以拥有的内存映射数量限制,使其符合 Vertica 要求。安装程序将以标识符S0130。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
Vertica 在执行处理时会使用大量内存,并且可能达到每个进程的内存映射默认限制。
建议的值至少为系统中以 KB 为单位的内存量 / 16,但不小于 65536。
所有系统
要手动设置内存映射限制:
-
运行
/sbin/sysctl vm.max_map_count
以确定当前限制。 -
如果该限制不是 65536 或以 KB 为单位的系统内存量 / 16(两者中较大者),则在
/etc/sysctl.conf
中编辑或添加以下行。将 65536 替换为系统值。# The following 1 line added by Vertica tools. 2014-03-07 13:20:31 vm.max_map_count=65536
-
运行
sysctl -p
立即在sysctl.conf
中应用更改。