使用实践:监控告警常见问题

简介: 本文总结了使用Hologres时常见的监控告警相关问题,以帮助你能更好的使用Hologres。

监控指标一览

Hologres管理控制台的监控告警页面,为您提供了实例的资源管理服务。您可以在该页面查看当前实例的资源使用及SQL语句的执行情况,及时识别系统报错并处理实例异常。


监控指标报包括:

1、CPU使用率(%)指实例的CPU综合使用率。Hologres的计算资源采用预留模式,即使没有执行查询操作,后台也会存在运行的进程,此时CPU使用率不为零属于正常现象。同时Hologres可以充分发挥CPU多核并行计算的能力。通常,单个查询可以迅速将CPU使用率提高至100%,这表明计算资源得到了充分利用。但是CPU长期100%表明实例负载较高


2、内存使用率(%)指实例的内存综合使用率。Hologres的内存资源采用预留模式,即使没有执行查询操作,也会有部分Meta或Index元数据加载到内存中,该类元数据用于提升计算速度。此时,在不存在查询的情况下,内存使用率可能会达到30%~40%左右,属于正常现象。如果内存使用率持续升高,甚至接近100%,表明实例负载较高。

说明:Hologres是分布式系统,一个实例有多个节点,一个节点的内存上限是64G,内存通常会分为3个部分:计算,元数据和缓存。


3、实例存储用量(字节)指实例存储的数据占用逻辑磁盘的大小,是所有DB存储用量的总和。如果您是使用包年包月付费模式购买实例,则存储资源的额度使用完后,超出部分会自动转为按量计费。请在超出存储规格后及时扩容存储


4、连接数(个)指实例中总的SQL连接数,包括active及idle状态的JDBC或PSQL连接。实例的默认连接数通常与实例的规格有关,具体的规格说明,请参见实例规格概述


5、QPS(个/秒)QPS指平均每秒执行SELECT、INSERT、UPDATE或DELETE 4种SQL语句的次数。该指标每20秒上报一次,如果20秒内仅执行了一条SQL语句,则SQL语句的QPS将在该20秒的数据点显示1/20=0.05。


6、Query延迟(毫秒)Query延迟指执行SELECT、INSERT、UPDATE或DELETE 4种SQL语句的平均延迟(即响应时间)。您可以通过慢Query日志查看与分析Query延迟


7、实时导入RPS(记录/秒)实时导入RPS指每秒通过SQL语句或SDK方式导入或更新的数据记录条数。

1)Insert RPS表示使用外部表批量导入、使用COPY语句批量导入或Hologres表间插入数据的导入速率。

2)Update RPS表示通过执行更新或删除SQL语句,每秒更新或删除的记录条数。

3)SDK RPS表示通过SDK方式写入Hologres的每秒数据写入或更新的条数。SDK方式包括:


8、IO吞吐(字节/秒)该指标描述实例的读写数据量,反映实例的读写繁忙程度。您可以从I/O层面了解实例的压力情况和负载变化,及时诊断问题。



连接过多怎么查看有哪些连接以及怎么kill连接?

连接数包括实例中总的SQL连接数,包括active、idle状态的JDBC/PSQL等连接。实例的连接数通常与实例的规格有关,如果您发现连接数过多,甚至达到超出max_connections的地步,或者遇到如下错误之一:

产生FATAL: sorry, too many clients already connection limit exceeded for superusers报错。
产生FATAL: remaining connection slots are reserved for non-replication superuser connections报错。

说明实例连接数已达上限,意味着您需要检查您的实例是否存在连接数泄漏情况。通过HoloWeb,在活跃连接管理页面,可以对不符合预期或者Idle连接进行Kill操作,详情请参见HoloWeb可视化管理连接

说明 Superuser账号可以看到实例全部连接。其余用户只能看到自己的连接


延迟过高怎么查看慢query以及怎么降低延迟?

通过在HoloWeb诊断与优化模块的历史慢Query页面可视化查看慢Query,详情请参见慢Query日志查看与分析

常见降低查询延迟的方法如下:

  • 让写入在查询低峰期进行,或者降低写入的并发度,提高查询效率,如果是外表写入,可以使用以下参数降低并发度。
--设置MaxCompute执行的最大并发度,默认为128,建议数值设置小一些,避免一个Query影响其他Query,导致系统繁忙导致报错。
set hg_experimental_foreign_table_executor_max_dop = 32; --优先考虑设置
--调整每次读取MaxCompute表batch的大小,默认8192。
set hg_experimental_query_batch_size = 1024;
--直读orc
set hg_experimental_enable_access_odps_orc_via_holo = on;
--设置MaxCompute表访问切分spilit的数目,可以调节并发数目,默认64MB,当表很大时需要调大,避免过多的split影响性能。
set hg_experimental_foreign_table_split_size = 512MB;
  • 优化查询,使查询的效率更高,可以更加快速的获取查询结果,见性能调优
  • 扩容实例,详情请参见实例升配


