热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

rabbitmq故障判断

查看rabbitmqDashboard就能观察出整个集群的状态,ready可以看成是消息积压,但是大多是由死信队列导致,这个大可放心&#x

查看rabbitmq Dashboard 就能观察出整个集群的状态, ready 可以看成是消息积压,但是大多是由死信队列导致,这个大可放心,即便消息再多,虽然消费者不消费但是配置了TTL消息会自动删除。

Publish 数一般不要超过12000/s, 一般小集群高峰平均:1000/s 左右 大集群高峰平均:6000/s 左右

Disk write 与 Deliver(manual ack) 息息相关, 手动ack 在消费者没有消费消息的时候,为了保证数据不丢失,采用beta这种落地方案,只要物理节点I/O不高,就可以忽略,同时如果消息被消费,就会自动删除这条消息。

状态:alpha,消息的内容和索引都在内存中;beta,消息的内容在磁盘,索引在内存;gamma,消息的内容在磁盘,索引在磁盘和内存中都有;delta,消息的内容和索引都在磁盘。

设计核心思想:

rabbitmq 可以使用镜像模式,但没必要all全量镜像,保留两个镜像就行,一个是主另一个是备,有两个好处,一个脑裂因素干扰少,另一个可以减少同步开销,添加了 {cluster_partition_handling, pause_minority} 设置,避免因网络原因导致的少数派选举,避免数据脑裂。

Ready:待消费的消息总s数
Unacked:待应答的消息总数。
Total:总数 Ready+Unacked
Publish:producter pub消息的速率。
Publisher confirm:broker确认pub消息的速率。
Deliver(manual ack):customer手动确认的速率。
Deliver( auto ack):customer自动确认的速率。
Consumer ack:customer正在确认的速率。
Redelivered:正在传递’redelivered’标志集的消息的速率。
Get (manual ack):响应basic.get而要求确认的消息的传输速率。
Get (auto ack):响应于basic.get而发送不需要确认的消息的速率。
Return:将basic.return发送给producter的速率。
Disk read:queue从磁盘读取消息的速率。
Disk write:queue从磁盘写入消息的速率。
Connections:client的tcp连接的总数。
Channels:通道的总数。
Exchange:交换器的总数。
Queues:队列的总数。
Consumers:消费者的总数。
在这里插入图片描述

查看rabbitmq Dashboard 就能观察出整个集群的状态, ready 可以看成是消息积压,但是大多是由死信队列导致,这个大可放心,即便消息再多,虽然消费者不消费但是配置了TTL消息会自动删除。

Publish 数一般不要超过12000/s, 一般小集群高峰平均:1000/s 左右 大集群高峰平均:6000/s 左右

Disk write 与 Deliver(manual ack) 息息相关, 手动ack 在消费者没有消费消息的时候,为了保证数据不丢失,采用beta这种落地方案,只要物理节点I/O不高,就可以忽略,同时如果消息备消费,就会自动删除这条消息。

状态:alpha,消息的内容和索引都在内存中;beta,消息的内容在磁盘,索引在内存;gamma,消息的内容在磁盘,索引在磁盘和内存中都有;delta,消息的内容和索引都在磁盘。

设计核心思想:

rabbitmq 可以使用镜像模式,但没必要all全量镜像,保留两个镜像就行,一个是主另一个是备,有两个好处,一个脑裂因素干扰少,另一个可以减少同步开销,添加了 {cluster_partition_handling, pause_minority} 设置,避免因网络原因导致的少数派选举,避免数据脑裂。

Ready:待消费的消息总s数
Unacked:待应答的消息总数。
Total:总数 Ready+Unacked
Publish:producter pub消息的速率。
Publisher confirm:broker确认pub消息的速率。
Deliver(manual ack):customer手动确认的速率。
Deliver( auto ack):customer自动确认的速率。
Consumer ack:customer正在确认的速率。
Redelivered:正在传递’redelivered’标志集的消息的速率。
Get (manual ack):响应basic.get而要求确认的消息的传输速率。
Get (auto ack):响应于basic.get而发送不需要确认的消息的速率。
Return:将basic.return发送给producter的速率。
Disk read:queue从磁盘读取消息的速率。
Disk write:queue从磁盘写入消息的速率。
Connections:client的tcp连接的总数。
Channels:通道的总数。
Exchange:交换器的总数。
Queues:队列的总数。
Consumers:消费者的总数。
在这里插入图片描述

https://www.jianshu.com/p/7b6e575fd451

命令判断

1,rabbitmqctl eval ‘rabbit_diagnostics:maybe_stuck().’

