• 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}
  • 相关阅读:
    2010,只有感恩。
    用 pythonmessage 为程序库和日志模块解耦
    PHP 范例
    Install Perl CPAN modules
    关于人生的思考
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    PHP error: Cannot modify header information headers already sent
    Iceweasel安装Java plugin
    ARP协议以及集线器,交换机,路由器的组合
    Java 字符串操作
  • 原文地址:https://www.cnblogs.com/bzfsdr/p/11901376.html
Copyright © 2020-2023  润新知