温馨提示×

ubuntu下informix慢咋办

小樊
43
2026-09-26 12:31:28
栏目: 智能运维

在 Ubuntu 下遇到 Informix 性能慢,一般可以从 系统层、数据库层、SQL 层、配置层 四个方面排查和优化。下面给你一个实用清单(偏运维和调优)。


一、先确认“慢”在哪里

不要一上来就调参数,先定位:

top
iostat -x 1
vmstat 1

重点看:

  • CPU 是否长期 100%
  • IO wait 是否很高
  • 内存是否频繁 swap
onstat -g ses
onstat -g sql
onstat -g lon

看是否有:

  • 长事务
  • 锁等待
  • 某条 SQL 一直跑

二、系统层常见原因(Ubuntu 特有)

1. 文件系统

Informix 建议:

  • 不要放 ext4 默认挂载
  • 推荐:xfs 或 ext4 + noatime

示例:

mount -o noatime /dev/sdb1 /informix

/etc/fstab:

/dev/sdb1 /informix ext4 noatime 0 2

2. swappiness 太高

sysctl vm.swappiness

建议:

sysctl -w vm.swappiness=10

3. 大页内存(HugePages)

Informix 用大页效果明显:

sysctl -w vm.nr_hugepages=4096

三、Informix 配置调优(重点)

1. 内存相关(onconfig)

BUFFERPOOL size=4k,buffers=100000

或:

BUFFERS 200000

查看命中率:

onstat -p

看 bufreads / bufwrites 命中率是否 > 95%

2. 锁相关

onstat -k
onstat -g wsc

如果锁等待多:

  • 调整 LOCKS
  • 减少长事务
  • 使用行级锁而不是表锁

3. 日志与检查点

CKPTINTVL 300
PHYSBUFF 512
LOGBUFF 512

四、SQL 层优化(最常见)

1. 看慢 SQL

onstat -g sql

2. 建索引

SET EXPLAIN ON;
SELECT ...

看是否:

  • 全表扫描
  • 没走索引

常见优化:

  • 给 WHERE / JOIN 字段建索引
  • 避免 SELECT *
  • 避免函数包字段

3. 统计信息

UPDATE STATISTICS HIGH FOR TABLE table_name;

五、Ubuntu 特有坑

1. systemd 限制

检查:

systemctl show informix | grep Limit

可能需调整:

LimitNOFILE=65536
LimitMEMLOCK=infinity

2. 时间函数慢

Ubuntu 上 gettimeofday 慢可能影响 Informix:

  • 用较新内核
  • 避免频繁时间调用

六、快速排查顺序(建议)

  1. top / iostat → 看 IO 还是 CPU
  2. onstat -g ses → 看卡在哪
  3. onstat -g sql → 找慢 SQL
  4. UPDATE STATISTICS
  5. 调 BUFFERPOOL
  6. 文件系统 noatime + xfs

如果你愿意,可以把下面信息发我,我可以更精确帮你:

  • Informix 版本
  • Ubuntu 版本
  • onstat -p 输出
  • 慢的 SQL
  • 数据量级别

我可以直接给你具体 onconfig 参数和 SQL 改写方案。

0 踩