NserviceBusを使用する2つのWindowsサービスがあります。1つはキューにメッセージを書き込み、もう1つはキューから読み取り、何らかの処理を行います。すべてのキューはトランザクションであり、NserviceBusエンドポイントは次のように構成されています。
.IsTransactional(true)
.IsolationLevel(IsolationLevel.ReadCommitted)
.MsmqTransport()
.RunTimeoutManager()
.UseInMemoryTimeoutPersister()
.MsmqSubscriptionStorage()
.DisableRavenInstall()
.JsonSerializer()
問題は、大量のメッセージ(170,000以上)がキューに入れられ、MSMQサービス(mqsvc.exe)がかなりのメモリ(1.5〜2.0 GB)を消費し、そのメモリが少なくとも5〜6の間解放されない場合です。時間。平均メッセージサイズは約5〜10KBです。また、キューに入れるメッセージが多いほど、使用するメモリも増えるようです。NServiceBusベースのWindowsサービスのメモリ消費量は完全に許容範囲内(50〜100 MB)であり、処理するメッセージの数に関係なく増加しません。
MSMQがこれだけのメモリを使用し、リリースにかなりの時間がかかる理由についてのアイデアはありますか?ヒープに感謝します。