RabbitMQ 性能不佳

Eld*_*sis 3 erlang rabbitmq rabbitmqctl

我们的RabbitMQ集群面临性能不佳的问题。即使闲着的时候。

一旦安装了rabbitmq-top插件,我们就会看到许多进程的每秒减少量非常高。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返回详细信息的速度非常慢(有时 2 分钟),但不显示任何错误

Eld*_*sis 12

经过进一步调查,我们发现实际原因有两个问题。

  1. 默认情况下,RabbitMQ (Erlang) 运行时配置(使用bitnami helm 图表)仅分配一个调度程序。这对于一些具有一些并发连接的简单应用程序很有用。具有数千个连接的生产级必须使用更多的调度程序。将调度程序从 1 个增加到 8 个,吞吐量显着提高。
  2. 我们的监控每秒发出大量请求(大约 100 个/秒),对 RabbitMQ 造成影响。监控命中aliveness-test,它创建一个连接,声明一个队列(未镜像),发布一条消息,然后使用该消息。禁用监控会显着减少负载。CPU使用率下降了 80%-90% ,每秒的减少量也下降了约 90%

参考

表现:

监控: