RabbitMQ学习笔记(六、RabbitMQ进阶)
目录:
- 性能
- 存储机制
- 内存及磁盘告警
性能:
影响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进阶)的更多相关文章
- rabbitMQ学习笔记(六) topic类型消息。
上一节中使用了消息路由,消费者可以选择性的接收消息. 但是这样还是不够灵活. 比如某个消费者要订阅娱乐新闻消息 . 包括新浪.网易.腾讯的娱乐新闻.那么消费者就需要绑定三次,分别绑定这三个网站的消息类 ...
- RabbitMQ学习笔记六:RabbitMQ之消息确认
使用消息队列,必须要考虑的问题就是生产者消息发送失败和消费者消息处理失败,这两种情况怎么处理. 生产者发送消息,成功,则确认消息发送成功;失败,则返回消息发送失败信息,再做处理. 消费者处理消息,成功 ...
- [RabbitMQ学习笔记] - 初识RabbitMQ
RabbitMQ是一个由erlang开发的AMQP的开源实现. 核心概念 Message 消息,消息是不具名的,它由消息头和消息体组成,消息体是不透明的,而消息头则由 一系列的可选属性组成,这些属性包 ...
- MongoDB学习笔记六:进阶指南
[数据库命令]『命令的工作原理』MongoDB中的命令其实是作为一种特殊类型的查询来实现的,这些查询针对$cmd集合来执行.runCommand仅仅是接受命令文档,执行等价查询,因此,> db. ...
- 官网英文版学习——RabbitMQ学习笔记(一)认识RabbitMQ
鉴于目前中文的RabbitMQ教程很缺,本博主虽然买了一本rabbitMQ的书,遗憾的是该书的代码用的不是java语言,看起来也有些不爽,且网友们不同人学习所写不同,本博主看的有些地方不太理想,为此本 ...
- RabbitMQ学习笔记(五) Topic
更多的问题 Direct Exchange帮助我们解决了分类发布与订阅消息的问题,但是Direct Exchange的问题是,它所使用的routingKey是一个简单字符串,这决定了它只能按照一个条件 ...
- RabbitMQ学习笔记1-hello world
安装过程略过,一搜一大把. rabbitmq管理控制台:http://localhost:15672/ 默认账户:guest/guest RabbitMQ默认监听端口:5672 JAVA API地 ...
- (转) Rabbitmq学习笔记
详见原文: http://blog.csdn.net/shatty/article/details/9529463 Rabbitmq学习笔记
- 官网英文版学习——RabbitMQ学习笔记(十)RabbitMQ集群
在第二节我们进行了RabbitMQ的安装,现在我们就RabbitMQ进行集群的搭建进行学习,参考官网地址是:http://www.rabbitmq.com/clustering.html 首先我们来看 ...
- RabbitMQ学习笔记五:RabbitMQ之优先级消息队列
RabbitMQ优先级队列注意点: 1.只有当消费者不足,不能及时进行消费的情况下,优先级队列才会生效 2.RabbitMQ3.5以后才支持优先级队列 代码在博客:RabbitMQ学习笔记三:Java ...
随机推荐
- 【AGC028D】Chord
Problem Description 给定一个圆,圆上均等地放着 \(2n\) 个点,已有 \(k\) 对点之间连好了边,从中选择剩下 \(n-k\) 对点随意连边. 求所有连边方案中,联通块的个数 ...
- 在Dynamics CRM中使用Bootstrap
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- LeetCode刷题191130 --基础知识篇 二叉搜索树
休息了两天,状态恢复了一下,补充点基础知识. 二叉搜索树 搜索树数据结构支持许多动态集合操作,包括Search,minimum,maximum,predecessor(前驱),successor(后继 ...
- 如何在Oracle 12C中添加多个分区 (Doc ID 1482456.1)
How to Add Multiple Partitions in Oracle 12C (Doc ID 1482456.1) APPLIES TO: Oracle Database - Enterp ...
- web攻击与防御技术-平台搭建与暴力破解
平台搭建是首先安装xampp并把pikachu的压缩文件解压在HTdocs下 然后 点击后显示 安装成功 首先随便输入一些东西 然后用burpsuite抓包 对username和password字段进 ...
- java之方法的重载(overload)
什么是重载? 在任何一个类中,允许存在一个以上的同名的方法,只要它们的参数个数或者参数类型不同即可: 重载的特点? 与返回值无关,只看参数列表.且参数列表必须不同(参数个数或参数类型).调用时,根据方 ...
- 递归找到多级文件夹中所有pdf文件的py程序
因个人需要,写了一个可以递归找到多级文件夹中所有pdf的小程序,发布出来供有需要的人参考或使用. import os import re import shutil from os.path impo ...
- 【Unity游戏开发】接入UWA_GOT的iOS版SDK以后无法正常出包
一.正文 问: RT,最近有看到UWA_GOT工具新增了iOS版本的支持,于是下载了最新的工具包进行了接入测试.是按照文档直接将UWA_GOTv2.0.1_iOS.unitypackage导入进了Un ...
- Java描述设计模式(10):组合模式
本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.文件系统 下图是常见的计算机文件系统的一部分. 文件系统是一个树结构,树上长有节点.树的节点有两种: 树枝节点 即文件夹,有 ...
- Jedis & spring-data-redis
当我们了解了redis的五大数据类型,手动去敲一敲每个数据类型对应的命令,无论是再来看jedis,还是spring-data-redis都是很轻松的,他们提供的API都是基于原生的redis命令,可读 ...