当前位置:首页>Linux>在Linux下给Kingbase8“开小灶”,核心是榨干硬件潜力.除了改数据库参数,必须动系统内核

在Linux下给Kingbase8“开小灶”,核心是榨干硬件潜力.除了改数据库参数,必须动系统内核

  • 2026-09-02 20:21:17
在Linux下给Kingbase8“开小灶”,核心是榨干硬件潜力.除了改数据库参数,必须动系统内核

在Linux下给Kingbase8“开小灶”,核心是榨干硬件潜力。除了改数据库参数,必须动系统内核。针对你之前关注的查询优化,以下配置能直接降低I/O延迟和内存管理开销。

1. 内核参数调优(/etc/sysctl.conf)

核心逻辑:扩大共享内存池、减少内存交换、提升网络吞吐。

# 共享内存(Kingbase重度依赖,必须调大)

kernel.shmall = 4294967296    # 总共享内存页数,通常设物理内存的80%

kernel.shmmax = 68719476736   # 单个共享内存段最大字节(64GB)

kernel.shmmni = 4096          # 共享内存段最大数量

# 内存与交换

vm.swappiness = 1             # 极度厌恶换出,除非内存爆满(防OOM)

vm.dirty_ratio = 10           # 系统脏页占比阈值,写密集型可调高

vm.dirty_background_ratio = 5 # 后台刷脏阈值

# 网络(高并发连接必备)

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.ipv4.tcp_rmem = 4096 87380 16777216

net.ipv4.tcp_wmem = 4096 16384 16777216

net.ipv4.tcp_max_syn_backlog = 4096

net.ipv4.tcp_keepalive_time = 300

生效:

"sysctl -p"

2. 磁盘I/O“手术”(SSD vs HDD)

目标:减少寻道和调度延迟。这是解决“查询慢”最直接的系统手段。

硬件类型 调度算法 预读大小 队列深度

SSD(主流) 

"noop" 或 

"none" 16-32 KB 256-512

HDD(机械) 

"deadline" 256-512 KB 64-128

操作命令(以SSD 

"/dev/sdb"为例):

# 临时生效

echo noop > /sys/block/sdb/queue/scheduler

echo 16 > /sys/block/sdb/queue/read_ahead_kb

echo 512 > /sys/block/sdb/queue/nr_requests

# 永久生效(写入 /etc/rc.local 或 udev规则)

3. 文件系统挂载(XFS首选)

挂载参数:

"defaults,noatime,nodiratime,nobarrier"

- 

"noatime":必加。禁止更新文件访问时间,消除大量元数据写操作(对SELECT查询性能提升显著)。

- 

"nobarrier":仅限有电池保护的RAID卡或企业级SSD,否则有数据损坏风险。

示例(/etc/fstab):

/dev/sdb1 /kingbase_data xfs defaults,noatime,nodiratime 0 0

4. 大页内存(HugePages)配置

适用场景:物理内存 >= 64GB,且

"shared_buffers"设置很大(如32GB+)。

作用:减少TLB Miss,直接提升内存访问速度。

1. 计算页数:

"HugePages = (shared_buffers + 2GB) / 2MB"

2. 配置:

# 禁用透明大页(防干扰)

echo never > /sys/kernel/mm/transparent_hugepage/enabled

# 分配大页(假设需要20000页)

echo 20000 > /proc/sys/vm/nr_hugepages

# 修改用户限制(kingbase用户)

echo "kingbase soft memlock unlimited" >> /etc/security/limits.conf

echo "kingbase hard memlock unlimited" >> /etc/security/limits.conf

3. 数据库启用:在

"kingbase.conf"中设置 

"huge_pages = on"

5. 资源限制(/etc/security/limits.conf)

防止“Too many open files”报错,特别是高并发查询时。

kingbase soft nofile 65536

kingbase hard nofile 65536

kingbase soft nproc 65536

kingbase hard nproc 65536

# 如果用了大页,必须加下面这行

kingbase soft memlock unlimited

kingbase hard memlock unlimited

6. 系统服务“坑位”修复

针对Systemd系统(CentOS 7+/Ubuntu 16+):

编辑 

"/etc/systemd/logind.conf",设置 

"RemoveIPC=no"。

原因:默认

"yes"会导致用户退出时清理IPC信号,可能造成Kingbase进程异常崩溃。

重启:

"systemctl restart systemd-logind"

7. 验证与监控

- 查看调度器:

"cat /sys/block/sdX/queue/scheduler"

- 查看大页:

"cat /proc/meminfo | grep -i huge"

- 查看脏页:

"cat /proc/vmstat | grep dirty"(如果

"nr_dirty"持续很高,说明I/O是瓶颈)

最新文章

随机文章