温馨提示×

ubuntu informix如何调内存

小樊
45
2026-09-14 10:52:23
栏目: 智能运维

Ubuntu 上运行 IBM Informix(如 Informix Dynamic Server,IDS),“调内存”通常涉及两个方面:

  1. 操作系统层面:让 Ubuntu 允许 Informix 使用更多内存(共享内存、信号量等)
  2. Informix 自身参数:通过 onconfig 配置内存相关参数

下面按实战步骤说明。


一、Ubuntu 系统层调整(很重要)

1. 共享内存参数(SHM)

Informix 大量使用 System V 共享内存

查看当前限制:

ipcs -l

常见需要调整的(/etc/sysctl.conf):

kernel.shmmax = 68719476736        # 单段最大共享内存(示例64GB)
kernel.shmall = 16777216           # 总共享内存页数(页数×PAGE_SIZE)
kernel.shmmni = 4096               # 共享内存段数

应用:

sysctl -p

如果 shmmax 太小,Informix 会启动失败或只能用小内存


2. 信号量(Semaphores)

kernel.sem = 250 32000 100 1024

含义:

SEMMSL SEMMNS SEMOPM SEMMNI

3. 内存锁定(可选,大内存推荐)

避免 swap:

vm.swappiness = 10

如果 Informix 用户需要锁定内存:

ulimit -l unlimited

(在 /etc/security/limits.conf 中配置)


二、Informix 内存参数(核心)

配置文件:

$INFORMIXDIR/etc/$ONCONFIG

1. 共享内存总大小

SHMEM_SIZE     4096        # 初始共享内存(MB)
SHMEM_ADD      2048        # 动态扩展

或新版:

BUFFERPOOL size=4K,buffers=100000

2. 物理日志 / 逻辑日志缓冲

LOGBUF_SIZE    512         # KB
PHYSBUFF       512

3. 虚拟内存(VPCLASS & MEMORY)

VPCLASS cpu,num=8
VPCLASS aio,num=4

内存相关:

MEMORY_SIZE    8192        # 虚拟内存池(MB)

4. 缓冲池(最关键)

示例(16GB buffer):

BUFFERPOOL size=4K,buffers=4000000

计算:

4KB × 4,000,000 ≈ 16GB

三、验证 Informix 内存使用

1. 查看是否生效

onstat -g mem
onstat -p
onstat -g seg

2. 查看共享内存

ipcs -m

四、常见错误

Could not allocate shared memoryshmmax 太小

❌ Informix 启动慢 → BUFFERPOOL 过大或 swappiness

❌ OOM Killer 杀进程 → Ubuntu 内存不足或 MEMORY_SIZE 设置过高


五、推荐做法(总结)

  • Ubuntu:shmmax / shmall / sem 必须调
  • Informix:优先调 BUFFERPOOL
  • 不建议一次性拉满,逐步增加
  • 大内存机器建议关闭 swap 或低 swappiness

如果你能告诉我:

  • Informix 版本(如 14.10 / 12.10)
  • 服务器内存大小
  • 用途(OLTP / 报表 / 开发)

我可以直接帮你写一套 onconfig + sysctl 配置示例

0