Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RabbitMQ HA具有持久的功能 背景_Rabbitmq - Fatal编程技术网

RabbitMQ HA具有持久的功能 背景

RabbitMQ HA具有持久的功能 背景,rabbitmq,Rabbitmq,我有一个RabbitMQ集群,运行了一年多没有任何问题。最后,我发现有时候,机器的CPU会碰到100%的CPU。我正在研究如何提高集群的吞吐量以服务更多的客户 集群体系结构是我们启用了HA(正好是一个副本)和持久消息(对于所有队列)。据我所知,耐用功能是性能方面最昂贵的功能。所以,我想知道我是否需要它 问题: 根据我的经验,集群运行了一年多,没有出现任何问题。所以我假设出现问题的几率很低。即使在这之后,我想创造另一层保护,以防万一 如果我有两台服务器保存相同的数据,但没有将其存储到磁盘中(持久关

我有一个RabbitMQ集群,运行了一年多没有任何问题。最后,我发现有时候,机器的CPU会碰到100%的CPU。我正在研究如何提高集群的吞吐量以服务更多的客户

集群体系结构是我们启用了HA(正好是一个副本)和持久消息(对于所有队列)。据我所知,
耐用
功能是性能方面最昂贵的功能。所以,我想知道我是否需要它

问题: 根据我的经验,集群运行了一年多,没有出现任何问题。所以我假设出现问题的几率很低。即使在这之后,我想创造另一层保护,以防万一

如果我有两台服务器保存相同的数据,但没有将其存储到磁盘中(持久关闭),那么对于99.99%的情况来说是否不够安全?这两台服务器位于不同的区域,因此它们都停机的可能性非常低。想知道是否将其保存到磁盘会有帮助,或者只是一种浪费

关于禁用持久性功能的性能改进,有一条经验法则吗?以百分比表示

谢谢大家!

耐久性对性能的影响 为了可靠地传递,rabbitmq使用发布确认机制。每次发布服务器向rabbitmq服务器发布消息时,服务器都会使用
basic.ack
rpc来响应消息。对于可路由消息,当消息已被所有队列接受时,将发送basic.ack。对于路由到持久队列的持久消息,这意味着持久化到磁盘。对于镜像队列,这意味着所有镜像都已接受该消息。正如您所提到的,IO可能成为性能的瓶颈

它的开销是持久的还是镜像的 这取决于您在性能和HA之间的考虑。想象一下,如果您声明非持久镜像队列,并且主队列和从队列关闭,您的消息将丢失。因此,开销是否取决于消息安全性的重要性

性能瓶颈主要是由耐久性造成的吗? 正如我们所讨论的,如果声明非持久队列,吞吐量可能会增加。但这可能不是性能低下的主要原因。您曾经说过cpu使用率有时是100%,这意味着很少有I/O等待。高负载可能是由于多个连接和高吞吐量。为了确定如何提高吞吐量,您可以使用该工具查找瓶颈

页面可能有用: