温馨提示×

如何在CentOS上监控Informix的性能指标

小樊
32
2025-12-17 13:36:00
栏目: 智能运维

监控目标与总体架构

  • CentOS 上监控 Informix,建议同时覆盖三层:
    1. 数据库层:使用 onstat、onmode 与查询 sysmaster 系统表获取会话、锁、I/O、SQL 等;
    2. 操作系统层:用 top、vmstat、iostat、sar、netstat 观察 CPU、内存、磁盘、网络;
    3. 平台层:接入 Zabbix、Prometheus、IMMX 等做可视化、告警与历史趋势。这样既能定位数据库内部瓶颈,也能排除环境资源问题。

数据库层监控

  • 使用 Informix 自带工具
    • onstat:实时查看共享内存与运行状态,如 onstat -p(概要统计)、onstat -g(多 VP/CPU、会话线索)、onstat -s(系统统计)、以及 onstat -F(检查缓冲池写压力)。
    • onmode:切换/查询运行模式,配合监控日志切换、内存管理与锁等待等场景。
  • 查询 sysmaster 系统表获取“体检表”
    • 实例运行概况(启动时间、运行时长、长事务等):
      • 执行:dbaccess sysmaster
      • SQL:
        select
          dbinfo('UTC_TO_DATETIME',sh_boottime) start_time,
          current year to second - dbinfo('UTC_TO_DATETIME',sh_boottime) run_time,
          sh_longtx longtxs
        from sysmaster:sysshmvals;
        
    • 实例概要(累计读/写、缓存命中、锁与排序等,相当于 onstat -p 的数据源):
      dbaccess sysmaster
      select name, value from sysmaster:sysprofile;
      
    • 会话与连接负载(来源、库、连接时间、最近执行时间等):
      dbaccess sysmaster
      SELECT s.sid, s.username, s.hostname, q.odb_dbname database,
             dbinfo('UTC_TO_DATETIME',s.connected) connection_time,
             dbinfo('UTC_TO_DATETIME',t.last_run_time) last_run_time
      FROM sysmaster:syssessions s, sysmaster:syssqlstat t, sysmaster:sysvpprof v
      WHERE s.sid = t.sid AND s.sid = v.sid
      ORDER BY last_run_time DESC;
      
    提示:用 onstat -z 清零累计统计后,再观察一段时间增量,便于评估优化成效。

操作系统层监控

  • 关键命令与典型用法
    • top:观察 CPU us/sy、内存占用与数据库进程(如 oninit)是否打满。
    • vmstat 1:查看 r/b、si/so、us/sy/id/wa,识别 CPU 等待、内存换页与 I/O 瓶颈。
    • iostat -x 1:关注 await、r/s、w/s、util%,定位磁盘吞吐与响应时间。
    • sar -u 1:系统 CPU 历史与实时使用率。
    • netstat -an:连接数、端口与网络状态,辅助判断应用与数据库交互是否异常。
  • 实践要点
    • 将数据库数据文件与日志文件分布在不同磁盘/LUN,避免 I/O 争用;
    • iostat util% 持续接近 100%await 明显升高,优先排查慢盘、阵列重建、日志写入拥塞等。

平台化监控与告警

  • 开源与商用方案
    • Zabbix:通过自定义脚本采集 onstat 输出与 SQL 指标,配置阈值与告警,适合中小规模与已有 Zabbix 体系。
    • Prometheus:以 Exporter 方式采集指标,配合 Grafana 做可视化与长期趋势分析。
    • IMMX(IBM Monitoring and Management Extension):与 IBM 生态集成,提供实时监控、历史数据与报表。
    • 其他可选:Nagios、NetData 等,用于快速搭建或增强可视化。
  • 落地建议
    • 指标采集频率:数据库层 15–30 秒,系统层 10–15 秒
    • 关键告警示例:
      • 会话/锁:长事务锁等待/死锁 突增;
      • SQL:seqscans(顺序扫描)与 diskreads 同时偏高;
      • 缓冲池:LRU 写满/检查点频繁onstat -F 显示写压力大;
      • 系统:CPU 持续 >80%iostat util% 持续 >90%可用内存低 且伴随换页。

快速排障与优化要点

  • 识别 SQL 与访问路径问题
    • 通过 sysprofile 观察 seqscans、diskreads 是否异常,配合 set explain on 获取执行计划,必要时建/改索引、改写 SQL。
  • 缓冲池与检查点
    • onstat -ponstat -F 观察 bufreads/bufwrites、LRU 压力、写检查点频率,结合 LRU 参数CKPTINTVL 等配置优化。
  • 并发与 CPU 规划
    • 结合 onstat -g 观察 CPU VP 与扫描线索,必要时调整 NUMCPUVPS 等参数匹配 CPU 核数,避免超配或不足。
  • 长事务与锁
    • 通过 sysmaster:sysshmvals.sh_longtxsysprofile 的锁相关计数,定位长事务与锁争用源头,优化事务边界与隔离级别。
  • 变更与验证
    • 调整参数或索引后,使用 onstat -z 清零统计,观察一个稳定业务周期的增量变化,验证优化成效。

0