安装过程 FAQ

设置防火墙白名单

(root 用户执行)

  1. 新增端口至防火墙白名单。
    firewall-cmd --zone=public --permanent --add-port=5432/tcp
    
  2. 重新加载防火墙白名单。
    firewall-cmd --reload
    
  3. 查看端口列表。
    firewall-cmd --list-port
    

    下列各 IP 端口均为各服务的默认端口,用户应根据实际的的规划做对应替换。
    服务名称 端口号 说明
    VexDB 5432 数据库服务端口
    5433(数据库服务端口+1) 数据库内部工具使用端口
    ntp 123 ntp 默认端口
    HAS 55434 集群本地监听端口
    55435 集群心跳端口
    55436 集群服务端口
    8008 集群通讯端口

以数据库服务端口 5432 为例,开放端口的命令如下:

firewall-cmd --zone=public --permanent --add-port=5432/tcp
firewall-cmd -reload
firewall-cmd -list-ports

内核参数介绍

fs.aio-max-nr

该参数表示可以拥有的异步 IO 请求数目。

推荐值:1048576。

在 Linux 6 和 7 上使用 aio 时需要设置 fs.aio-max-nr 来适应异步 IO。

设置语句:

sysctl fs.aio-max-nr='1048576'

file-max

该参数表示每次登录会话可以打开的文件数。

在 Linux 6 和 7 上,file-max 的值与内核资源使用参数 max_files_per_process 对应。

设置语句:

sysctl fs.file-max='76724600'

kernel.sem

该参数包含 4 个参数(依次为 SEMMSL、SEMMNS、SEMOPM、SEMMNI)。

  • SEMMSL:每个信号量 set 中信号量最大个数,最小取值 250。
  • SEMMNS:Linux 系统中信号量最大个数,至少取值 32000,等于 SEMMSL*SEMMNI。
  • SEMOPM:SEMOP 系统调用允许的信号量最大个数,至少取值 100;或者等于 SEMMSL。
  • SEMMNI:Linux 系统信号量 set 最大个数,最少 128。
说明
  • 使用 ipcs -lipcs -u 查看信号量。
  • 每 16 个进程一组,每组信号量需要 17 个信号量。可根据需要修改 kernel.sem 值。
  • SEMMSL 代表信号量,SEMMNI 代表组。

设置语句:

sysctl kernel.sem='4096 2097152000 4096 512000'

kernel.shmall

该参数用于控制共享内存页数,等于系统内存(建议设置为80%)/PAGE_SIZE,该参数设置太小有可能导致数据库启动报错。

单位:byte

示例:物理内存为 128GB,PAGE 大小为 4096,则 kernel.shmall=128*1024*1024*1024*0.8/4096=26843545

说明
  • 使用 getconf PAGE_SIZE 命令查看 page_size 大小。
  • 内存大小需换算成 bytes。

设置语句:

sysctl kernel.shmall='26843545'

kernel.shmmax

该参数表示最大单个共享内存段大小(建议为大于 shared_buffer 值), 等于系统内存*0.5

单位:bytes

示例:物理内存为128GB,则:kernel.shmmax=128*1024*1024*1024*0.5=68719476736

说明

内存大小需换算成 bytes。

设置语句:

sysctl kernel.shmmax='68719476736'

kernel.shmmni

该参数系统范围内共享内存段的最大数量。

默认值:4096。

说明

每个 VexDB 数据库集群至少 2 个共享内存段。

设置语句:

sysctl kernel.shmmni='819200'

net.core.netdev_max_backlog

该参数表示允许送到队列的数据包的最大数目。

说明

iptables 防火墙链表相关。

设置语句:

sysctl net.core.netdev_max_backlog='10000'

net.core.rmem_default

该参数表示预留用于接收缓冲的内存默认值。

单位:bytes。

设置语句:

sysctl net.core.rmem_default='262144'

net.core.rmem_max

