RocketMQ Promethus Exporter

介绍​

Rocketmq-exporter 是用于监控 RocketMQ broker 端和客户端所有相关指标的系统,通过 mqAdmin 从 broker 端获取指标值后封装成 87 个 cache。

警告

过去版本曾是 87 个 concurrentHashMap,由于 Map 不会删除过期指标,所以一旦有 label 变动就会生成一个新的指标,旧的无用指标无法自动删除,久而久之造成内存溢出。而使用 Cache 结构可可以实现过期删除,且过期时间可配置。

Rocketmq-expoter 获取监控指标的流程如下图所示,Expoter 通过 MQAdminExt 向 MQ 集群请求数据,请求到的数据通过 MetricService 规范化成 Prometheus 需要的格式,然后通过 /metics 接口暴露给 Promethus。 

957681249485

Metric 结构​

Metric 类位于 org.apache.rocketmq.expoter.model.metrics 包下,实质上是一些实体类,每个实体类代表一类指标, 总共 14 个 Metric 类。这些类作为 87 个 Cache 的 key, 用不同的 label 值进行区分。

实体类中包含了 LABEL 的三个维度:BROKER、CONSUMER、PRODUCER

  • broker 相关 metric 类有: BrokerRuntimeMetric、BrokerMetric、DLQTopicOffsetMetric、TopicPutNumMetric

  • 消费者相关类有: ConsumerRuntimeConsumeFailedMsgsMetric 、ConsumerRuntimeConsumeFailedTPSMetric 、ConsumerRuntimeConsumeOKTPSMetric、ConsumerRuntimeConsumeRTMetric、ConsumerRuntimePullRTMetric、ConsumerRuntimePullTPSMetric、ConsumerCountMetric、ConsumerMetric、ConsumerTopicDiffMetric

  • 生产者相关 metric 类有: ProducerMetric

Prometheus 拉取 metrics 的过程​

RocketMQ-exporter 项目和 Prometheus 相当于服务器和客户端的关系,RocketMQ-exporter 项目引入了 Prometheus 的 client 包,该包中规定了需要获取的信息的类型即项目中的 MetricFamilySamples 类,Prometheus 向 expoter 请求 metrics,expoter 将信息封装成相应的类型之后返回给 Prometheus。

rocketmq-expoter 项目启动后,会获取 rocketmq 的各项 metrics 收集到 mfs 对象中,当浏览器或 Prometheus 访问相应的接口时,会通过 service 将 mfs 对象中的 samples 生成 Prometheus 所支持的格式化数据。主要包含以下步骤:

浏览器通过访问 ip:5557/metrics,会调用 RMQMetricsController 类下的 metrics 方法,其中 ip 为 rocketmq-expoter 项目运行的主机 ip

    private void metrics(HttpServletResponse response) throws IOException {StringWriter writer = new StringWriter();metricsService.metrics(writer);response.setHeader("Content-Type", "text/plain; version=0.0.4; charset=utf-8");response.getOutputStream().print(writer.toString());
}

通过新建 StringWriter 对象用于收集 metrics 指标,调用 MetricsService 类中的方法 metrics 将 expoter 中提取到的指标收集到 writer 对象中,最后将收集到的指标输出到网页上。

收集到的指标格式为:

<metric name>{<label name>=<label value>, ...} <metric value>

如:

rocketmq_group_diff{group="rmq_group_test_20220114",topic="fusion_console_tst",countOfOnlineConsumers="0",msgModel="1",} 23.0

MetricCollectTask 类中的 5 个定时任务​

