RabbitMQ性能优化
修改rabbitmq.config文件
rabbitmq.config文件时rabbitmq的配置文件,他遵守Erlang配置文件定义。 rabbitmq.config文件位置:
- Unix $RABBITMQ_HOME/etc/rabbitmq
- Windows %APPDATA%\RabbitMQ\
例子如下:
[
{mnesia, [{dump_log_write_threshold, 1000}]},
{rabbit, [{tcp_listeners, [5673]}]}
].
Memory配置和设置
RabbitMQ在使用当前机器的40%以上内存时候,会发出内存警告,并组织RabbitMQ所有连接(producer连接)。直到RabbitMQ将当前数据刷入到硬盘或者消息被客户端消费。
当Erlang的垃圾回收机制运行起来(这是一个非常耗费资源的工作),会消费两倍内存。(默认是80%的内存)。因此需要操作系统支持OS swap和page file.
注意:在32为架构下,每个进程被限制为2GB。通常64架构系统限制每个进程为256TB,64位windows限制为8TB。就算在64位操作系统下,32位的进程只能用2GB内存。 因此强烈推荐使用64bit Erlang vm和64bit os。
当RabbitMQ不能识别你的系统的时候,你必须对vm_memory_high_watermark进行修改。 当rabbitmq不能识别系统的时候,会设置内存为1024MB。所以rabbitmq实际使用的内存仅仅410MB。 当系统为8GB的时候,我们可以这是vm_memory_high_watermark=3,那么我们实际可以使用的内存为3GB。
配置Memory Threshold文件
默认配置RabbitMQ的vm_memory_high_watermark=0.4
[{rabbit, [{vm_memory_high_watermark, 0.4}]}].
举例说明:
当机器内存为16GB,那么40%,为6.4GB。主要当32系统时候,实际可以使用的内存为2GB,那么实际可以使用的内存为820MB。
当我配置vm_memory_high_watermark=0 我们可以阻止所有消息发送。
注意:这个百分比,最好不要修改。应为Erlang VM回收的时候会占据系统内存的80%。已经达到系统临界区。不要设置超过50%的百分比。
配置Page Threshold文件
当内存中的数据达到一定数量后,他需要被page out出来。 默认配置 vm_memory_high_watermark_paging_ratio=0.5。也就是vm_memory_high_watermark0.5。假设总内存8GB,0.4的使用内存是3.2。那么当内存叨叨3.20.5=1.6GB时候,系统将会大量置换页面。
因此我们可以将页面置换的百分比调高。设置为0.75
[{rabbit, [{vm_memory_high_watermark_paging_ratio, 0.75},
{vm_memory_high_watermark, 0.4}]}].
注意:我们可以将vm_memory_high_watermark_paging_ratio设置超过1.0,那么不会发生内存换页的情况,也就是说,当内存超过总内存的40%之后,将会阻止所有producer产生消息。
配置命令
rabbitmqctl set_vm_memory_high_watermark 0.4
这是内存使用占总内存数的百分比
rabbitmqctl set_vm_memory_high_watermark_paging_ratio 0.75
设置rabbitmq使用内存达到rabbitmq可用内存百分比,就出发页面交换功能。
rabbitmqctl status
获得系统配置。
Disk配置和设置
RabbitMQ会在硬盘空间不够的时候,阻止Producer发送消息。这样可以保证RabbitMQ可以再任何时候,将内存中的数据置换到磁盘中来。通常会将硬盘剩余数据大小设置为机器的总内存大小。
全局流控制会被触发,当可用总硬盘容量已经低于配置信息。broker数据库将会最少10秒检查一下警告是否发出或者清除。
在RabbitMQ启动的后,会打印disk limit限制,但是不能识别的平台就不能显示信息。
注意:当RabbitMQ是集群情况下,当其中有一台机器硬盘不足的时候,所有节点的producer链接都会被阻止。
RabbitMQ会定期价检查总磁盘可用空间的大小。通常时间为10秒每次,当限制快被达到时候,RabbitMQ检查的时候会达到10次/s.
配置Disk Free Space Limit
我们可以直接设置硬盘的最小限制。也可以设置相对内存大小的设置。
先设置磁盘1GB限制
[{rabbit, [{disk_free_limit, 1000000000}]}].
在这时相对于机器总内存
[{rabbit, [{disk_free_limit, {mem_relative, 1.0}}]}].
Erlang的Hipe优化
可以设置hipe_compiles设置。可以看到有20-50%的性能优化。而你只需要付出1分钟左右的延迟启动。 HiPE需要你检查是否编译进入你的Erlang安装环境。Ubuntu,需要安装erlang-base-hipe.默认有些平台不支持。如果Erlang VM segfaults,请关闭这个选项。
[{rabbit, [{hipe_compile, true}]}].
参考:http://www.rabbitmq.com/configure.html#configuration-file
RabbitMQ性能优化的更多相关文章
- rabbitmq性能优化之Consumer utilisation
如下所示,每个rabbitmq队列除了发布和消费吞吐量外,还有一个评价MQ队列效率的更加重要的指标Consumer utilisation ,如下: 在最佳利用率情况下,这个值能够达到100%,并且生 ...
- Yii2性能优化
https://www.yiiframework.com/doc/guide/2.0/zh-cn/tutorial-performance-tuning 性能优化 有许多因素影响你的 Web 应用程序 ...
- 消息队列的一些场景及源码分析,RocketMQ使用相关问题及性能优化
前文目录链接参考: 消息队列的一些场景及源码分析,RocketMQ使用相关问题及性能优化 https://www.cnblogs.com/yizhiamumu/p/16694126.html 消息队列 ...
- 01.SQLServer性能优化之----强大的文件组----分盘存储
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...
- 03.SQLServer性能优化之---存储优化系列
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概 述:http://www.cnblogs.com/dunitian/p/60413 ...
- Web性能优化:What? Why? How?
为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...
- Web性能优化:图片优化
程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到 ...
- C#中那些[举手之劳]的性能优化
隔了很久没写东西了,主要是最近比较忙,更主要的是最近比较懒...... 其实这篇很早就想写了 工作和生活中经常可以看到一些程序猿,写代码的时候只关注代码的逻辑性,而不考虑运行效率 其实这对大多数程序猿 ...
- JavaScript性能优化
如今主流浏览器都在比拼JavaScript引擎的执行速度,但最终都会达到一个理论极限,即无限接近编译后程序执行速度. 这种情况下决定程序速度的另一个重要因素就是代码本身. 在这里我们会分门别类的介绍J ...
随机推荐
- 如何解决:对应的服务器 tls 为 tls 1.0,小程序要求的TLS版本必须大于等于1.2问题
微信小程序 TLS 版本必须大于等于1.2问题解决 此问题最近在微信小程序开发中,比较常见. 在解决这个问题之前,我们需要了解一下,当前的系统环境是否支持TLS1.2以上,可以参考一下表格: 请先确认 ...
- Android Studio原生库创建示例
[时间:2017-07] [状态:Open] [关键词:Android,Android Studio,gradle,native,c,c++,cmake,原生开发] 0 引言 最近在工作中遇到了升级A ...
- 【iCore4 双核心板_ARM】例程九:ADC实验——电源监控
实验原理: STM32内部集成三个12位ADC,iCore1S的所有电源经过电阻分压或者直接 接入STM32的ADC的输出通道内,输入电流经过高端电流检测芯片ZXCT1009F 输入到ADC的输入通道 ...
- 【emWin】例程二十五:窗口对象——Iconview
简介: 图标视图小工具可用于基于图标的菜单,手持式设备(如移动电话或便携式管理器)常常需要使 用这种菜单.它显示一系列的图标,每个图标都可标注可选文本.图标视图小工具支持透明度及alpha 混合处理. ...
- [ModemManger]ModemManger的取消
http://www.linux-databook.info/?page_id=3748 systemctl disable ModemManager.service 失能ModemManger从而取 ...
- Halcon之 Variation Model(转)
Variation Model的主要原理是将待检测的图像与一张标准图像作比较,找出待检测图像与标准图像(ideal image)的明显差异(也就是不良).标准图像可以采用几张OK品的图像训练(trai ...
- Java知多少(3) 就业方向
Java的就业前景如何,看培训班就知道了,以Java培训为主的达内,已经上市. 根据IDC的统计,在所有软件开发类人才的需求中,对JAVA工程师的需求曾达到全部需求量的50%以上.而且,JAVA工程师 ...
- Java知多少(67)面向字符的输入流
字符流是针对字符数据的特点进行过优化的,因而提供一些面向字符的有用特性,字符流的源或目标通常是文本文件. Reader和Writer是java.io包中所有字符流的父类.由于它们都是抽象类,所以应使用 ...
- linux 网络配置 (配置/etc/sysconfig/network-scripts/ifcfg-ethx)
背景 需要往服务器上安装软件:并且像maven代理的话必须连接公网.首先配置了网关,发现可以通过ip访问公网了,在配置了DNS可以通过域名访问公网了 实例 配置linux 可以上网的操作 vi /et ...
- kafka消费数据策略
单线程消费 以之前生产者中的代码为例,事先准备好了一个 Topic:data-push,3个分区. 先往里边发送 100 条消息,没有自定义路由策略,所以消息会均匀的发往三个分区. 先来谈谈最简单的单 ...