温馨提示×

linux informix如何调参数

小樊
44
2026-09-20 08:41:10
栏目: 智能运维

在 Linux 上调整 IBM Informix 参数,通常分为 ONCONFIG 参数调整、操作系统参数配合 和 动态参数调整 三类。下面给你一个实用、可操作的说明。


一、Informix 核心参数文件(ONCONFIG)

1. 找到 ONCONFIG 文件

cd $INFORMIXDIR/etc
ls onconfig.*

常见文件名:

onconfig.std
onconfig.servername

查看当前使用的配置文件:

onstat -c | head

或:

echo $ONCONFIG

2. 常见需要调的参数(重要)

(1)内存相关

BUFFERS         # 数据缓冲区(非常重要)
SHMVIRTSIZE     # 虚拟内存初始大小
SHMADD          # 虚拟内存每次增加大小
LOCKS           # 锁数量

示例:

BUFFERS 200000
SHMVIRTSIZE 32768
SHMADD 8192
LOCKS 20000

BUFFERS 一般根据物理内存的 20%~40% 调整(OLTP 场景)


(2)连接与线程

NUMCPUVPS       # CPU VP 数量
NETTYPE         # 网络类型与连接数
MULTIPROCESSOR  # 是否多CPU

示例:

NUMCPUVPS 4
NETTYPE soctcp,1,50,CPU

(3)日志与检查点

LOGSMAX
LOGBUFF
CKPTINTVL

3. 修改方式

直接编辑:

vi $INFORMIXDIR/etc/onconfig.yourserver

⚠️ 大部分参数需要重启生效

onmode -ky
oninit -v

二、动态可调参数(无需重启)

1. 在线修改参数

onmode -wf "LOCKS=30000"

或写入配置文件:

onmode -wm "BUFFERS=250000"

查看:

onstat -c | grep BUFFERS

2. 调整 VP(CPU)

onmode -p +2 cpu

(增加 2 个 CPU VP)


三、Linux 系统层配合参数(很关键)

1. 共享内存

sysctl -a | grep shm

建议:

kernel.shmmax = 物理内存一半以上
kernel.shmall = shmmax / PAGE_SIZE

修改:

vi /etc/sysctl.conf
kernel.shmmax = 8589934592
kernel.shmall = 2097152

生效:

sysctl -p

2. 文件句柄

ulimit -n

Informix 用户建议:

nofile 65536

修改:

vi /etc/security/limits.conf
informix soft nofile 65536
informix hard nofile 65536

3. 信号量

sysctl -a | grep sem

常见:

kernel.sem = 250 32000 100 1024

四、常用检查命令

onstat -i
onstat -g seg     # 内存
onstat -g sql     # SQL
onstat -p         # 性能
onstat -g cfg     # 参数

五、调参建议流程

  1. 先看瓶颈
    onstat -p
    
  2. 再调对应参数
    • 命中率低 → BUFFERS
    • 锁等待 → LOCKS
    • CPU 高 → NUMCPUVPS
  3. 小步调整,观察效果
  4. 修改前备份 onconfig

如果你能告诉我:

  • Informix 版本
  • Linux 版本
  • 内存大小
  • 用途(OLTP / 报表 / 混合)

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

0 踩