RabbitMQ 性能不佳
RabbitMQ poor performance
我们的 RabbitMQ 集群性能不佳。即使闲置。
安装 rabbitmq-top plugin 后,我们看到许多进程的 reductions/sec 非常高。 10 万甚至更多!
问题:
- 这是什么意思?
- 如何控制?
- 什么可能导致如此缓慢且没有任何错误?
备注:
- 我们的集群 运行 在 Kubernetes 1.15.11
- 我们分配了 3 个节点,每个节点有 8 个 CPU 和 8 GB 的限制。将 vm_watermark 设置为 7G。实际使用量约为 1.5 CPU 和 1 GB RAM
- RabbitMQ 3.8.2。二郎 22.1
- 我们没有很多消费者和生产者。缓慢也是在一个相当空闲的环境中
rabbitmqctl status
显示 return 详细信息的速度非常慢(有时需要 2 分钟),但 不显示 任何错误
经过进一步调查,我们发现真正的原因是由两个问题组成的。
- RabbitMQ (Erlang) 运行 默认时间配置(使用 bitnami helm chart) assigns only a single scheduler。这对于一些具有少量并发连接的简单应用程序很有用。具有 1000 个连接的生产级必须使用许多更多调度器。从 1 个增加到 8 个调度器显着提高了吞吐量。
- 我们的监控正在以每秒大量请求(大约 100 个/秒)来打击 RabbitMQ。监控命中
aliveness-test
,它创建一个连接,声明一个队列(未镜像),发布一条消息,然后使用该消息。禁用监控会显着降低负载。 CPU 使用率下降了 80%-90%,reductions/sec 也下降了约 90%.
参考文献
表现:
- https://www.rabbitmq.com/runtime.html#scheduling
- https://www.rabbitmq.com/blog/2020/06/04/how-to-run-benchmarks/
- https://www.rabbitmq.com/blog/2020/08/10/deploying-rabbitmq-to-kubernetes-whats-involved/
- https://www.rabbitmq.com/runtime.html#cpu-reduce-idle-usage
监控:
我们的 RabbitMQ 集群性能不佳。即使闲置。
安装 rabbitmq-top plugin 后,我们看到许多进程的 reductions/sec 非常高。 10 万甚至更多!
问题:
- 这是什么意思?
- 如何控制?
- 什么可能导致如此缓慢且没有任何错误?
备注:
- 我们的集群 运行 在 Kubernetes 1.15.11
- 我们分配了 3 个节点,每个节点有 8 个 CPU 和 8 GB 的限制。将 vm_watermark 设置为 7G。实际使用量约为 1.5 CPU 和 1 GB RAM
- RabbitMQ 3.8.2。二郎 22.1
- 我们没有很多消费者和生产者。缓慢也是在一个相当空闲的环境中
rabbitmqctl status
显示 return 详细信息的速度非常慢(有时需要 2 分钟),但 不显示 任何错误
经过进一步调查,我们发现真正的原因是由两个问题组成的。
- RabbitMQ (Erlang) 运行 默认时间配置(使用 bitnami helm chart) assigns only a single scheduler。这对于一些具有少量并发连接的简单应用程序很有用。具有 1000 个连接的生产级必须使用许多更多调度器。从 1 个增加到 8 个调度器显着提高了吞吐量。
- 我们的监控正在以每秒大量请求(大约 100 个/秒)来打击 RabbitMQ。监控命中
aliveness-test
,它创建一个连接,声明一个队列(未镜像),发布一条消息,然后使用该消息。禁用监控会显着降低负载。 CPU 使用率下降了 80%-90%,reductions/sec 也下降了约 90%.
参考文献
表现:
- https://www.rabbitmq.com/runtime.html#scheduling
- https://www.rabbitmq.com/blog/2020/06/04/how-to-run-benchmarks/
- https://www.rabbitmq.com/blog/2020/08/10/deploying-rabbitmq-to-kubernetes-whats-involved/
- https://www.rabbitmq.com/runtime.html#cpu-reduce-idle-usage
监控: