温馨提示×

linux informix如何调内存

小樊
39
2026-09-23 07:34:21
栏目: 智能运维

在 Linux 上调整 IBM Informix Dynamic Server (IDS) 的内存,主要从 操作系统层面 和 Informix 参数配置层面 两方面入手。下面给你一个实用、常见的做法说明。


一、先搞清楚 Informix 内存都用在哪

Informix 主要内存区域包括:

  • 共享内存(Shared Memory)
    • Resident Buffer Pool(数据缓冲区)
    • Virtual Memory(排序、哈希、会话等)
    • Message Memory
  • 进程私有内存(Private Memory)
    • 线程/会话使用的内存

大部分调优都在 共享内存参数 上。


二、Linux 系统层面准备

1. 检查内存和内核参数

free -h
ipcs -l

2. 调整 Linux 共享内存限制(非常重要)

Informix 使用 System V 共享内存,需要修改:

(1)临时修改

sysctl -w kernel.shmmax=21474836480   # 20GB 示例
sysctl -w kernel.shmall=5242880

(2)永久修改

编辑 /etc/sysctl.conf:

kernel.shmmax = 21474836480
kernel.shmall = 5242880

然后执行:

sysctl -p

shmmax:单个共享内存段最大
shmall:系统总共享内存页数


三、Informix 内存核心参数(onconfig)

配置文件位置:

$INFORMIXDIR/etc/$ONCONFIG

1. 缓冲池(最重要)

BUFFERS        100000     # 每个 buffer 默认 2K(或 4K)

或(推荐新版本):

BUFFERPOOL default,buffers=100000,lrus=8,lru_min_dirty=50,lru_max_dirty=60

计算示例:

  • 100000 × 2KB ≈ 200MB
  • 大库可设几 GB

2. 虚拟内存区域

VPCLASS        cpu,num=4
VPCLASS        aio,num=2

SHMVIRTSIZE    1024000      # 初始虚拟共享内存(KB)
SHMADD         327680       # 每次扩展大小(KB)
SHMTOTAL       0            # 0=不限制

3. 其他常用内存参数

RESIDENT       1            # 锁定共享内存在物理内存
LOCKS          20000
LOGSIZE        5000

四、修改后如何生效

方式 1:重启实例(最常用)

onmode -ky
oninit -v

方式 2:在线调整(部分参数)

onmode -P 200000     # 在线增加缓冲池(11.70+)

五、查看 Informix 内存使用情况

1. 看共享内存

ipcs -m

2. Informix 自带工具

onstat -g mem
onstat -g seg
onstat -p

六、常见调优建议

  • 数据量大:优先加大 BUFFERS
  • 并发高:加大 SHMVIRTSIZE
  • 排序慢:增大 SORTSIZE / SHMVIRTSIZE
  • OOM 被杀:检查 SHMTOTAL 和 Linux overcommit

七、示例:16G 内存服务器参考

BUFFERS         800000
SHMVIRTSIZE     2048000
SHMADD          512000
SHMTOTAL        0
RESIDENT        1

如果你能告诉我:

  • Informix 版本(11.50 / 11.70 / 12.10 / 14.10)
  • 内存大小
  • 主要业务(OLTP / 报表 / 混合)

我可以给你一套 可直接用的 onconfig 参数模板。

0 踩