在 Linux 上调整 IBM Informix Dynamic Server(IDS) 的内存,主要从 ONCONFIG 参数、操作系统内核参数 和 监控手段 三方面入手。下面按实战步骤说明。
onstat -g cfg | grep -i memory
重点看:
SHMVIRTSIZESHMADDBUFFERSLOCKSLOGSIZERESIDENTonstat -g mem
onstat -p
观察:
配置文件位置:
$INFORMIXDIR/etc/$ONCONFIG
SHMVIRTSIZE <初始共享内存大小,单位 KB>
SHMADD <每次扩展大小,单位 KB>
示例:
SHMVIRTSIZE 2097152 # 2GB
SHMADD 262144 # 256MB
如果
onstat -g seg频繁扩展,说明 SHMVIRTSIZE 偏小。
BUFFERS <缓冲页数>
每页默认 2KB(由 PAGESIZE 决定)
示例:
BUFFERS 500000 # 约 1GB
查看命中率:
onstat -p
命中率 < 95% 可考虑增加 BUFFERS
LOCKS <锁数量>
示例:
LOCKS 200000
RESIDENT 1
让 Informix 尽量不 swap(仅内存充足时)
sysctl -w vm.swappiness=10
# /etc/sysctl.conf
kernel.shmmax = 8589934592 # 8GB
kernel.shmall = 2097152 # 页数 * 4KB
kernel.sem = 250 32000 100 128
生效:
sysctl -p
free -h
top
EXECUTE FUNCTION sysadmin:task(
"modify bufferpool",
"default", 1000000
);
EXECUTE FUNCTION sysadmin:task("add memory", 524288);
onstat -g memInformix <= 70% 物理内存
SHMVIRTSIZE 4194304
SHMADD 524288
BUFFERS 800000
LOCKS 300000
RESIDENT 1
如果你愿意,可以告诉我:
onstat -V)我可以给你一套 精确参数模板。