查询TPS统计图表
本文介绍基于云消息队列 RabbitMQ 版当前日志快速查询TPS统计图表的方法。当您遇到TPS流量超限时,通过该方法可以及时查询秒级的TPS统计图表,帮助您高效识别出异常,保证业务正常运行。
前提条件
登录云消息队列 RabbitMQ 版控制台,将云消息队列 RabbitMQ 版实例的消息操作日志推送到日志服务。具体操作,请参见配置消息日志。
背景信息
当前云监控提供的图表是分钟级统计数据的平均值,无法展示秒级的TPS统计数据。云消息队列 RabbitMQ 版的TPS统计了每秒Client主动发起的AMQP协议方法请求数量。
TPS统计的AMQP协议请求方法如下:
ConnectionOpen、ChannelOpen
QueueDeclare、QueueDelete、QueueBind、QueueUnbind
ExchangeDeclare、ExchangeDelete
ExchangeBind、ExchangeUnBind
SendMessage、BasicConsume、BasicGet、BasicAck、BasicReject、BasicNack、BasicRecover
关于请求方法的详细描述,请参见请求方法。
操作步骤
设置查询的时间段,配置统计图表的属性,在搜索框输入SLS分析语句,查询TPS统计图表。具体操作,请参见查询和分析日志。
* | select microtime/1000/1000 as time, sum(count) as tps from (SELECT microtime, if(Action!='SendMessage', 1, if(ReceiptHandle='', 1, cast(ReceiptHandle as bigint))) as count from log Where CommodityInstanceId='amqp-xx-xxx' and Action in ('SendMessage', 'ConnectionOpen', 'ChannelOpen', 'ExchangeDeclare', 'QueueBind', 'QueueDeclare', 'QueueDelete', 'ExchangeDelete', 'QueueUnBind', 'ExchangeBind', 'ExchangeUnBind', 'BasicConsume', 'BasicReject', 'BasicRecover', 'BasicAck', 'BasicNAck', 'PullMessage') limit 90000000) GROUP by time ORDER by time limit 90000000
查询前请将上文中的实例ID
amqp-xx-xxx
替换为待查询实例的ID。其中BasicNack(multiple=false),计TPS=1,BasicNack(multiple=true),计TPS=N,因此通过SLS日志配置统计出来的TPS值会小于实际发起的请求量。
查询TPS流量图时,如果客户端的流量比较大,建议将查询的时间范围限制在1小时或是更小的范围,然后在SQL语句后面加上
limit 90000000
,或者limit取值尽可能大。