在 Linux 上运行 IBM Informix 出现响应缓慢,通常不是单一原因,而是多个层面叠加的结果。下面按最常见 → 较少见的顺序,系统分析可能原因及排查思路。
排查:
SET EXPLAIN ON;
-- 执行慢 SQL
查看 sqexplain.out 是否出现:
Sequential Scan解决:
UPDATE STATISTICS HIGH FOR TABLE table_name;
CREATE INDEX idx_xxx ON table_name(col);
Informix 对锁非常敏感。
常见现象:
排查:
SELECT * FROM sysmaster:syslocks;
SELECT * FROM sysmaster:syssesprof;
解决:
排查:
onstat -x
onstat -l
解决:
Informix 依赖:
表现:
排查:
onstat -p
关注:
bufreads / bufwritespagreads解决:
BUFFERSLRUS常见不合理参数:
BUFFERS 太小LOCKS 不足LOGSMAX 过低RESIDENT 未开启Informix 对 IO 极敏感。
排查:
iostat -x 1
关注:
%util 接近 100%await 很高解决:
ext4 或 xfs错误示例:
mount | grep informix
如果有:
atimebarrier=1(某些场景)建议:
noatime,nodiratime
一旦 Informix 被 swap,性能断崖式下降。
排查:
free -m
vmstat 1
解决:
重点参数:
shmmaxshmallsemnr_open示例(常见最小值):
kernel.shmmax = 物理内存 * 80%
kernel.shmall = shmmax / page_size
排查:
ping db_host
telnet db_host 9088
排查:
onstat -u
onstat -
onstat -p
onstat -x
onstat -l
onstat -u
iostat -x 1
free -m
你可以补充:
onstat -p 关键指标我可以直接帮你判断是 IO、锁、还是配置问题,并给出具体参数修改建议。