怎么看正在运行的任务?

通过在HoloWeb诊断与优化模块的活跃Query页面可视化查看,详情请参见查看活跃Query


Query长时间不结束,如何Kill以及设置超时时间?

您可以通过在HoloWeb诊断与优化模块的活跃Query页面可视化查看活跃Query,并对Query进行Kill操作;在SQL编辑器模块使用SQL命令设置Query超时时间,详情请参见Query管理


内存使用率高如何解决?

Hologres实例的内存使用率为内存综合使用率。Hologres的内存资源采用预留模式,在没有查询的时候,也会有数据表的元数据、索引、数据缓存等加载到内存中,以便加快检索和计算,此时内存使用率不为零是正常情况。理论上,在无查询的情况,内存使用率达到30%~40%左右都属于正常现象。


一些情况下,会使得内存使用率持续升高,甚至接近100%。主要原因如下:

  • 表越来越多,数据总量越来越大,以至于数据规模远大于当前计算规格。由于内存使用率和元数据、索引量存在正相关关系,因此,表的数量越多,数据量越大,索引越多,都会导致内存使用率升高。
  • 索引不合理,例如表的列特别多,TEXT列居多,设置了过多的Bitmap或Dictionary索引。此情况可以考虑去掉一些Bitmap或者Dictionar索引,详情请参见ALTER TABLE


但是当内存使用率稳定增长,长期接近100%时,通常意味着内存资源可能成为了系统的瓶颈,可能会影响实例的稳定性和或性能。稳定性影响体现在当元数据等过大,超额占据了正常Query可用的内存空间时,在查询过程中,可能会偶发SERVER_INTERNAL_ERRORERPC_ERROR_CONNECTION_CLOSEDTotal memory used by all existing queries exceeded memory limitation等报错。性能影响体现在当元数据等过大,超额占据了正常Query本来能够使用的缓存空间,从而缓存命中会减少,Query延迟会增加。


因此当内存长期接近100%时,有如下几个操作建议:

  • 删除不再查询的数据,以释放元数据等占的内存。
  • 设置合理的索引,若是业务场景用不上的bitmap和dictionary,可以去掉,但不建议直接去掉,需要根据业务情况具体分析。
  • 升配实例的计算和存储资源。对于升配的建议是:
  • 普通场景:可以容许读磁盘数据的延迟,响应时间要求不严格,1CU(1Core+4GB内存)可以支持50~100GB的数据存储。
  • 响应时间要求低的Serving场景:最好查询热点数据全在内存的缓存中。内存中缓存的比例默认占总内存的30%,即1CU(1Core+4GB内存)其中1.3GB用于数据缓存,同时数据缓存还会被表的元数据所使用一些。举个例子,低响应要求的场景,热点数据如果是100GB,那么最好要求100GB 在缓存可用(实际上数据读出来解压后,占用内存不止100GB),因此至少需要约320GB内存以上,从而推算计算资源至少需要96CU左右。


为什么CPU使用率很容易达到100%?

实例的CPU综合使用率。Hologres因其设计原理可以充分发挥多核并行计算的能力,通常来说单个查询可以迅速将CPU使用率提高到100%,这说明计算资源得到了充分利用。

cpu高不是问题,cpu高了之后,查询慢写入慢才是问题,需要综合去分析。


CPU使用率长期达到100%如何解决?

当Hologres实例CPU使用率长期接近100%时(例如CPU使用率连续3小时满载100%,或者连续12小时达到90%以上等),说明实例负载非常高,这通常意味着CPU资源成为了系统的瓶颈,需要分析具体的业务场景和查询,以判断原因。

可以从以下几方面进行排查:

  • 查看是否有比较大的离线数据导入(INSERT),且数据规模还在日渐增长。可以考虑降低写入并发,或者错峰写入,不至于影响查询,或者使用Hologres V1.1版本的读写分离高可用部署模式。
  • 查看是否有高QPS的查询或写入,共同用满了CPU使用率。可以考虑降低写入并发,让查询先完成。
  • 查看活跃Query是否有数据量大的Query。可以在HoloWeb活跃Query页面查看是否有Query一直没有结束,若是不符合业务预期的可以执行KILL操作,详情请参见Query管理
  • 如果确定是业务场景需要,将CPU资源用满,可以对实例进行扩容,以适应更复杂的查询或更大的数据量,详情请参见实例升配


云监控告警配置最佳实践

Hologres已经接入云监控的云服务监控,方便您通过云监控全面了解Hologres实例的资源使用、业务运行及健康状况,及时收到异常报警并做出响应,保证应用程序运行顺畅。详细配置使用请见文档云监控


