mssql db で mvc3 nhibernate orm レイヤーを使用して最初のアプリケーションを開発しています。
これは、nhibernate を使用して作成した最初のアプリケーションであり、最初の応答時間以外はすべて問題ありません。いくつかの調査の後、Web リクエストごとにセッションを実装しました。これは間違いなくアップグレードです。エンティティは最初の呼び出し後にはるかに高速に読み込まれますが、問題は同じままです。
domainname.com と入力して Enter キーを押すと、最初の応答時間が非常に遅くなります。10~15秒 これはコンテンツの実際の読み込み時間ではなく、その後 10 ~ 15 秒かかります。私のサイトの読み込みが始まります。あと数秒です。
セッションファクトリが必要なすべての「もの」を初期化する必要があるのはその時ですが、私はそれが何か他のものでなければならないと思います。これは受け入れがたい。
私のアプリはサイト メモリ割り当て 200 MB の winhost で実行されているので、これは問題ではないと思います。
どんなヒントでも大歓迎です。詳細が必要な場合は、お問い合わせください。
ありがとう
更新: nhibernate プロファイラーでアプリケーション セッションの使用状況を調べたところ、興味深いことがわかりました。私はプロファイラーを使用するのが本当に初心者なので、高価なセッションを見つけたと思います。一般的な統計では、67 個のエンティティが 36.571 秒で読み込まれます。この秒の値は本当に奇妙です。ロードするのに 10 ~最大 15 秒かかるからです。
2 回目の更新: global.asax
public class MvcApplication : System.Web.HttpApplication{
public static ISessionFactory SessionFactory =
MyDomain.Infrastructure.SessionProvider.CreateSessionFactory();
//My session factory is open in Application_Start() like this
SessionFactory.OpenSession();
}
オブジェクトのマッピングに流暢なアプローチを使用しています。したがって、ドメインプロジェクトのセッションプロバイダーは次のようになります
//This should be used from web app, global.asax.cs calls
public static ISessionFactory CreateSessionFactory()
{
string conStringName = "ConnectionString";
var cfg = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008
.ConnectionString(c => c.FromConnectionStringWithKey(conStringName)))
.Mappings(m => m.FluentMappings.Add<Entity1>())
.Mappings(m => m.FluentMappings.Add<Entity2>())
.Mappings(m => m.FluentMappings.Add<Entity3>())
.ExposeConfiguration(p => p.SetProperty("current_session_context_class", "web"))
.BuildConfiguration();
return cfg.BuildSessionFactory();
}
Update 3 この問題の解決策はまだありません
更新 4 と最終 私の問題は、間違いなく sessionFactory にあります。構成オブジェクトをシリアル化する必要があると思います。ここに示した私のコードを流暢にconfで使用して、誰かがそれを行う方法を示すのに十分親切である場合. 私は喜んで彼/彼女の答えを受け入れます。ありがとう。