基本的にMSMQからメッセージを読み取り、.NETSqlClientを介してSQLサーバーと通信することでメッセージを処理する64ビットの.NETコンソールアプリケーションがあります。ほとんどの場合は正常に機能しますが、場合によっては、SqlCommandパラメーター配列の作成などの最も単純な操作でさえ、すべてが異常に遅く実行される状態になります。最悪のシナリオでは、アプリケーションは一度に30分間何も行わず(ログに何も書き込まれず、冗長モードがオンの場合はかなりおしゃべりになります)、遅延の原因を示すことなく、再び書き込みを開始します。これは、当社の製品の使いやすさに深刻な影響を及ぼします。
私は過去数時間、すべてのパフォーマンスカウンターなどを調べてきましたが、すべてが過剰なページ読み取りを示しています。これにより、ディスクI / Oが最大になり、プロセスが常にpagefile.sysなどから大量に読み取られていることがわかります。など。しかし、アプリケーションの合計メモリ使用量が使用可能なRAMをはるかに下回っているため、理由はわかりません。ワーキングセットは60M、合計コミットサイズは300M(高く、ピークワーキングセットと一致します。これがなぜであるかはわかりません)。 )、しかしそれは利用可能なRAMの12ギガと比較してピーナッツであり、他にほとんど使用されていません。
アプリケーションのパフォーマンスの監視などに関するすべてのMSドキュメントを読みましたが、すべてが「アプリケーションにはより多くのメモリが必要」であることを示しています。わかりました...では、どうすればメモリを増やすことができますか?他に何も使用されていません!アプリケーションが何をするかを考えると、とにかくそれほど多くのメモリを必要としないはずであるという別の問題がありますが、それを減らすためにかかる労力は、おそらくハードウェアを増やす価値がありません。
もう1つ注意すべき点は、同じアプリケーションの2番目のインスタンスを起動すると、正常に実行されているように見えることです。したがって、これは明らかにシステム全体の問題ではありません。
私はここにstackoverflowに関するいくつかの同様の投稿を見ましたが、特に役立つ答えはまだありません...以前のポスターよりも幸運を願っています。