温馨提示×

linux informix为何占cpu

小樊
42
2026-09-23 07:38:20
栏目: 智能运维

在 Linux 上 Informix 占用 CPU 高,通常不是“Informix 本身吃 CPU”,而是某种工作负载或配置问题导致。下面按常见原因 → 排查方法 → 解决思路来说明。


一、最常见原因

1. 慢 SQL / 全表扫描

这是 CPU 高的最主要原因。

表现:

  • onstat -g ses / onstat -g sql 中某 session 长期活跃
  • CPU 使用率随业务波动
  • 单条 SQL 运行很久

排查:

onstat -g ses
onstat -g sql
onstat -g act

重点看:

  • RUNNING 状态
  • ISAM cost 高
  • 没有用到索引(seqscan)

解决:

  • 建/补索引
  • 改写 SQL
  • 设置:SET EXPLAIN ON
  • 禁止全表扫描(测试):
SET ENVIRONMENT OPTCOMPIND 2;

2. 缺少索引 / 统计信息过期

Informix 优化器依赖 UPDATE STATISTICS。

表现:

  • 查询计划突变
  • 原来快,现在慢

解决:

UPDATE STATISTICS HIGH FOR TABLE table_name;
-- 或
UPDATE STATISTICS LOW;

3. CPU VP 配置不合理

Informix 使用 CPU VP(Virtual Processor)

常见错误:

  • numcpuvps 太大 → 上下文切换
  • 太小 → 排队、CPU 空转

查看:

onstat -g glo
onstat -g vpc

建议:

  • numcpuvps ≈ 物理核数(不要远超)
  • 不要在虚拟机上开太多 VP

4. 锁等待 / 死锁导致重试

表现:

  • CPU 不高但业务卡
  • 或 CPU 忽高忽低

排查:

onstat -g sql
onstat -g lac
onstat -g wai

解决:

  • 缩短事务
  • 调整隔离级别
  • 排查热点行

5. 日志 / 检查点频繁

表现:

  • CPU 周期性尖峰
  • 磁盘 IO 也高

查看:

onstat -g ckp
onstat -g log

优化:

  • 调整 LOGFILES / LOGBUFF
  • 调整 CKPTINTVL
  • 使用缓冲日志(视业务)

6. 操作系统层面问题

Linux 本身问题也可能“看起来是 Informix”

检查:

top -H
pidstat -p <informix_pid>
mpstat

看:

  • 是 user cpu 还是 sys cpu
  • 是否大量上下文切换

二、快速定位步骤(推荐)

# 1. 看整体
onstat -
onstat -g glo

# 2. 看谁在跑
onstat -g ses
onstat -g sql

# 3. 看 CPU VP
onstat -g vpc

# 4. 系统层
top
pidstat -tu -p <pid>

三、如果你愿意,我可以更具体帮你

你可以贴出:

  1. onstat - 输出
  2. onstat -g ses 中 CPU 高的 session
  3. 慢 SQL(可脱敏)
  4. Linux 版本 + Informix 版本

我可以直接帮你判断 是 SQL 问题、配置问题,还是系统问题。

0 踩