在 Linux 上调整 IBM Informix Dynamic Server (IDS) 的内存,主要从 操作系统层面 和 Informix 参数配置层面 两方面入手。下面给你一个实用、常见的做法说明。
Informix 主要内存区域包括:
大部分调优都在 共享内存参数 上。
free -h
ipcs -l
Informix 使用 System V 共享内存,需要修改:
sysctl -w kernel.shmmax=21474836480 # 20GB 示例
sysctl -w kernel.shmall=5242880
编辑 /etc/sysctl.conf:
kernel.shmmax = 21474836480
kernel.shmall = 5242880
然后执行:
sysctl -p
shmmax:单个共享内存段最大
shmall:系统总共享内存页数
配置文件位置:
$INFORMIXDIR/etc/$ONCONFIG
BUFFERS 100000 # 每个 buffer 默认 2K(或 4K)
或(推荐新版本):
BUFFERPOOL default,buffers=100000,lrus=8,lru_min_dirty=50,lru_max_dirty=60
计算示例:
VPCLASS cpu,num=4
VPCLASS aio,num=2
SHMVIRTSIZE 1024000 # 初始虚拟共享内存(KB)
SHMADD 327680 # 每次扩展大小(KB)
SHMTOTAL 0 # 0=不限制
RESIDENT 1 # 锁定共享内存在物理内存
LOCKS 20000
LOGSIZE 5000
onmode -ky
oninit -v
onmode -P 200000 # 在线增加缓冲池(11.70+)
ipcs -m
onstat -g mem
onstat -g seg
onstat -p
BUFFERSSHMVIRTSIZESORTSIZE / SHMVIRTSIZESHMTOTAL 和 Linux overcommitBUFFERS 800000
SHMVIRTSIZE 2048000
SHMADD 512000
SHMTOTAL 0
RESIDENT 1
如果你能告诉我:
我可以给你一套 可直接用的 onconfig 参数模板。