温馨提示×

Linux Informix性能监控有哪些技巧

小樊
45
2025-12-20 21:07:44
栏目: 智能运维

Linux 上监控 Informix 性能的实用技巧

一 监控分层与常用工具

  • 建议采用分层监控:系统层、数据库引擎层、SQL 与应用层,形成闭环。
  • 系统层常用命令
    • top / vmstat 1 / iostat -x 1 / sar -u 1 / netstat -an:快速定位 CPU、内存、I/O、网络 的瓶颈与异常波动。
  • 数据库引擎层常用命令
    • onstat:查看共享内存、会话、锁、I/O、检查点、LRU 等实时状态;配合 onmode 做运行模式与参数查看/调整;onbar 关注备份进度与状态。
  • 图形化与平台化
    • IBM Monitoring and Management Extension(IMMX)Informix Performance Monitor(IPM)/Informix Enterprise Monitor(IEM)ZabbixPrometheus 等,用于长期趋势、告警与可视化。

二 关键指标与快速检查

  • onstat -p 观察整体负载与命中率:关注 bufreads/bufwrites、diskreads/diskwrites、lockwaits、deadlks、seqscans 等;当 seqscansdiskreads 同时偏大,往往意味着存在大表顺序扫描,需要结合执行计划优化索引。
  • onstat -g sesonstat -g sql 定位会话与正在执行的 SQL;配合 sysmaster:sysprofile 查看自上次清零后的累计指标,便于评估一段时间内的行为变化。
  • onstat -d 检查 DBSpace 使用率与剩余空间,提前识别空间紧张与潜在扩容需求。
  • onstat -l 关注锁与等待,配合 onstat -k 细化锁类型与等待链,快速判断是否因锁冲突导致吞吐下降。
  • onstat -m 与数据库日志(如 online.log)捕捉错误、检查点异常、长事务与归档/恢复事件,作为问题根因的重要线索。

三 用 SQL 和系统表做深度监控

  • 实例运行概况(自启动或上次 onstat -z 以来的累计统计)
    • 关键字段:sh_boottime、sh_longtx、sh_maxlocks、sh_nlrus 等,用于评估运行时间与结构性上限。
    • 示例:
      • select dbinfo(‘UTC_TO_DATETIME’,sh_boottime) start_time, current year to second - dbinfo(‘UTC_TO_DATETIME’,sh_boottime) run_time, sh_maxchunks, sh_maxdbspaces, sh_maxuserthreads, sh_maxtrans, sh_maxlocks, sh_nlrus, sh_longtx, dbinfo(‘UTC_TO_DATETIME’,sh_pfclrtime) onstat_z_running_time from sysmaster:sysshmvals;
  • 会话与等待事件
    • 会话概览(含空闲时间)与等待标记(如 is_wlatch、is_wlock、is_wbuff、is_wckpt),用于识别连接风暴与锁/缓冲等待。
    • 示例:
      • 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, current-dbinfo(‘UTC_TO_DATETIME’,t.last_run_time) idle_time from syssessions s, systcblst t, sysrstcb r, sysopendb q where t.tid = r.tid AND s.sid = r.sid AND s.sid = q.odb_sessionid order by 7 desc;
  • 正在执行与慢 SQL
    • 直接从 sysmaster:syssqexplain 关联会话,筛出目标表或高成本 SQL;对“当前最慢”按 sqx_estcost 排序,对“一段时间内最慢”建议启用 SQLTRACE 后分析 syssqltrace
    • 示例(当前高成本 SQL):
      • select first 25 sqx_estcost, sqx_estrows, sqx_sqlstatement from sysmaster:syssqexplain order by sqx_estcost desc;
  • DBSpace 使用率
    • 以更友好的格式汇总 总大小、空闲、使用率、页大小、Chunk 数,便于容量预警与扩容评估。

四 SQL 执行计划与慢 SQL 捕获

  • 使用 SET EXPLAIN 获取查询计划与成本,判断是否存在 顺序扫描、索引扫描、哈希连接/嵌套循环 等不优选择;必要时用 AVOID_EXECUTE 仅生成计划而不执行,避免对线上造成影响。
    • 示例:
      • SET EXPLAIN ON AVOID_EXECUTE;
      • SELECT …
  • 使用 SQLTRACE 捕获一段时间内慢 SQL,按 sql_totaltime 排序定位 Top N 问题语句;注意开启会带来约 2%–5% 的性能开销,分析完成后及时关闭或转存结果。
    • 示例:
      • 开启:echo ‘execute function task(“set sql tracing on”,100000,“1k”,“low”,“demodb”);’ | dbaccess sysadmin
      • 关闭:echo ‘execute function sysadmin:task(“SET SQL TRACING OFF”);’ | dbaccess sysadmin

五 告警阈值与自动化实践

  • 建议的告警阈值与动作(需结合业务基线微调)
    • 缓冲区命中率(读)低于 95%:检查索引与 SQL,评估 LRU/FETCH 参数与缓冲池大小。
    • lockwaits 持续增长或 deadlks > 0:定位阻塞链与会话,优化事务粒度与访问路径。
    • seqscansdiskreads 同步走高:优先优化缺失/失效索引与统计信息,改写 SQL 避免大表全扫。
    • DBSpace 使用率 > 80%:提前扩容或清理历史数据,避免空间耗尽导致宕机。
    • 检查点异常频繁或日志切换过快:评估 CKPTINTVL、LRU 与 I/O 能力,必要时调整参数或迁移热点数据。
  • 自动化与可视化
    • Zabbix/Prometheus 采集 onstat 输出与系统指标,配置触发器与趋势面板;结合 IMMX/IEM 做企业级统一监控与报表。

0