rabbitmqctl eval ‘rabbit_diagnostics:maybe_stuck().’
2021-07-23 11:25:19 There are 391 processes.
2021-07-23 11:25:19 Investigated 2 processes this round, 5000ms to go.
2021-07-23 11:25:19 Investigated 2 processes this round, 4500ms to go.
2021-07-23 11:25:20 Investigated 2 processes this round, 4000ms to go.
2021-07-23 11:25:20 Investigated 2 processes this round, 3500ms to go.
2021-07-23 11:25:21 Investigated 2 processes this round, 3000ms to go.
2021-07-23 11:25:21 Investigated 2 processes this round, 2500ms to go.
2021-07-23 11:25:22 Investigated 2 processes this round, 2000ms to go.
2021-07-23 11:25:22 Investigated 2 processes this round, 1500ms to go.
2021-07-23 11:25:23 Investigated 2 processes this round, 1000ms to go.
2021-07-23 11:25:23 Investigated 2 processes this round, 500ms to go.
2021-07-23 11:25:24 Found 2 suspicious processes.
2021-07-23 11:25:24 [{pid,<11072.1.0>},
{registered_name,erts_code_purger},
{current_stacktrace,
[{erts_code_purger,wait_for_request,0,[]}]},
{initial_call,{erts_code_purger,start,0}},
{message_queue_len,0},
{links,[]},
{monitors,[]},
{monitored_by,[]},
{heap_size,233}]
2021-07-23 11:25:24 [{pid,<11072.686.0>},
{registered_name,[]},
{current_stacktrace,
[{pg2,’-do_monitor/1-fun-0-’,1,
[{file,“pg2.erl”},{line,383}]}]},
{initial_call,{erlang,apply,2}},
{message_queue_len,0},
{links,[]},
{monitors,[{process,<11272.385.0>}]},
{monitored_by,[<11072.405.0>]},
{heap_size,233}]
ok

返回ok 是正常的集群状态

2&#xff0c; rabbitmqctl cluster_status

Cluster status of node rabbit&#64;transactionrabbitmq03
[{nodes,[{disc,[rabbit&#64;transactionrabbitmq01,rabbit&#64;transactionrabbitmq02,
rabbit&#64;transactionrabbitmq03]}]},
{running_nodes,[rabbit&#64;transactionrabbitmq01,rabbit&#64;transactionrabbitmq02,
rabbit&#64;transactionrabbitmq03]}, 如果显示 running_nodes 说明是正常的
{cluster_name,<<“rabbit&#64;transactionrabbitmq01”>>},
{partitions,[]},
{alarms,[{rabbit&#64;transactionrabbitmq01,[]},
{rabbit&#64;transactionrabbitmq02,[]},
{rabbit&#64;transactionrabbitmq03,[]}]}]

3&#xff0c; 如果集群异常&#xff0c;请在任何一个节点上快速执行,就能恢复集群正常状态

rabbitmqctl stop_apprabbtitmqctl start_app

4&#xff0c;如果发现rabbitmq 集群脑裂&#xff0c;请在少数派上执行这条命令

rabbitmqctl stop_apprabbtitmqctl start_app

推荐阅读
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 在 Linux 环境下,多线程编程是实现高效并发处理的重要技术。本文通过具体的实战案例,详细分析了多线程编程的关键技术和常见问题。文章首先介绍了多线程的基本概念和创建方法,然后通过实例代码展示了如何使用 pthreads 库进行线程同步和通信。此外,还探讨了多线程程序中的性能优化技巧和调试方法,为开发者提供了宝贵的实践经验。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • Python多线程编程技巧与实战应用详解 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 目录预备知识导包构建数据集神经网络结构训练测试精度可视化计算模型精度损失可视化输出网络结构信息训练神经网络定义参数载入数据载入神经网络结构、损失及优化训练及测试损失、精度可视化qu ... [详细]
  • 本文详细介绍了如何使用Python的多进程技术来高效地分块读取超大文件,并将其输出为多个文件。通过这种方式,可以显著提高读取速度和处理效率。 ... [详细]
  • 2022年2月 微信小程序 app.json 配置详解:启用调试模式
    本文将详细介绍如何在微信小程序的 app.json 文件中启用调试模式(debug),并通过实际案例展示其配置方法和应用场景。 ... [详细]
  • 本文介绍了如何处理在Xcode构建过程中出现的多个命令生成相同文件的问题,特别是当这些文件与Info.plist无关时。 ... [详细]
  • STM32串口通信:完整指南
    众所周知,串口通信是MCU最基本的通信方式,对于STM32来说也是如此。本文重点讲述STM32单片机的串口通信,主要包括的内容是:通信基础知识、串口通信原理、USART有关寄存器和 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 在Linux系统中,通过命令行查询计算机硬件配置是一项重要的技能。本文介绍了多种实用的命令和技巧,帮助用户高效地获取硬件信息。例如,可以通过 `cat /proc/cpuinfo | grep "physical id"` 命令来查看物理CPU的数量。此外,文章还涵盖了其他关键硬件组件的查询方法,如内存、磁盘和网络设备等。这些命令不仅适用于系统管理员,也适合普通用户了解自己的系统配置。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • 深入解析Android 4.4中的Fence机制及其应用
    在Android 4.4中,Fence机制是处理缓冲区交换和同步问题的关键技术。该机制广泛应用于生产者-消费者模式中,确保了不同组件之间高效、安全的数据传输。通过深入解析Fence机制的工作原理和应用场景,本文探讨了其在系统性能优化和资源管理中的重要作用。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
author-avatar
mobiledu2502921803
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有