目录:

  • 性能
  • 存储机制
  • 内存及磁盘告警

性能:

影响RabbitMQ性能的因素有很多,主要的分为硬件性能与软件性能。

硬件性能:如网络、内存、CPU等等。

软件性能:消息持久化、消息确认、路由算法与绑定规则、投递消息等等。

1、消息持久化:持久化会写入磁盘,多一次IO操作,设置非持久化可提升性能。

2、消息确认:消费者订阅队列时,设置自动确认也可以提升性能。

3、路由算法与绑定规则:fanout,只要绑定了交换器就可以匹配到,匹配规则少,性能肯定是绑定规则中最佳的;direct,除了交换器还需要匹配路由键,性能次之;topic,最复杂的匹配规则,相对其它两个性能最差。

4、投递消息

存储机制:

队列结构

消息通常由两部分组成,rabbit_amqqueue_process和backing_queue。

1、rabbit_amqqueue_process:负责协议相关的消息处理,即接受生产者发布的消息、消息的投递、处理消息的确认等等。

2、backing_queue:消息存储的具体形式和引擎,并向rabbit_amqqueue_process提供相关接口。

消息在队列中的状态

1、alpha:消息内容、索引全在内存中

2、beta:内容在磁盘,索引在内存。

3、gamma:内容在磁盘,索引在内存和磁盘都有(只有持久化的消息才会处理此状态)。

4、delta:内容和索引全在磁盘中

内存及磁盘告警:

内存

RabbitMQ内存阀值默认为40%,可以通过修改rabbitmq.conf文件(/etc/rabbitmq/rabbitmq.conf)来配置内存阀值。

# 内存阀值
[{rabbit, [{vm_memory_high_watermark, 0.4}]}]
# 内存阀值绝对值,单位B
[{rabbit, [{vm_memory_high_watermark, {absolute, 104857600}}]}]
# 内存阀值绝对值,自定义单位
[{rabbit, [{vm_memory_high_watermark, {absolute, "1000MB"}}]}]

当然你也可以通过命令

# 对应rabbitmqctl命令(fraction对应配置中的0.4):
rabbitmqctl set_vm_memory_high_watermark {fraction}
# rabbitmqctl命令指定内存阈值绝对值
rabbitmqctl set_vm_memory_high_watermark absolute {memory_limit)

磁盘

# rabbitmq.config配置文件命令
[{rabbit, [{disk_free_limit, "1GB"}]}]
# 设置磁盘阈值的绝对值
rabbitmqctl set_disk_free_limit {disk_limit}
# 设置机器内存大小与磁盘阈值的比值
rabbitmqctl set_disk_free__limit_mem_relative {fraction}

