Hologres管理控制台的监控告警页面,为您提供了实例的资源管理服务。您可以在该页面查看当前实例的资源使用及SQL语句的执行情况,及时识别系统报错并处理实例异常。本文为您介绍相关指标的含义。
- CPU使用率(%)
- 实例CPU使用率(%)。
- Worker节点CPU使用率(%),2022年7月新增监控指标。
- 内存使用率(%)
- 实例内存使用率(%)。
- Worker节点内存使用率(%),2022年7月新增监控指标。
- 实例存储用量(字节)
- 连接数(个)
- 实例连接数(个)。
- FE节点连接数最高使用率(%),2022年7月新增监控指标。
- FE节点连接数,2022年7月新增监控指标。
- QPS(个/秒)
- Query延迟(毫秒)
- 实时导入RPS(记录/秒)
- IO吞吐(字节)
- 正在运行Query持续时长,2022年7月新增监控指标。
- 失败Query数(次/秒),2022年7月新增监控指标。
- 主从实例同步延迟(毫秒),2022年7月新增监控指标。
- 目前Hologres V0.8版本,无连接数(个)指标。
- 目前Hologres V0.9.27以下版本,如果当前实例中表数量超过1000时,由于指标量太大,实时导入RPS(记录/秒)指标可能会存在丢失指标或者指标值过低的情况,影响准确率。
管控台监控汇报原理
- 管控台指标的精度最低是20s,即使20s内有多个指标汇报,但都会对齐到20s整。20s内的资源变化情况存在无法采集的情况,如内存使用的瞬间波动。
- 如果您选取小于2h的时间范围,按20s聚合; 选取2h-24h的时间范围,按10min聚合;选取大于24h的时间范围,按60min聚合。
CPU使用率(%)
- 实例CPU使用率
实例CPU指实例整体的CPU使用率,代表实例的计算负载情况。
- 在没有查询的时候,后台常驻进程或者异步执行的Compaction都可能占用CPU,因此实例无查询负载时,有少量CPU使用率是正常现象。
- Hologres因其设计原理可以充分发挥多核并行计算的能力,通常来说单个查询可以迅速将CPU使用率提高到100%,这说明计算资源得到了充分利用。
- 当实例CPU使用率长期接近100%时(例如CPU使用率连续3小时满载100%,或者连续12小时达到90%以上等),说明实例负载非常高,这通常意味着CPU资源成为了系统的瓶颈,需要分析具体的业务场景和查询,以判断原因。可以从以下几方面判断:
- 是否有比较大的离线数据导入(INSERT),且数据规模还在日渐增长。
- 是否有高QPS的查询或写入,共同用满了CPU。
- 是否有上述或上述场景以外的混合负载。
- 如果确定是业务场景需要,将资源用满,可以对实例进行扩容,以适应更复杂的查询或更大的数据量。
- Worker节点CPU使用率
内存使用率(%)
内存使用率包含实例内存使用率和Worker节点内存使用率。
内存会分为三部分:元数据、缓存、计算,大约各占1/3,其中计算部分的内存使用弹性内存,当实例的内存水位较低时,意味着计算能使用到大于1/3的内存,当内存水位较高时,计算的内存最少是1/3;缓存的内存根据Query运行状态动态变化;元数据的内存使用采用Lazy Open模式,即频繁被访问的元数据会常驻内存中,未被访问的元数据则不会放在内存中,以此来减少元数据对内存的占用。
- 实例内存使用率
实例内存使用率代表实例整体的内存综合使用率。
- Hologres的内存资源采用预留模式,在没有查询的时候,也会有数据表的元数据、索引、数据缓存等加载到内存中,以便加快检索和计算,此时内存使用率不为零是正常情况。理论上,在无查询的情况,内存使用率达到30%-40%左右都属于正常情况。
- 当内存使用率稳定增长,长期接近80%时,通常意味着内存资源可能成为了系统的瓶颈,可能会影响实例的稳定性或性能。可以根据业务综合判断是元数据、缓存、计算中谁占用了较高的内存,从而做相应的优化。详情可以参见OOM常见问题排查指南。
- Worker节点内存使用率
实例存储用量(字节)
- 包年包月付费模式下购买的实例存储用量用完后,超出部分会自动转为按量计费,不会影响系统稳定性与使用。建议您超出存储资源之后及时对存储进行升级配置,或者及时清理无用的数据,避免造成不必要的更昂贵的存储费用。
- 通过如下SQL语句,可以分析各个数据库、内部表的存储占用大小。
说明 pg_relation_size和pg_database_size的结果单位是Byte,pg_size_pretty的结果单位是KB、MB或者GB,根据数据量大小自动做转换。在PG的单位转换标准中,1GB=1024MB=1024*1024KB。
select pg_database_size('dbname'); -- 查看DB存储大小 select pg_relation_size('tablename'); -- 查看表存储大小 -- 查看所有表按照存储占用大小排序 select relname as "Table", pg_relation_size(relname)/1024/1024/1024 as "Size(GB)" from pg_tables where schemaname = 'public' order by pg_relation_size(relname)/1024/1024/1024;
连接数(个)
- 实例连接数
实例连接数包括实例的使用连接数(个)和FE节点连接数最高使用率(%),其中:
- 实例连接数(个):代表实例中已经使用的总SQL连接数,包括active、idle等各种状态的JDBC/PSQL等连接。
- FE节点连接数最高使用率(%):代表使用率最高的FE(Frontend)节点的使用率,汇报每个Frontend节点的最大值,即Max(frontend_connection_used_rate),这样可以更加方便的知道是否使用的连接数即将超过某个Frontend节点的最大连接数,造成无法连接的情况。
说明 2022年7月新增监控指标。
- 多个Frontend节点之间采用轮询策略(Round Robin),新建连接依次与不同Frontend节点建立物理连接。
- 如果您发现连接数过多,甚至达到超出max_connections的地步,或者遇到如下错误之一,说明系统的连接数已达上限,意味着您需要检查您的应用是否存在连接数泄漏情况并参考连接数管理进行连接的释放。
产生FATAL: sorry, too many clients already connection limit exceeded for superusers报错。 产生FATAL: remaining connection slots are reserved for non-replication superuser connections报错。
- FE节点连接数
FE节点连接数代表实例中每个 Frontend(FE)节点的连接使用个数,包括active、idle等各种状态的JDBC/PSQL等连接。说明 2022年7月新增监控指标。
QPS(个/秒)
QPS指平均每秒执行SELECT、INSERT、UPDATE或DELETE 4种SQL语句的次数。该指标每20秒上报一次,如果20秒内仅执行了一条SQL语句,则SQL语句的QPS将在该20秒的数据点显示1/20=0.05。
Query延迟(毫秒)
Query延迟指执行SELECT、INSERT、UPDATE或DELETE 4种SQL语句的平均延迟(即响应时间)。您可以通过查看慢Query日志分析Query延迟,更多内容请参见慢Query日志查看与分析。
实时导入RPS(记录/秒)
实时导入RPS指每秒通过SQL语句或FixedPlan方式导入或更新的数据记录条数。仅在主实例中显示该指标。
Insert RPS表示使用外部表批量导入、使用COPY语句批量导入或Hologres表间插入数据的导入速率。
Update RPS表示通过执行更新或删除SQL语句,每秒更新或删除的记录条数。
- 可以通过FixedPlan优化的Insert、Update、Delete操作。
- 通过Flink写入。
- 通过Holo Client读写数据。
- Spark的数据写入至Hologres。
- 实时同步DataHub的数据至Hologres。
- SQL或JDBC 通过
insert into values ()
语句写入。
IO吞吐(字节)
IO吞吐指Hologres实例的IO吞吐量。该指标描述实例的读写数据量,反映实例的读写繁忙程度。您可以从IO层面了解实例的压力情况和负载变化,及时诊断问题。
正在运行Query持续时长
- 当前指标只有1.1及以上版本支持显示。
- Hologres是分布式系统,根据实例的规格不同会有不同的Worker节点。Query运行时会在不同的Worker节点随机分发。正在运行的Query持续时长会根据每个Worker节点上Query运行时长,汇报当前时刻运行时长最长的Query,例如当前时刻不同Worker节点分别有10min,5min,30s的Query正在运行,此时正在运行的Query持续时长将会显示为10min。
- 可以根据Query的运行时长,并结合活跃Query或者慢Query日志判断Query运行时长是否合理,详情请参见Query管理、慢Query日志查看与分析。根据文档排查并解决Query运行时间较长的问题,及早解决死锁、卡住等问题。
失败Query数(次/秒)
- 指标每20s汇报一次,如果20s内只有一个SQL语句执行,那么SQL语句QPS将在该20s的数据点会显示1/20=0.05。
- 根据失败的Query类型和次数,在慢Query日志中查找失败的Query并分析原因,以提高系统的可用性,详情请参见慢Query日志查看与分析。
主从实例同步延迟(毫秒)
- 仅Hologres V1.1及以上版本支持配置主从实例,仅子实例显示该指标,主实例默认不显示。
- 只有在子实例绑定了主实例之后,该指标会显示数据(0ms),当主实例有数据写入时,子实例的同步延迟会出现数据波动。
- 一般情况下,主从实例的同步延迟毫秒级,当实例偶尔出现延迟抖动时,一般情况为主实例在做DDL等元数据修改的操作,可忽略。若长期延迟较大(大于1秒),一般情况为实例水位较高,资源不足,可以结合CPU、内存等水位情况综合评估,并适当扩容以减少延迟。实例重启或者升级期间,同步延迟可能增加到分钟级别,并会自动恢复。
常见问题诊断
文档汇总了使用监控指标中的常见问题,可以帮助业务快速诊断、定位问题,以及对应的解决办法,提升自运维能力,详情见监控指标常见问题。