在 Linux 上运行 IBM Informix Dynamic Server(IDS) 时,性能调优通常分为 操作系统层(Linux) 和 数据库层(Informix 参数) 两部分。下面从实战角度给你一个系统化的调优指南。
# 共享内存
kernel.shmmax = 68719476736 # 单段最大共享内存(如 64GB)
kernel.shmall = 16777216 # 共享内存总页数
kernel.shmmni = 4096
# 信号量
kernel.sem = 250 32000 100 1024
# 文件句柄
fs.file-max = 655360
# 网络
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_tw_reuse = 1
执行:
sysctl -p
informix soft nofile 65536
informix hard nofile 65536
informix soft nproc 16384
informix hard nproc 16384
echo never > /sys/kernel/mm/transparent_hugepage/enabled
(建议写入 rc.local)
配置文件:
$INFORMIXDIR/etc/onconfig.<servername>
SHMTOTAL 0 # 0=自动,生产建议设具体值
BUFFERS 100000 # 缓冲池(页),根据内存调整
LOCKS 200000
LOGSIZE 10240 # 逻辑日志大小(KB)
示例(64GB 内存):
BUFFERS 2000000 # ~16GB
VPCLASS cpu,num=8 # CPU VP 数量
VPCLASS aio,num=4 # 异步 IO VP
MULTIPROCESSOR 1
NUMCPUVPS 8
SINGLE_CPU_VP 0
经验:
NUMCPUVPS ≈ 物理核数PRIORITY 调整RA_PAGES 256
RA_THRESHOLD 64
CKPTINTVL 300
LRUS 8
LUR 80
LRUS:缓冲 LRU 队列数LUR:脏页刷新阈值NETTYPE socssl,1,50,CPU
NETTYPE ipcshm,1,100,CPU
UPDATE STATISTICS HIGH FOR TABLE tab1;
UPDATE STATISTICSCREATE TABLE t1 (
id INT
) FRAGMENT BY ROUND ROBIN IN dbs1, dbs2, dbs3;
DBSPACETEMP tempdbs1,tempdbs2
onstat -p # 性能概要
onstat -g seg # 共享内存
onstat -g io # IO 分布
onstat -g sql # SQL 状态
onstat -g ses
onstat -g sql <session_id>
online.logonlogPDQPRIORITY 50
如果你能提供:
我可以给你一套 可直接用的 onconfig 模板。