如何为业务设置合适的告警,达到不频繁地对不重要事件报警,又能及时感知到重要异常事件发生的目的,实际上取决于您的具体业务情况,以及Hologres在您的整体架构中所处的位置,请根据具体情况进行设置。不过有一些通用性的指标,建议您对其设置告警,并且设置合适的告警,如下所示:


  • CPU水位

CPU水位反映了Hologres的资源是否存在瓶颈,也反映了您的资源使用是否充分。CPU水位告警的核心逻辑在于,设置规则检测出CPU水位持续100%,即CPU持续打满的情况。因为这种情况,意味着当前实例规模的资源已充分利用,难以支撑业务数据量、查询量、计算量等的增长,需要考虑扩容等手段。告警规则建议:

  • 不建议出现一次CPU使用率达到100%就告警。如果CPU水位持续到达100%一段时间,随后降低维持在中等或较低水平,那么一般是那段时间在做大的计算,例如大规模数据的写入,或者大规模数据的查询,因此不建议出现一次CPU使用率达到100%就告警,这样可能会产生较多误报。
  • 建议设置为“CPU水位连续3次>=99% Info(每次间隔5分钟)”类似的告警规则。设置为“CPU水位连续3次>=99% Info(每次间隔5分钟)”的告警规则,即15分钟内检测3次出现CPU使用率100%,产生Info级别的告警。此告警规则可以有效避免误报,根据具体情况的不同,您可以降低间隔时间,或者提高检测次数。


  • 内存水位

内存水位的逻辑与CPU水位大体相同。不同于CPU水位具有不产生计算则几乎为0的特点,内存水位在没有计算时,并不会为0,有时甚至会比较高。Hologres把计算内存分为了三块,一是预留给计算的内存,约占30%,没有计算时,这块几乎为0;二是数据缓存,在诸多情况下,数据缓存可以极大地减少I/O读取,提高SQL的计算效率,约占30%;三是实例中所有表、索引等元数据缓存,以及表在内存中的句柄和缓冲区等,约占30%。告警规则建议

  • 不建议内存水位设置过低的阈值。

没有计算时只能保证前30%是空的,还有60%甚至以上的内存,可能是被占据的,因此体现出内存水位不为0甚至较高。有可能超过60%被占据,是因为元数据优先放入内存,如果元数据过多,加上数据缓存的30%,无计算时内存使用会超过60%。

  • 建议设置为“内存水位连续3次>=90% Warning(每次间隔5分钟)”类似的告警规则。

设置为内存水位连续3次>=90% Warning(每次间隔5分钟)”的告警规则,即15分钟内检测到3次出现内存使用率超过90%,产生Warning级别的告警。


  • 连接数使用率

对连接使用率进行告警,是为了防止连接数打满,而造成无法连接的异常影响业务。一般连接数在总连接数的95%以下都算安全。因此可以设置告警规则为:连接数使用率(Info)连续3次>=95%就报警


  • P99延迟

SQL语句从提交到返回的过程中,Hologres引擎处理99%查询语句的时间。响应时间异常性变大反映出系统可能有慢Query的趋势,可能会影响下游业务处理。平均响应时间很难有一个标准,需要根据您的实际查询使用模式而定。P99延迟代表了99% Query跑完的时间,相对平均而言有特定的意义。
例如您是持续服务型应用,平常的正常延迟都在1s以内,那么响应时间突然到5s或10s,就不太正常,需要告警出来,偶尔到1.2s,1.5s,则正常。
例如您是分析性应用,根据不同业务人员的需求,查询的大小、响应时间都不尽相同,那么就需要根据自己的场景进行设置。
另外要注意的是,当实例负载很高的时候,SQL运行时间波动可能越大,这种情况下就容易产生告警。解决方法是适当调整阈值,或者扩增实例规格以维持负载平稳。


  • Query QPS

在您的业务中,有持续的SQL语句执行时,往往有持续稳定的QPS(Query Per Second)指标。当QPS突然降到很低,或者为0时,如果不是业务有意停止,那么可能意味着系统有异常。如果业务QPS持续稳定在某个值A,那么建议告警阈值设置为A的80%、50%或10%等,即告警规则设置为:QPS连续3次<=(A*0.8) Warning(每次间隔5分钟)。


  • 实时写入RPS

在您的业务中,有持续的外部数据导入(通过Flink/数据集成等等)时,往往有持续的实时导入RPS(Record Per Second)指标。当RPS突然降到很低,或者为0时,如果不是作业有意停止,那么可能意味着系统有异常。例如,设置告警为:RPS(cmdType=sdk)连续1次<=10 Warning。



了解Hologres:https://www.aliyun.com/product/bigdata/hologram

合集.png

