ASP.net MVC アプリに NServicebus を追加した後、CPU 使用率が 5% から 50% に上昇したことに気付きました。これは、負荷がかかっていないサーバー上にありました。WCF アプリをホストする別のサーバーでも同じ動作が見られました。さまざまなことを試した結果、バスを送信専用に設定すると、CPU 使用率が 5% に低下することがわかりました。バスが送信専用に設定されていないときに CPU 使用率が非常に高い理由を知っている人はいますか?
2 に答える
私はこれを以前に経験しました。
私に起こったことは、アプリケーション プールをセットアップしたことでした。それはネットワーク サービスとして実行され始めました。(ファイル共有へのアクセスなどのために) アプリケーション プール ID をドメイン レベルのユーザーに設定する前に、ページは既にヒットしていたため、NServiceBus インストーラーは Network Service 資格情報を使用してキューを作成していました。
アプリケーション プール ユーザーを設定すると、突然、キューに対する適切なアクセス許可がありませんでした。
通常、NServiceBus は、受信可能なメッセージがない場合、タイムアウトでメッセージをチェックしますが、この場合、「メッセージはありますか?許可がありません。メッセージはありますか?私は持っていません」という非常にタイトなループに入ります。許可。" そのため、非常に高い CPU が得られます。
キューを削除し、NServiceBus が適切な権限でキューを再作成できるようにすることで、問題を解決しました。
CPU 使用率が高い原因は、キュー内のメッセージを検索する NServiceBus コードにある可能性がありますが、それは少し信じがたいことです。送信専用モードでは、NServiceBus がキュー内のメッセージを検索できなくなります。