在 Linux 上 Informix 占用内存高 是比较常见的现象,通常不是“内存泄漏”,而是由其架构和配置机制决定的。下面按常见原因 → 说明 → 排查/优化建议来说明。
Informix 在 Linux 上占用内存,主要包括:
oninit 进程BUFFERPOOL size × 数量 = 内存占用
例如:
如果有多个 dbspace、多个 buffer pool,会叠加。
✅ 查看:
onstat -g buf
✅ 配置位置:
$INFORMIXDIR/etc/onconfig
LOCKS × 每个锁结构大小 ≈ 内存
默认可能几万到几十万。
✅ 查看:
onstat -g sql
onstat -g lac
✅ onconfig 参数:
LOCKS 20000
每个连接都会占用:
✅ 查看:
onstat -g ses
✅ 查看:
onstat -g act
onstat -g lon
Linux 会大量使用内存做 page cache,看起来“内存快满了”。
✅ 正确看:
free -h
关注:
ps -ef | grep oninit
每个 oninit 都可能占用几十~几百 MB。
ipcs -m
top -p $(pgrep oninit)
onstat -g mem
onstat -g seg
BUFFERPOOL size=4k,buffers=20000
freeavailableInformix 在 Linux 上“内存高”,90% 是因为共享内存(BUFFERPOOL / LOCKS)配置大,而不是内存泄漏。
如果你愿意,可以贴:
onstat -g memonconfig 关键参数free -h我可以帮你精确算出来内存都去哪了。