在 Ubuntu 上运行 IBM Informix(如 Informix Dynamic Server,IDS),“调内存”通常涉及两个方面:
onconfig 配置内存相关参数下面按实战步骤说明。
Informix 大量使用 System V 共享内存
查看当前限制:
ipcs -l
常见需要调整的(/etc/sysctl.conf):
kernel.shmmax = 68719476736 # 单段最大共享内存(示例64GB)
kernel.shmall = 16777216 # 总共享内存页数(页数×PAGE_SIZE)
kernel.shmmni = 4096 # 共享内存段数
应用:
sysctl -p
如果
shmmax太小,Informix 会启动失败或只能用小内存
kernel.sem = 250 32000 100 1024
含义:
SEMMSL SEMMNS SEMOPM SEMMNI
避免 swap:
vm.swappiness = 10
如果 Informix 用户需要锁定内存:
ulimit -l unlimited
(在 /etc/security/limits.conf 中配置)
配置文件:
$INFORMIXDIR/etc/$ONCONFIG
SHMEM_SIZE 4096 # 初始共享内存(MB)
SHMEM_ADD 2048 # 动态扩展
或新版:
BUFFERPOOL size=4K,buffers=100000
LOGBUF_SIZE 512 # KB
PHYSBUFF 512
VPCLASS cpu,num=8
VPCLASS aio,num=4
内存相关:
MEMORY_SIZE 8192 # 虚拟内存池(MB)
示例(16GB buffer):
BUFFERPOOL size=4K,buffers=4000000
计算:
4KB × 4,000,000 ≈ 16GB
onstat -g mem
onstat -p
onstat -g seg
ipcs -m
❌ Could not allocate shared memory
→ shmmax 太小
❌ Informix 启动慢
→ BUFFERPOOL 过大或 swappiness 高
❌ OOM Killer 杀进程
→ Ubuntu 内存不足或 MEMORY_SIZE 设置过高
shmmax / shmall / sem 必须调如果你能告诉我:
我可以直接帮你写一套 onconfig + sysctl 配置示例。