该参数表示预留用于接收缓冲的内存最大值。

单位:bytes。

设置语句:

sysctl net.core.rmem_max='4194304'

net.core.wmem_default

该参数表示预留用于发送缓冲的内存默认值。

单位:bytes。

设置语句:

sysctl net.core.wmem_default='262144'

net.core.wmem_max

该参数表示预留用于发送缓冲的内存最大值。

单位:bytes。

设置语句:

sysctl net.core.wmem_max='4194304'

net.core.somaxconn

该参数表示 socket 监听的 backlog(队列)上限。

默认值:128

设置语句:

sysctl net.core.somaxconn='4096'

net.ipv4.tcp_fin_timeout

该参数表示 FIN_WAIT_2 状态的超时时长。

单位:秒。

说明

用于加快僵死进程回收速度。

设置语句:

sysctl net.ipv4.tcp_fin_timeout='5'

vm.dirty_background_bytes

该参数表示触发回刷的脏页数据量,超过该参数后脏页刷到磁盘。

单位:btyes。

设置语句:

sysctl vm.dirty_background_bytes='409600000'

vm.dirty_expire_centisecs

该参数表示脏数据的过期时间,超过该时间系统会将脏数据回写到磁盘上。

单位:百分之一秒。

说明

比 vm.dirty_expire_centisecs 值旧的脏页,将被刷到磁盘。

以下命令中 3000 代表 30 秒。

设置语句:

sysctl vm.dirty_expire_centisecs='3000'

vm.dirty_ratio

该参数表示脏数据百分比,超过这个百分比,新的 IO 请求将会被阻挡,直到脏数据被写进磁盘。

设置语句:

sysctl vm.dirty_ratio='80'

vm.dirty_writeback_centisecs

该参数表示多长时间,后台刷脏页进程会被唤醒一次,检查是否有缓存需要清理。

单位:百分之一秒。参数设置为 100 代表 1 秒,如下命令中 50 代表 0.5 秒。

设置语句:

sysctl vm.dirty_writeback_centisecs='50'

vm.overcommit_memory

该参数表示内存分配策略,可选值:0、1、2。

  • 0:表示内核将检查是否有足够的可用内存供应用进程使用,如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
  • 1:表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
  • 2:表示内核允许分配超过所有物理内存和交换空间总和的内存。
说明

在分配内存时 vm.overcommit_memory 设置为 0,vm.overcommit_ratio 参数可以不设置。

设置语句:

sysctl vm.overcommit_memory='0'

vm.swappiness

该参数表示激活交换之前可用内存的百分比。数值越低,使用的交换越少,并且物理内存中保留的内存页越多。

默认值:60

说明

设置为 0 时表示关闭交换分区,数据库服务器不建议使用 swap,0 值仅在极限测试时使用。

设置语句:

sysctl vm.swappiness='60'

net.ipv4.ip_local_port_range

该参数可以设置本地动态端口分配范围,防止占用监听端口。

设置语句:

sysctl net.ipv4.ip_local_port_range='40000 65535'

fs.nr_open

该参数表示单个进程可分配的最大文件数。对于有很多对象(表、视图、索引、序列和物化视图等)的数据库,建议设置为 2000 万。

单位:个

说明

建议设置为 2000 万。

设置语句:

sysctl fs.nr_open='20000000'

添加排序规则

在除凝思之外的其他 Linux 操作系统中,添加语言排序规则方法如下:

(root 用户执行)

  1. 执行如下命令安装 locales 包。
    apt-get install locales
    
  2. 执行如下命令,安装新的语言排序规则。
    dpkg-reconfigure locales
    

    也可使用如下命令安装 en_US.utf8。
    localedef -v -c -i en_US -f UTF-8 en_US.UTF-8
    

需要帮助?

扫码添加企业微信
获得专业技术支持

企业微信二维码
🎯 快速响应💡 专业解答