在 Ubuntu 下遇到 Informix 性能慢,一般可以从 系统层、数据库层、SQL 层、配置层 四个方面排查和优化。下面给你一个实用清单(偏运维和调优)。
不要一上来就调参数,先定位:
top
iostat -x 1
vmstat 1
重点看:
onstat -g ses
onstat -g sql
onstat -g lon
看是否有:
Informix 建议:
示例:
mount -o noatime /dev/sdb1 /informix
/etc/fstab:
/dev/sdb1 /informix ext4 noatime 0 2
sysctl vm.swappiness
建议:
sysctl -w vm.swappiness=10
Informix 用大页效果明显:
sysctl -w vm.nr_hugepages=4096
BUFFERPOOL size=4k,buffers=100000
或:
BUFFERS 200000
查看命中率:
onstat -p
看 bufreads / bufwrites 命中率是否 > 95%
onstat -k
onstat -g wsc
如果锁等待多:
LOCKSCKPTINTVL 300
PHYSBUFF 512
LOGBUFF 512
onstat -g sql
SET EXPLAIN ON;
SELECT ...
看是否:
常见优化:
SELECT *UPDATE STATISTICS HIGH FOR TABLE table_name;
检查:
systemctl show informix | grep Limit
可能需调整:
LimitNOFILE=65536
LimitMEMLOCK=infinity
Ubuntu 上 gettimeofday 慢可能影响 Informix:
top / iostat → 看 IO 还是 CPUonstat -g ses → 看卡在哪onstat -g sql → 找慢 SQLUPDATE STATISTICS如果你愿意,可以把下面信息发我,我可以更精确帮你:
onstat -p 输出我可以直接给你具体 onconfig 参数和 SQL 改写方案。