查询实例TPS峰值最佳实践

更新时间:

本文为您介绍如何查询云消息队列 RabbitMQ 版的实例TPS峰值。

背景信息

当您实际使用的TPS流量峰值超过实例的TPS规格上限时,云消息队列 RabbitMQ 版实例会被限流。

为了避免实例限流造成的业务影响,建议您在日常运维任务中将实例TPS峰值作为重点监控指标,提前预警规格超限风险,您也可以通过观察实例TPS峰值的变化了解业务波动情况,判断当前实例规格是否满足业务需求。

查询方式

云消息队列 RabbitMQ 版支持以下几种方式查询实例TPS峰值。

查询方式

说明

查询时间级别

查询资源级别

(推荐)通过云监控查询实例TPS峰值并设置告警

优势:

  • 查询结果最大可显示14天内的TPS峰值变化,可快速定位异常范围。

  • 支持将实例TPS峰值作为监控指标设置告警。

  • 支持免费使用。

分钟级TPS峰值

取值为1分钟周期内,每秒钟实例TPS的最大值。

实例级别TPS峰值

(推荐)通过实例详情查询实例TPS峰值

  • 优势:

    • 支持查询秒级TPS峰值,可精确异常范围。

    • 支持查看具体API接口的TPS峰值。

    • 支持免费使用。

  • 不足:为避免显示结果过多,只显示10分钟内的查询结果。

秒级TPS峰值

  • 实例级别TPS峰值

  • 实例内某个API接口的TPS峰值

通过日志查询实例TPS峰值

  • 优势:支持通过SLS分析语句查询,适合复杂问题定位场景。

  • 不足:

    • 相较于前两种查询方式,操作较复杂,查询结果不够直观。

    • 需要额外支付日志服务相关费用,具体计费信息,请参见日志服务计费项

秒级TPS峰值

实例级别TPS峰值

通过云监控查询实例TPS峰值并设置告警

查询实例TPS峰值

  1. 登录云消息队列 RabbitMQ 版控制台,然后在左侧导航栏选择实例列表

  2. 实例列表页面的顶部菜单栏选择地域,然后在实例列表中,单击目标实例名称。

  3. 在左侧导航栏单击监控指标

  4. 监控指标页面,在分组列表中选择资源类型为Instance,并选择查询时间范围。

    指定实例TPS峰值查询示例如下:监控指标查询结果

设置API TPS峰值告警

  1. 登录云消息队列 RabbitMQ 版控制台,然后在左侧导航栏选择实例列表

  2. 实例列表页面的顶部菜单栏选择地域,然后在实例列表中,单击目标实例名称。

  3. 在左侧导航栏单击监控指标

  4. 监控指标页面右上方,单击创建报警规则

    页面跳转至云监控的创建报警规则面板。

  5. 设置规则描述面板中,设置报警规则,从监控指标列表选择为实例 > 实例API TPS峰值(次/秒)。具体操作,请参见报警服务

通过实例详情查询实例TPS峰值

  1. 登录云消息队列 RabbitMQ 版控制台,然后在左侧导航栏选择实例列表

  2. 实例列表页面的顶部菜单栏选择地域,然后在实例列表中,单击目标实例名称。

  3. 实例详情页面单击TPS峰值查询页签。

    说明

    该方式最长可查询15天范围内的TPS峰值数据,因为查询结果是秒级数据,为避免显示数据过多,查询结果只显示10分钟的数据结果。

    • 查询实例级别TPS峰值:

      单击按实例级别查询页签,选择查询时间,然后单击查询

      按实例级别查询

    • 查询API级别TPS峰值:

      单击按API级别查询页签,选择查询时间,然后单击查询

      按API级别查询

通过日志查询实例TPS峰值

具体操作,请参见查询和分析日志

分析语句示例如下:

(Action : ConnectionOpen or Action : ChannelOpen or Action: ExchangeDeclare or Action: QueueBind or Action : QueueDeclare or Action : QueueDelete or Action : ExchangeDelete or Action : QueueUnBind or Action : ExchangeBind or Action : ExchangeUnBind or Action : BasicConsume or Action : BasicReject or Action : BasicRecover or Action : SendMessage or Action : BasicAck or Action : BasicNack or Action : BasicGet ) | select from_unixtime(cast(microtime as bigint)/1000/1000) as time, COUNT(*) as count GROUP by time ORDER by time limit 90000000