私はちょうどSysCache2を実装し、私のソリューションのいくつかのエンティティに対してキャッシュを有効にしました。 すべて正常に動作していますが、1つの質問があります。NHibernate Profiler - キャッシュされたエンティティ
時には、特定のページを参照しているときに、NHibernate Profilerは非常に多くのキャッシュされたエンティティがフェッチされていることを示します。数百のキャッシュされたエンティティは、使用されるかなりの量でなければなりませんが、時には3000-5000までカウントされます。下の画像を参照してください。
この場合、キャッシュから実際に5002個のエンティティがフェッチされていますか、またはNHibernate Profilerに誤った印刷がありますか?
読み込み中、すべてが問題なく表示されます。ページ要求は完了しましたが、プロファイラはますますキャッシュされたエンティティをカウントアップし続けます。
誰かが似たような体験をしたことがありますか?これは本当に起こりますか?
セッションが作成されるたびにプロファイラを初期化するのが問題でした。これで、キャッシュされたエンティティが正しく表示されます。 – Mattias
ちなみにpsousaは、キャッシュを有効にしていない方が良い結果を得ましたか? – Mattias
これはかなり簡単です。私のアプリケーションサーバーは、あまりRAMやCPUがない非常に基本的な仮想マシンでした。データベースサーバは、優れた仕様を持つ非常に有能な物理マシンでした。私のロードテスト中、および情報を取り込んで書き込む何人かのユーザーがいると、キャッシュから何千ものアイテムをロードした画面があるため、CPUはキャッシュを有効にして100%に達しました。上で述べたように、NHProf自体はキャッシュからあまりにも多くのアイテムを読み込まないように警告します。私はDotTraceを使って実行をプロファイリングしました。実際には、第2レベルのキャッシュからフェッチや書き込みに時間を費やしています。 – psousa