我们正在使用https://github.com/php-amqplib/php-amqplib来使用来自 rabbitmq 的消息。我们有几个消费者运行愉快,没有任何问题。今天我们发现我们的一个消费者进程在空闲时消耗了大约 7% 的主机 CPU(队列中没有消息),而其余的每个进程消耗了大约 1%。
最重要的是,在打开和关闭此进程时,我们会看到我们的数据库(AWS RDS postgres 实例)的 CPU 利用率发生了很大变化。在运行 3 个消费者进程的情况下,我们的数据库始终处于 > 30% 的 CPU 利用率(即使队列中没有任何内容)。
我们有一个标准的 symfony 配置,我们的消费者使用app/console rabbitmq:consumer -w consumer_name
. 据我们所知,有问题的消费者对此并没有什么特别之处。我们在这里完全没有线索,所以任何帮助将不胜感激。
更多细节:
当我们打开消费者时,我们可以看到同一组查询在数据库上运行了大量时间(在 10 分钟的时间内运行了 200,001 次)。队列中没有未确认的消息。否则,消费者会正确处理消息。该查询是一个 SELECT,它将作为消费者逻辑的一部分正常运行。