MetricCollectTask 类中有 5 个定时任务,分别为 collectTopicOffset、collectConsumerOffset、collectBrokerStatsTopic、collectBrokerStats 和 collectBrokerRuntimeStats。用于收集消费位点信息以及 Broker 状态信息等。其 cron 表达式为:cron: 15 0/1 * * * ?,表示每分钟会收集一次。其核心功能是通过 mqAdminExt 对象从集群中获取 broker 中的信息,然后将其添加到对应的 87 个监控指标中,以 collectTopicOffset 为例:

  1. 首先初始化TopicList对象,通过mqAdminExt.fetchAllTopicList()方法获取到集群的所有topic信息。
    TopicList topicList = null;try {  topicList = mqAdminExt.fetchAllTopicList();
} catch (Exception ex) {log.error(String.format("collectTopicOffset-exception comes getting topic list from namesrv, address is %s",JSON.toJSONString(mqAdminExt.getNameServerAddressList())));return;}

  1. 将 topic 加入到 topicSet 中,循环遍历每一个 topic,通过 mqAdminExt.examineTopicStats(topic)函数来检查 topic 状态。
    Set < String > topicSet = topicList != null ? topicList.getTopicList() : null;for (String topic: topicSet) {TopicStatsTable topicStats = null;try {topicStats = mqAdminExt.examineTopicStats(topic);} catch (Exception ex) {log.error(String.format("collectTopicOffset-getting topic(%s) stats error. the namesrv address is %s",topic,JSON.toJSONString(mqAdminExt.getNameServerAddressList())));continue;}

  1. 初始化 topic 状态 set,用于用于按 broker 划分的 topic 信息位点的 hash 表 brokerOffsetMap,以及一个用于按 broker 名字为 key 的用于存储更新时间戳的 hash 表 brokerUpdateTimestampMap。
        Set<Map.Entry<MessageQueue, TopicOffset>> topicStatusEntries = topicStats.getOffsetTable().entrySet();HashMap<String, Long> brokerOffsetMap = new HashMap<>();HashMap<String, Long> brokerUpdateTimestampMap = new HashMap<>();for (Map.Entry<MessageQueue, TopicOffset> topicStatusEntry : topicStatusEntries) {MessageQueue q = topicStatusEntry.getKey();TopicOffset offset = topicStatusEntry.getValue();if (brokerOffsetMap.containsKey(q.getBrokerName())) {brokerOffsetMap.put(q.getBrokerName(), brokerOffsetMap.get(q.getBrokerName()) + offset.getMaxOffset());} else {brokerOffsetMap.put(q.getBrokerName(), offset.getMaxOffset());}if (brokerUpdateTimestampMap.containsKey(q.getBrokerName())) {if (offset.getLastUpdateTimestamp() > brokerUpdateTimestampMap.get(q.getBrokerName())) {brokerUpdateTimestampMap.put(q.getBrokerName(), offset.getLastUpdateTimestamp());}} else {brokerUpdateTimestampMap.put(q.getBrokerName(),offset.getLastUpdateTimestamp());}}

  1. 最后通过遍历 brokerOffsetMap 中的每一项,通过调用 metricsService 获取到 metricCollector 对象,调用 RMQMetricsCollector 类中的 addTopicOffsetMetric 方法,将相应的值添加到 RMQMetricsCollector 类中 87 个指标对应的其中一个指标的 cache 中。
 Set<Map.Entry<String, Long>> brokerOffsetEntries = brokerOffsetMap.entrySet();for (Map.Entry<String, Long> brokerOffsetEntry : brokerOffsetEntries) {metricsService.getCollector().addTopicOffsetMetric(clusterName, brokerOffsetEntry.getKey(), topic,brokerUpdateTimestampMap.get(brokerOffsetEntry.getKey()), brokerOffsetEntry.getValue());}}log.info("topic offset collection task finished...." + (System.currentTimeMillis() - start));
}

Rocketmq-exporter 收集指标流程图​

95680458234

快速开始​

配置 application.yml

application.yml 中重要的配置主要有:

  • server.port 设置 promethus 监听 rocketmq-exporter 的端口, 默认为 5557

  • rocketmq.config.webTelemetryPath 配置 promethus 获取指标的路径,默认为 /metrics ,使用默认值即可.

  • rocketmq.config.enableACL 如果 RocketMQ 集群开启了 ACL 验证,需要配置为 true, 并在 accessKey 和 secretKey 中配置相应的 ak, sk.

  • rocketmq.config.outOfTimeSeconds 用于配置存储指标和相应的值的过期时间,若超过该时间,cache 中的 key 对应的节点没有发生写更改,则会进行删除.一般配置为 60s 即可(根据 promethus 获取指标的时间间隔进行合理配置,只要保证过期时间大于等于 promethus 收集指标的时间间隔即可)

  • task..cron 配置 exporter 从 broker 拉取指标的定时任务的时间间隔,默认值为"15 0/1 * * ?" 每分钟的 15s 拉取一次指标.

启动 exporter 项目​

按照 promethus 官网配置启动​

配置 promethus 的 static_config: -targets 为 exporter 的启动 IP 和端口,如: localhost:5557

访问 promethus 页面​

本地启动默认为: localhost:9090 ,则可对收集到的指标值进行查看,如下图所示:

906876098423

提示

为了达到更好的可视化效果,观察指标值变化趋势, promethus 搭配 grafana 效果更佳哦!

可观测性指标​

可观测性指标主要包括两个大类: 服务端指标和客户端指标, 服务端指标由服务端直接生成, 客户端指标在客户端产生, 由服务端通过 rpc 请求客户端获取到. 客户端指标又可细分为生产端指标和消费端指标.所有 87 个可观测性指标及其主要含义如下:

服务端指标

服务端指标​

指标名称含义对应Broker指标名
rocketmq_broker_tpsBroker级别的生产TPS
rocketmq_broker_qpsBroker级别的消费QPS
rocketmq_broker_commitlog_diffBroker组从节点同步落后消息size
rocketmq_brokeruntime_pmdt_0ms服务端开始处理写请求到完成写入的耗时(0ms)putMessageDistributeTime
rocketmq_brokeruntime_pmdt_0to10ms服务端开始处理写请求到完成写入的耗时(0~10ms)
rocketmq_brokeruntime_pmdt_10to50ms服务端开始处理写请求到完成写入的耗时(10~50ms)
rocketmq_brokeruntime_pmdt_50to100ms服务端开始处理写请求到完成写入的耗时(50~100ms)
rocketmq_brokeruntime_pmdt_100to200ms服务端开始处理写请求到完成写入的耗时(100~200ms)
rocketmq_brokeruntime_pmdt_200to500ms服务端开始处理写请求到完成写入的耗时(200~500ms)
rocketmq_brokeruntime_pmdt_500to1s服务端开始处理写请求到完成写入的耗时(500~1000ms)
rocketmq_brokeruntime_pmdt_1to2s服务端开始处理写请求到完成写入的耗时(1~2s)
rocketmq_brokeruntime_pmdt_2to3s服务端开始处理写请求到完成写入的耗时(2~3s)
rocketmq_brokeruntime_pmdt_3to4s服务端开始处理写请求到完成写入的耗时(3~4s)
rocketmq_brokeruntime_pmdt_4to5s服务端开始处理写请求到完成写入的耗时(4~5s)
rocketmq_brokeruntime_pmdt_5to10s服务端开始处理写请求到完成写入的耗时(5~10s)
rocketmq_brokeruntime_pmdt_10stomore服务端开始处理写请求到完成写入的耗时(> 10s)
rocketmq_brokeruntime_dispatch_behind_bytes到现在为止,未被分发(构建索引之类的操作)的消息bytesdispatchBehindBytes
rocketmq_brokeruntime_put_message_size_totalbroker写入消息size的总和putMessageSizeTotal
rocketmq_brokeruntime_put_message_average_sizebroker写入消息的平均大小putMessageAverageSize
rocketmq_brokeruntime_remain_transientstore_buffer_numbsTransientStorePool 中队列的容量remainTransientStoreBufferNumbs
rocketmq_brokeruntime_earliest_message_timestampbroker存储的消息最早的时间戳earliestMessageTimeStamp
rocketmq_brokeruntime_putmessage_entire_time_maxbroker自运行以来,写入消息耗时的最大值putMessageEntireTimeMax
rocketmq_brokeruntime_start_accept_sendrequest_time开始接受发送请求的时间startAcceptSendRequestTimeStamp
rocketmq_brokeruntime_putmessage_times_totalbroker写入消息的总次数putMessageTimesTotal
rocketmq_brokeruntime_getmessage_entire_time_maxbroker自启动以来,处理消息拉取的最大耗时getMessageEntireTimeMax
rocketmq_brokeruntime_pagecache_lock_time_millspageCacheLockTimeMills
rocketmq_brokeruntime_commitlog_disk_ratiocommitLog所在磁盘的使用比例commitLogDiskRatio
rocketmq_brokeruntime_dispatch_maxbufferbroker没有计算,一直为0dispatchMaxBuffer
rocketmq_brokeruntime_pull_threadpoolqueue_capacity处理拉取请求线程池队列的容量pullThreadPoolQueueCapacity
rocketmq_brokeruntime_send_threadpoolqueue_capacity处理发送请求线程池队列的容量sendThreadPoolQueueCapacity
rocketmq_brokeruntime_query_threadpool_queue_capacity处理查询请求线程池队列的容量queryThreadPoolQueueCapacity
rocketmq_brokeruntime_pull_threadpoolqueue_size处理拉取请求线程池队列的实际sizepullThreadPoolQueueSize
rocketmq_brokeruntime_query_threadpoolqueue_size处理查询请求线程池队列的实际sizequeryThreadPoolQueueSize
rocketmq_brokeruntime_send_threadpool_queue_size处理send请求线程池队列的实际sizesendThreadPoolQueueSize
rocketmq_brokeruntime_pull_threadpoolqueue_headwait_timemills处理拉取请求线程池队列的队头任务等待时间pullThreadPoolQueueHeadWaitTimeMills
rocketmq_brokeruntime_query_threadpoolqueue_headwait_timemills处理查询请求线程池队列的队头任务等待时间queryThreadPoolQueueHeadWaitTimeMills
rocketmq_brokeruntime_send_threadpoolqueue_headwait_timemills处理发送请求线程池队列的队头任务等待时间sendThreadPoolQueueHeadWaitTimeMills
rocketmq_brokeruntime_msg_gettotal_yesterdaymorning到昨晚12点为止,读取消息的总次数msgGetTotalYesterdayMorning
rocketmq_brokeruntime_msg_puttotal_yesterdaymorning到昨晚12点为止,写入消息的总次数msgPutTotalYesterdayMorning
rocketmq_brokeruntime_msg_gettotal_todaymorning到今晚12点为止,读取消息的总次数msgGetTotalTodayMorning
rocketmq_brokeruntime_msg_puttotal_todaymorning到昨晚12点为止,写入消息的总次数putMessageTimesTotal
rocketmq_brokeruntime_msg_put_total_today_now每个broker到现在为止,写入的消息次数msgPutTotalTodayNow
rocketmq_brokeruntime_msg_gettotal_today_now每个broker到现在为止,读取的消息次数msgGetTotalTodayNow
rocketmq_brokeruntime_commitlogdir_capacity_freecommitLog所在目录的可用空间commitLogDirCapacity
rocketmq_brokeruntime_commitlogdir_capacity_totalcommitLog所在目录的总空间
rocketmq_brokeruntime_commitlog_maxoffsetcommitLog的最大offsetcommitLogMaxOffset
rocketmq_brokeruntime_commitlog_minoffsetcommitLog的最小offsetcommitLogMinOffset
rocketmq_brokeruntime_remain_howmanydata_toflushremainHowManyDataToFlush
rocketmq_brokeruntime_getfound_tps600600s内getMessage时get到消息的平均TPSgetFoundTps
rocketmq_brokeruntime_getfound_tps6060s内getMessage时get到消息的平均TPS
rocketmq_brokeruntime_getfound_tps1010s内getMessage时get到消息的平均TPS
rocketmq_brokeruntime_gettotal_tps600600s内getMessage次数的平均TPSgetTotalTps
rocketmq_brokeruntime_gettotal_tps6060s内getMessage次数的平均TPS
rocketmq_brokeruntime_gettotal_tps1010s内getMessage次数的平均TPS
rocketmq_brokeruntime_gettransfered_tps600getTransferedTps
rocketmq_brokeruntime_gettransfered_tps60
rocketmq_brokeruntime_gettransfered_tps10
rocketmq_brokeruntime_getmiss_tps600600s内getMessage时没有get到消息的平均TPSgetMissTps
rocketmq_brokeruntime_getmiss_tps6060s内getMessage时没有get到消息的平均TPS
rocketmq_brokeruntime_getmiss_tps1010s内getMessage时没有get到消息的平均TPS
rocketmq_brokeruntime_put_tps600600s内写入消息次数的平均TPSputTps
rocketmq_brokeruntime_put_tps6060s内写入消息次数的平均TPS
rocketmq_brokeruntime_put_tps1010s内写入消息次数的平均TPS

生产端指标

生产端指标​

指标名称含义
rocketmq_producer_offsettopic当前时间的最大offset
rocketmq_topic_retry_offset重试Topic当前时间的最大offset
rocketmq_topic_dlq_offset死信Topic当前时间的最大offset
rocketmq_producer_tpsTopic在一个Broker组上的生产TPS
rocketmq_producer_message_sizeTopic在一个Broker组上的生产消息大小的TPS
rocketmq_queue_producer_tps队列级别生产TPS
rocketmq_queue_producer_message_size队列级别生产消息大小的TPS

消费端指标### 消费端指标

指标名称含义
rocketmq_group_diff消费组消息堆积消息数
rocketmq_group_retrydiff消费组重试队列堆积消息数
rocketmq_group_dlqdiff消费组死信队列堆积消息数
rocketmq_group_count消费组内消费者个数
rocketmq_client_consume_fail_msg_count过去1h消费者消费失败的次数
rocketmq_client_consume_fail_msg_tps消费者消费失败的TPS
rocketmq_client_consume_ok_msg_tps消费者消费成功的TPS
rocketmq_client_consume_rt消息从拉取到被消费的时间
rocketmq_client_consumer_pull_rt客户端拉取消息的时间
rocketmq_client_consumer_pull_tps客户端拉取消息的TPS
rocketmq_consumer_tps每个Broker组上订阅组的消费TPS
rocketmq_group_consume_tps订阅组当前消费TPS(对rocketmq_consumer_tps按broker聚合)
rocketmq_consumer_offset订阅组在一个broker组上当前的消费Offset
rocketmq_group_consume_total_offset订阅组当前消费的Offset(对rocketmq_consumer_offset按broker聚合)
rocketmq_consumer_message_size订阅组在一个broker组上消费消息大小的TPS
rocketmq_send_back_nums订阅组在一个broker组上消费失败,写入重试消息的次数
rocketmq_group_get_latency_by_storetime消费组消费延时,exporter get到消息后与当前时间相减
指标名称含义对应Broker指标名
rocketmq_broker_tpsBroker级别的生产TPS
rocketmq_broker_qpsBroker级别的消费QPS
rocketmq_broker_commitlog_diffBroker组从节点同步落后消息size
rocketmq_brokeruntime_pmdt_0ms服务端开始处理写请求到完成写入的耗时(0ms)putMessageDistributeTime
rocketmq_brokeruntime_pmdt_0to10ms服务端开始处理写请求到完成写入的耗时(0~10ms)
rocketmq_brokeruntime_pmdt_10to50ms服务端开始处理写请求到完成写入的耗时(10~50ms)
rocketmq_brokeruntime_pmdt_50to100ms服务端开始处理写请求到完成写入的耗时(50~100ms)
rocketmq_brokeruntime_pmdt_100to200ms服务端开始处理写请求到完成写入的耗时(100~200ms)
rocketmq_brokeruntime_pmdt_200to500ms服务端开始处理写请求到完成写入的耗时(200~500ms)
rocketmq_brokeruntime_pmdt_500to1s服务端开始处理写请求到完成写入的耗时(500~1000ms)
rocketmq_brokeruntime_pmdt_1to2s服务端开始处理写请求到完成写入的耗时(1~2s)
rocketmq_brokeruntime_pmdt_2to3s服务端开始处理写请求到完成写入的耗时(2~3s)
rocketmq_brokeruntime_pmdt_3to4s服务端开始处理写请求到完成写入的耗时(3~4s)
rocketmq_brokeruntime_pmdt_4to5s服务端开始处理写请求到完成写入的耗时(4~5s)
rocketmq_brokeruntime_pmdt_5to10s服务端开始处理写请求到完成写入的耗时(5~10s)
rocketmq_brokeruntime_pmdt_10stomore服务端开始处理写请求到完成写入的耗时(> 10s)
rocketmq_brokeruntime_dispatch_behind_bytes到现在为止,未被分发(构建索引之类的操作)的消息bytesdispatchBehindBytes
rocketmq_brokeruntime_put_message_size_totalbroker写入消息size的总和putMessageSizeTotal
rocketmq_brokeruntime_put_message_average_sizebroker写入消息的平均大小putMessageAverageSize
rocketmq_brokeruntime_remain_transientstore_buffer_numbsTransientStorePool 中队列的容量remainTransientStoreBufferNumbs
rocketmq_brokeruntime_earliest_message_timestampbroker存储的消息最早的时间戳earliestMessageTimeStamp
rocketmq_brokeruntime_putmessage_entire_time_maxbroker自运行以来,写入消息耗时的最大值putMessageEntireTimeMax
rocketmq_brokeruntime_start_accept_sendrequest_time开始接受发送请求的时间startAcceptSendRequestTimeStamp
rocketmq_brokeruntime_putmessage_times_totalbroker写入消息的总次数putMessageTimesTotal
rocketmq_brokeruntime_getmessage_entire_time_maxbroker自启动以来,处理消息拉取的最大耗时getMessageEntireTimeMax
rocketmq_brokeruntime_pagecache_lock_time_millspageCacheLockTimeMills
rocketmq_brokeruntime_commitlog_disk_ratiocommitLog所在磁盘的使用比例commitLogDiskRatio
rocketmq_brokeruntime_dispatch_maxbufferbroker没有计算,一直为0dispatchMaxBuffer
rocketmq_brokeruntime_pull_threadpoolqueue_capacity处理拉取请求线程池队列的容量pullThreadPoolQueueCapacity
rocketmq_brokeruntime_send_threadpoolqueue_capacity处理发送请求线程池队列的容量sendThreadPoolQueueCapacity
rocketmq_brokeruntime_query_threadpool_queue_capacity处理查询请求线程池队列的容量queryThreadPoolQueueCapacity
rocketmq_brokeruntime_pull_threadpoolqueue_size处理拉取请求线程池队列的实际sizepullThreadPoolQueueSize
rocketmq_brokeruntime_query_threadpoolqueue_size处理查询请求线程池队列的实际sizequeryThreadPoolQueueSize
rocketmq_brokeruntime_send_threadpool_queue_size处理send请求线程池队列的实际sizesendThreadPoolQueueSize
rocketmq_brokeruntime_pull_threadpoolqueue_headwait_timemills处理拉取请求线程池队列的队头任务等待时间pullThreadPoolQueueHeadWaitTimeMills
rocketmq_brokeruntime_query_threadpoolqueue_headwait_timemills处理查询请求线程池队列的队头任务等待时间queryThreadPoolQueueHeadWaitTimeMills
rocketmq_brokeruntime_send_threadpoolqueue_headwait_timemills处理发送请求线程池队列的队头任务等待时间sendThreadPoolQueueHeadWaitTimeMills
rocketmq_brokeruntime_msg_gettotal_yesterdaymorning到昨晚12点为止,读取消息的总次数msgGetTotalYesterdayMorning
rocketmq_brokeruntime_msg_puttotal_yesterdaymorning到昨晚12点为止,写入消息的总次数msgPutTotalYesterdayMorning
rocketmq_brokeruntime_msg_gettotal_todaymorning到今晚12点为止,读取消息的总次数msgGetTotalTodayMorning
rocketmq_brokeruntime_msg_puttotal_todaymorning到昨晚12点为止,写入消息的总次数putMessageTimesTotal
rocketmq_brokeruntime_msg_put_total_today_now每个broker到现在为止,写入的消息次数msgPutTotalTodayNow
rocketmq_brokeruntime_msg_gettotal_today_now每个broker到现在为止,读取的消息次数msgGetTotalTodayNow
rocketmq_brokeruntime_commitlogdir_capacity_freecommitLog所在目录的可用空间commitLogDirCapacity
rocketmq_brokeruntime_commitlogdir_capacity_totalcommitLog所在目录的总空间
rocketmq_brokeruntime_commitlog_maxoffsetcommitLog的最大offsetcommitLogMaxOffset
rocketmq_brokeruntime_commitlog_minoffsetcommitLog的最小offsetcommitLogMinOffset
rocketmq_brokeruntime_remain_howmanydata_toflushremainHowManyDataToFlush
rocketmq_brokeruntime_getfound_tps600600s内getMessage时get到消息的平均TPSgetFoundTps
rocketmq_brokeruntime_getfound_tps6060s内getMessage时get到消息的平均TPS
rocketmq_brokeruntime_getfound_tps1010s内getMessage时get到消息的平均TPS
rocketmq_brokeruntime_gettotal_tps600600s内getMessage次数的平均TPSgetTotalTps
rocketmq_brokeruntime_gettotal_tps6060s内getMessage次数的平均TPS
rocketmq_brokeruntime_gettotal_tps1010s内getMessage次数的平均TPS
rocketmq_brokeruntime_gettransfered_tps600getTransferedTps
rocketmq_brokeruntime_gettransfered_tps60
rocketmq_brokeruntime_gettransfered_tps10
rocketmq_brokeruntime_getmiss_tps600600s内getMessage时没有get到消息的平均TPSgetMissTps
rocketmq_brokeruntime_getmiss_tps6060s内getMessage时没有get到消息的平均TPS
rocketmq_brokeruntime_getmiss_tps1010s内getMessage时没有get到消息的平均TPS
rocketmq_brokeruntime_put_tps600600s内写入消息次数的平均TPSputTps
rocketmq_brokeruntime_put_tps6060s内写入消息次数的平均TPS
rocketmq_brokeruntime_put_tps1010s内写入消息次数的平均TPS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/89973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美美游玩规划

2023年的国庆 游玩规划&#xff1a; 时间安排是9月29日到10月2日上午&#xff1b; 可以有三个整天加一个上午&#xff0c;上午可以去一个近一点的地方&#xff1b; 可能要去的景点&#xff1a; 天安门广场、颐和园、西单购物中心、故宫、天坛公园、 毛主席纪念堂&#xff08;2…

C++之list成员函数应用总结(二百三十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

数据库管理-第108期 因Exadata存储节点操作系统空间异常的紧急处理(20230928)

数据库管理-第108期 因Exadata存储节点操作系统空间异常的紧急处理&#xff08;20230928&#xff09; 众所周知&#xff0c;明天放假了&#xff0c;本着对客户数据库软硬件负责任的态度&#xff0c;进行了一次深入彻底的软硬件巡检&#xff08;就是检查包括计算节点、存储节点…

PyTorch - Dataset 迭代数据接口 __getitem__ 异常处理

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/133378772 在模型训练的过程中&#xff0c;加载数据部分&#xff0c;极其容易出现异常&#xff0c;以及不可控的因素&#xff0c;需要通过异常捕获…

【网络协议】TCP报文格式

1.源端口和目的端口 源端口字段占16比特&#xff0c;用来写入源端口号。源端口号用来标识发送该TCP报文段的应用进程。 目的端口字段占16比特&#xff0c;用来写入目的端口号。目的端口号用来标识接收该TCP报文段的应用进程。 2.序号 当序号增加到最后一个时&#xff0c;下…

26551-2011 畜牧机械 粗饲料切碎机

声明 本文是学习GB-T 26551-2011 畜牧机械 粗饲料切碎机. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了粗饲料切碎机的产品型号、技术要求、试验方法、检验规则、标志、包装、运输与贮存。 本标准适用于加工农作物秸秆等粗饲料…

Mysql生产随笔

目录 1. Mysql批量Kill删除processlist 1.1查看进程、拼接、导出、执行 1.2常见错误解决方案 2.关于时区 3.内存占用优化 记录一下生产过程中的一些场景和命令使用方法&#xff0c;不定期进行更新 1. Mysql批量Kill删除processlist 1.1查看进程、拼接、导出、执行 sho…

【AIPOD案例操作教程】斜流风扇轮毂优化

AIPOD是由天洑软件自主研发的一款通用的智能优化设计软件&#xff0c;致力于解决能耗更少、成本更低、重量更轻、散热更好、速度更快等目标的工程设计寻优问题。针对工业设计领域的自动化程度低、数值模拟计算成本高等痛点&#xff0c;基于人工智能技术、自研先进的智能代理学习…

linux部署页面内容

/bin&#xff1a;该目录包含了常用的二进制可执行文件&#xff0c;如ls、cp、mv、rm等等。 /boot&#xff1a;该目录包含了启动Linux系统所需的文件&#xff0c;如内核文件和引导加载程序。 /dev&#xff1a;该目录包含了所有设备文件&#xff0c;如硬盘、光驱、鼠标、键盘等等…

新手十分钟也能完成的Unity小游戏打砖块

由Siki学院打砖块游戏启发完成一个非常非常简单&#xff0c;纯新手也能十分钟做出来的小游戏——打砖块。 一.搭建场景 首先我们先在一个空白的3D项目中创建一个Plane平面&#xff0c;将其放置于世界中央位置&#xff0c;长宽设置为2&#xff0c;并为其添加一个材质Material&am…

二十,镜面IBL--打印BRDF积分贴图

比起以往&#xff0c;这节应该是最轻松的了&#xff0c; 运行结果如下 代码如下&#xff1a; #include <osg/TextureCubeMap> #include <osg/TexGen> #include <osg/TexEnvCombine> #include <osgUtil/ReflectionMapGenerator> #include <osgDB/Re…

挂件板死机刷固件

用ESP32-DevKitC_V4刷固件的工具flash_download_tool_3.9.5.exe 挂件板子端口接线依次为V&#xff08;接3V3&#xff09;、R&#xff08;接TXD&#xff09;、T&#xff08;接RXD&#xff09;、G&#xff08;接GND&#xff09;、L&#xff08;悬空&#xff09; 1.选择ESP8266&…

关于TUM数据集

2、验证回环检测算法&#xff0c;需要有人工标记回环的数据集。然而人工标记回环是很不方便的&#xff0c;我们会考虑根据标准轨迹计算回环。即&#xff0c;如果轨迹中有两个帧的位姿非常相近&#xff0c;就认为它们是回环。请根据TUM数据集给出的标准轨迹&#xff0c;计算出一…

MySQL学习笔记19

MySQL日志文件&#xff1a;MySQL中我们需要了解哪些日志&#xff1f; 常见日志文件&#xff1a; 我们需要掌握错误日志、二进制日志、中继日志、慢查询日志。 错误日志&#xff1a; 作用&#xff1a;存放数据库的启动、停止和运行时的错误信息。 场景&#xff1a;用于数据库的…

BACnet/IP协议采集网关支持modbus RTU采集

楼宇自动化在现代建筑中扮演着重要的角色&#xff0c;它可以集成和控制各种设备和系统&#xff0c;提高建筑的能效和舒适性。然而&#xff0c;不同的设备和系统通常使用不同的通信协议&#xff0c;这给楼宇自动化的实施带来了一定的挑战。为了解决这个问题&#xff0c;BACnet和…

面试问到MySQL模块划分与架构体系怎么办

面试问到Mysql模块划分与架构体系怎么办 文章目录 1. 应用层连接管理器&#xff08;Connection Manager&#xff09;安全性和权限模块&#xff08;Security and Privilege Module&#xff09; 2. MySQL服务器层2.1. 服务支持和工具集2.2. SQL Interface2.3. 解析器举个解析器 …

vuepress+gitee免费搭建个人在线博客(无保留版)

文章目录 最终效果&#xff0c;一睹为快&#xff01;一、工具选型二、什么是VuePress三、准备工作3.1 node 安装3.2 Git安装3.3 Gitee账号注册 四、搭建步骤4.1 初始化VuePress4.2 安装VuePress4.3 初始化目录4.4 编写文章 五、部署到Gitee5.1 创建仓库5.2 个人空间地址设置4.3…

1.vue3脚手架在vscode下面建立

一、下载安装node.js Node.js (nodejs.org) 二、安装vue3脚手架 #添加项目脚手架 npm install -g vue/cli 三、建立项目 #项目建立 vue create {appname} 测试项目安装成功&#xff1a;运行npm run serve命令 npm run serve 证明脚手架、项目环境已配置好 四、添加配件&#x…

高光时刻丨极智嘉斩获2023中国物流与采购联合会科学技术一等奖

不久前&#xff0c;中国物流与采购联合会宣布了2022年度科学技术奖获奖名单&#xff0c;其中包括了一项令人瞩目的成就。这项成就源自于极智嘉与国药物流、南京医药、九州通医药以及多所高校的合作&#xff0c;他们共同努力&#xff0c;成功研究并应用了一项关键技术&#xff0…

26531-2011 地理标志产品 永春老醋

声明 本文是学习GB-T 26531-2011 地理标志产品 永春老醋. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了永春老醋地理标志产品的术语和定义、保护范围、产品分级、要求、试验方法、检验规 则和标签、标志、包装、运输、贮存的要…