RabbitMQ学习笔记(六、RabbitMQ进阶)的更多相关文章

  1. rabbitMQ学习笔记(六) topic类型消息。

    上一节中使用了消息路由,消费者可以选择性的接收消息. 但是这样还是不够灵活. 比如某个消费者要订阅娱乐新闻消息 . 包括新浪.网易.腾讯的娱乐新闻.那么消费者就需要绑定三次,分别绑定这三个网站的消息类 ...

  2. RabbitMQ学习笔记六:RabbitMQ之消息确认

    使用消息队列,必须要考虑的问题就是生产者消息发送失败和消费者消息处理失败,这两种情况怎么处理. 生产者发送消息,成功,则确认消息发送成功;失败,则返回消息发送失败信息,再做处理. 消费者处理消息,成功 ...

  3. [RabbitMQ学习笔记] - 初识RabbitMQ

    RabbitMQ是一个由erlang开发的AMQP的开源实现. 核心概念 Message 消息,消息是不具名的,它由消息头和消息体组成,消息体是不透明的,而消息头则由 一系列的可选属性组成,这些属性包 ...

  4. MongoDB学习笔记六:进阶指南

    [数据库命令]『命令的工作原理』MongoDB中的命令其实是作为一种特殊类型的查询来实现的,这些查询针对$cmd集合来执行.runCommand仅仅是接受命令文档,执行等价查询,因此,> db. ...

  5. 官网英文版学习——RabbitMQ学习笔记(一)认识RabbitMQ

    鉴于目前中文的RabbitMQ教程很缺,本博主虽然买了一本rabbitMQ的书,遗憾的是该书的代码用的不是java语言,看起来也有些不爽,且网友们不同人学习所写不同,本博主看的有些地方不太理想,为此本 ...

  6. RabbitMQ学习笔记(五) Topic

    更多的问题 Direct Exchange帮助我们解决了分类发布与订阅消息的问题,但是Direct Exchange的问题是,它所使用的routingKey是一个简单字符串,这决定了它只能按照一个条件 ...

  7. RabbitMQ学习笔记1-hello world

    安装过程略过,一搜一大把. rabbitmq管理控制台:http://localhost:15672/   默认账户:guest/guest RabbitMQ默认监听端口:5672 JAVA API地 ...

  8. (转) Rabbitmq学习笔记

    详见原文: http://blog.csdn.net/shatty/article/details/9529463 Rabbitmq学习笔记

  9. 官网英文版学习——RabbitMQ学习笔记(十)RabbitMQ集群

    在第二节我们进行了RabbitMQ的安装,现在我们就RabbitMQ进行集群的搭建进行学习,参考官网地址是:http://www.rabbitmq.com/clustering.html 首先我们来看 ...

  10. RabbitMQ学习笔记五:RabbitMQ之优先级消息队列

    RabbitMQ优先级队列注意点: 1.只有当消费者不足,不能及时进行消费的情况下,优先级队列才会生效 2.RabbitMQ3.5以后才支持优先级队列 代码在博客:RabbitMQ学习笔记三:Java ...

随机推荐

  1. 收藏收藏:工作用了很久的自主开发的Sql Server代码生成器,我开源了(.NET Winform)

    大家好,已经一年没见了,我的技术已经有了惊人的进步.于是乎就来为大家分享技术了,今天呢为大家带来的是很早之前开发的老工具分享给大家. 相信大家都使用过代码生成器,用起来顺手的有多少?根据自己的业务配置 ...

  2. Python的输入输出的应用

    输入输出主要掌握print()和input()两个函数的应用. #print函数用于控制台输出 print('I love Python.','So I want to learn it.','I b ...

  3. leaflet 结合 Echarts4 实现迁徙图(附源码下载)

    前言 leaflet 入门开发系列环境知识点了解: leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 leaflet 插件,leaflet ...

  4. C++中的try throw catch 异常处理

    今天在开发过程中调用一个库函数结果库函数有throw操作,当前代码没有对throw进行捕获操作,导致进程在main 函数中捕获到异常导致进程crash.所以借此记录下c++关于try,throw,ca ...

  5. VUE组件 之 Drawer 抽屉

    注:因为项目中用的是 element-ui 框架,而这个框架并没有抽屉组件,所以自己实现一个. 一.源码地址 https://github.com/imxiaoer/DrawerForVue 二.效果 ...

  6. 误删mysql root账户

    看这个账户有点碍眼就删除了,结果异常了mysql> select user,host from mysql.user;+---------------+-------------+| user ...

  7. SecureCRT 破解安装详细教程

    SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序  跟xshell类似. 一.下载文件软件包和破解文件(64版本),我已经放在百度云,链接:https://pan.baidu.c ...

  8. MySQL 学习笔记 (一)

    1.InnoDB and Online DDL ALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHM=INPLACE, LOCK=NONE; ...

  9. 用PYTHON首选的GUI库WXPYTHON做程序界面

    大家好,我是A8U神经网络,今天又要跟大家分享一下wxWidgets开发神经网络程序界面的一些经验,希望对开发有兴趣的朋友有所帮助.跨平台的GUI工具库以GTK +,Qt和wxWidgets闻名. G ...

  10. 12c Data guard Switchover Best Practices using SQLPLUS (Doc ID 1578787.1)

    12c Data guard Switchover Best Practices using SQLPLUS (Doc ID 1578787.1) APPLIES TO: Oracle Databas ...