温馨提示×

linux informix怎么调内存

小樊
46
2026-10-05 00:20:01
栏目: 智能运维

在 Linux 上调整 IBM Informix Dynamic Server(IDS) 的内存,主要从 ONCONFIG 参数、操作系统内核参数 和 监控手段 三方面入手。下面按实战步骤说明。


一、确认当前内存使用情况

1. 查看 Informix 内存配置

onstat -g cfg | grep -i memory

重点看:

  • SHMVIRTSIZE
  • SHMADD
  • BUFFERS
  • LOCKS
  • LOGSIZE
  • RESIDENT

2. 查看实际内存使用

onstat -g mem
onstat -p

观察:

  • 虚拟段是否频繁增长
  • 缓冲命中率(cache hit ratio)

二、核心 ONCONFIG 内存参数(最重要)

配置文件位置:

$INFORMIXDIR/etc/$ONCONFIG

1. 共享内存基础大小

SHMVIRTSIZE  <初始共享内存大小,单位 KB>
SHMADD       <每次扩展大小,单位 KB>

示例:

SHMVIRTSIZE 2097152   # 2GB
SHMADD      262144    # 256MB

如果 onstat -g seg 频繁扩展,说明 SHMVIRTSIZE 偏小。


2. 缓冲池(最影响性能)

BUFFERS <缓冲页数>

每页默认 2KB(由 PAGESIZE 决定)

示例:

BUFFERS 500000   # 约 1GB

查看命中率:

onstat -p

命中率 < 95% 可考虑增加 BUFFERS


3. 锁内存

LOCKS <锁数量>

示例:

LOCKS 200000

4. 常驻内存(可选)

RESIDENT 1

让 Informix 尽量不 swap(仅内存充足时)


三、Linux 系统层内存调整

1. 关闭 swap 倾向(避免抖动)

sysctl -w vm.swappiness=10

2. 共享内存内核参数(常见必改)

# /etc/sysctl.conf
kernel.shmmax = 8589934592     # 8GB
kernel.shmall = 2097152        # 页数 * 4KB
kernel.sem = 250 32000 100 128

生效:

sysctl -p

3. 确认内存足够

free -h
top

四、在线调整(不必重启)

1. 在线增加缓冲池

EXECUTE FUNCTION sysadmin:task(
  "modify bufferpool",
  "default", 1000000
);

2. 增加虚拟内存段

EXECUTE FUNCTION sysadmin:task("add memory", 524288);

五、常见调优建议

  • OLTP 系统:BUFFERS 大、LOCKS 多
  • 数据仓库:SORTSIZE、PDQPRIORITY 调大
  • 不要一次性给太大,先观察 onstat -g mem
  • 总内存建议:
    Informix <= 70% 物理内存
    

六、典型示例(8GB 服务器)

SHMVIRTSIZE 4194304
SHMADD 524288
BUFFERS 800000
LOCKS 300000
RESIDENT 1

如果你愿意,可以告诉我:

  • Informix 版本(onstat -V)
  • 物理内存大小
  • 是 OLTP 还是报表型应用

我可以给你一套 精确参数模板。

0 踩