アプリケーションにrabbitmqを実装し、Windows Server 2008サーバーで実行しています。問題は、理想的な場合(キューを処理していない場合)でも、erl.exeがCPU使用率が40〜45%に達するなどの高いCPU使用率を使用することです。少なくとも4〜15%のCPU使用率が必要です。
CPU使用率が高い理由は何でしょうか?私がしなければならない設定や他のことはありますか?.
キューを処理していないときでも4〜15%であると言いますが、アプリケーションは実行されていますか?以前に行ったことがない場合は、アプリケーションがRabbitを使用していないときにerlを監視してみてください。
頭に浮かぶことの1つは、ループでQueingBasicConsumer
を使用している可能性があり、それがCPU使用率に寄与している可能性があるということです。 QueingBasicConsumer
を使用していて、それがヒットの原因である場合は、それをEventingBasicConsumer
に置き換えて(ビジーウェイトを行わないように)、改善があるかどうかを確認してください。
また、アプリケーションはRabbitをどのように使用していますか? documentation によると、すべてのIConnectionはバックグラウンドスレッドによってバックアップされており、アプリケーションで多数の接続を作成している場合は、速度が低下するもう1つの理由である可能性があります。