相关实践学习
基于Hologres轻量实时的高性能OLAP分析
本教程基于GitHub Archive公开数据集,通过DataWorks将GitHub中的项⽬、行为等20多种事件类型数据实时采集至Hologres进行分析,同时使用DataV内置模板,快速搭建实时可视化数据大屏,从开发者、项⽬、编程语⾔等多个维度了解GitHub实时数据变化情况。
相关文章
|
C语言
带你熟知关键字static用法——C语言(举例及通俗易懂)
带你熟知关键字static用法——C语言(举例及通俗易懂)
863 0
|
Web App开发
Mac 技术篇-触控板双指前进后退手势设置方法,mac关闭chrome浏览器双指返回手势实例演示
Mac 技术篇-触控板双指前进后退手势设置方法,mac关闭chrome浏览器双指返回手势实例演示
3141 0
Mac 技术篇-触控板双指前进后退手势设置方法,mac关闭chrome浏览器双指返回手势实例演示
|
2月前
|
存储 弹性计算 人工智能
2026年阿里云个人、企业新老用户优惠活动整理:免费试用、活动中心、云服务器特惠活动
2026年,阿里云通过多样化的优惠活动降低用户上云门槛与成本,推出涵盖免费体验、长期特惠的丰富优惠体系。用户可在一站式活动中心获取最新优惠资讯,通过免费试用中心零成本体验云产品。轻量应用服务器抢购活动以极高性价比吸引用户,云服务器提供长效特惠,企业用户可享迁云补贴与出海扶持补贴。建议用户购买前完成实名认证,领取匹配优惠券,结合特价产品实现成本最优采购。
770 2
|
9月前
|
数据采集 存储 安全
数据治理≠数据管理!90%的企业都搞错了重点!
在数字化转型中,数据不一致、质量差、安全隐患等问题困扰企业。许多组织跳过基础的数据管理,直接进行数据治理,导致方案难以落地。数据管理涵盖数据生命周期中的采集、存储、处理等关键环节,决定了数据是否可用、可靠。本文详解数据管理的四大核心模块——数据质量、元数据、主数据与数据安全,并提供构建数据管理体系的四个阶段:评估现状、确定优先级、建立基础能力与持续改进,助力企业夯实数据基础,推动治理落地。
|
SQL 存储 分布式计算
查询队列(Query Queue)快速入门
本文由钟昌宏(大宏)分享,主题为Hologres 3.0新功能——Hologres查询队列(Query Queue)的使用场景、基本用法及入门实践。内容涵盖四个部分:查询队列的基本介绍、并发控制与排队能力、查询隔离与熔断,以及如何在管控台观察计算组或实例使用查询队列的情况。通过分类器管理、匹配规则等机制,实现对不同类型Query的灵活控制,并结合Serverless Computing提升系统稳定性与成功率。适用于数据写入与查询任务的优化场景。
|
11月前
|
自然语言处理 DataWorks 数据挖掘
DataWorks接入Qwen3-Coder!数据开发再提速!
阿里云DataWorks平台正式接入Qwen3-Coder模型,用户通过DataWorks Copilot智能助手,可实现自然语言交互完成代码生成、续写、优化等操作,显著提升数据开发与分析效率。同时支持Qwen-Code和Claude Code命令行Agent安装,助力Notebook智能高效落地。
|
自然语言处理 安全 数据挖掘
Hologres+函数计算+Qwen3,对接MCP构建企业级数据分析 Agent
本文介绍了通过阿里云Hologres、函数计算FC和通义千问Qwen3构建企业级数据分析Agent的解决方案。大模型在数据分析中潜力巨大,但面临实时数据接入与跨系统整合等挑战。MCP(模型上下文协议)提供标准化接口,实现AI模型与外部资源解耦。方案利用SSE模式连接,具备高实时性、良好解耦性和轻量级特性。Hologres作为高性能实时数仓,支持多源数据毫秒级接入与分析;函数计算FC以Serverless模式部署,弹性扩缩降低成本;Qwen3则具备强大的推理与多语言能力。用户可通过ModelScope的MCP Playground快速体验,结合TPC-H样例数据完成复杂查询任务。
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课18 通过pg_bulkload适配pfs实现批量导入提速
本文介绍了如何修改 `pg_bulkload` 工具以适配 PolarDB 的 PFS(Polar File System),从而加速批量导入数据。实验环境依赖于 Docker 容器中的 loop 设备模拟共享存储。通过对 `writer_direct.c` 文件的修改,替换了一些标准文件操作接口为 PFS 对应接口,实现了对 PolarDB 15 版本的支持。测试结果显示,使用 `pg_bulkload` 导入 1000 万条数据的速度是 COPY 命令的三倍多。此外,文章还提供了详细的步骤和代码示例,帮助读者理解和实践这一过程。
768 0
|
监控 JavaScript Shell
模拟zabbix通过snmp实现接口流量监控
模拟zabbix通过snmp实现接口流量监控
模拟zabbix通过snmp实现接口流量监控

热门文章

最新文章