https://github.com/php-amqplib/php-amqplibを使用して、rabbitmq からのメッセージを消費しています。問題なく快適に動作しているコンシューマーが何人かいます。今日、コンシューマー プロセスの 1 つがアイドル状態 (キューにメッセージがない) のときにホストの約 7% の CPU を消費しているのに対し、残りのプロセスはそれぞれ約 1% を消費していることを発見しました。
さらに、このプロセスのオンとオフを切り替えると、データベース (AWS RDS postgres インスタンス) の CPU 使用率に大きな変化が見られます。3 つのコンシューマー プロセスが実行されているため、DB は常に (キューに何もない場合でも) CPU 使用率が 30% を超えています。
標準の symfony 構成があり、コンシューマーは を使用して実行されますapp/console rabbitmq:consumer -w consumer_name
。問題の消費者は、私たちが知る限り、それについて特別なことは何もありません. ここでは手がかりがまったくないので、どんな助けも大歓迎です。
詳細:
コンシューマーをオンにすると、同じ一連のクエリがデータベースで大量に実行されていることがわかります (10 分間で 200,001 回)。キューに確認応答されていないメッセージはありません。それ以外の場合、コンシューマはメッセージを正しく処理します。クエリは、コンシューマのロジックの一部として通常実行される SELECT です。