【问题标题】:nHibernate slow performance on a hosted website托管网站上的 nHibernate 性能缓慢
【发布时间】:2010-09-24 23:56:42
【问题描述】:

我有一个由公共托管公司托管的 web 应用程序,该网站尚未上线,我仍在对其进行一些测试。我正在使用 nHibernate 和 Windsor Castle Container 进行依赖注入,并且该站点似乎不时响应非常缓慢。我已经联系了支持人员,但他们说这是我的应用程序而不是他们的服务器。在公共托管公司托管时,是否有人在使用基于 ORM 的网站时遇到过类似的性能问题?

另外,您会推荐哪些托管公司来托管网站?我尝试了 godaddy 但无法使用它们,因为它们不允许在完全信任的情况下运行网站,这显然是 nHibernate 所必需的。


我使用xml配置文件配置了nHibernate,打开会话的方式如下:

using (ISession session = _sessionManager.OpenSession())
{         
ICriteria crit = session.CreateCriteria(typeof(Content));
   return crit.List();
}

同样在Application_Start我有以下代码:

private static WindsorContainer container;
if (container == null)
   {
     container = new WindsorContainer(new XmlInterpreter(filePath));
      Application[Constant.CastleWindsorAppKey] = container;
    }

【问题讨论】:

    标签: nhibernate castle-windsor web-hosting public


    【解决方案1】:

    假设您使用的是共享托管环境,它可能不是您的应用。我已经看到完美的代码在共享主机上停止运行。我所知道的共享托管问题的唯一解决方案是某种托管应用程序主机,获取虚拟专用服务器(托管或非托管)或专用服务器盒。这种类型的服务比共享主机更昂贵。

    关于 Windows 的托管建议,很抱歉我没有任何建议。

    【讨论】:

    • 对,我有点想我可能不得不选择一个专用主​​机或重写应用程序以使用带有存储过程的老式 DataAccess Layer
    【解决方案2】:

    没有进行任何类型的检测,您只是在猜测。您需要在您的数据库调用周围包装一个计时代理。然后记录每次通话需要多长时间。如果这是您花费时间的地方,那么您就拥有了继续进行所需的信息。

    【讨论】:

      【解决方案3】:

      如果不对其进行测量,您将不知道您的应用程序有多慢。我在开发过程中使用timing http module 来快速发现大的性能问题。 当您的一个页面加载缓慢时,您应该使用分析器来找到确切的瓶颈。我正在为我当前的项目使用 NHibernate,并且我没有任何性能问题。我最复杂的查询涉及 10 个不同类的复杂对象图,它们的 NHibernate 映射需要 0.082 秒才能执行。该应用程序的主要瓶颈是将 html aspx 模板渲染到响应中(这需要 0.5 秒)。性能问题通常存在于数据访问中,但除非您对其进行衡量,否则您无法确定。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-23
        • 1970-01-01
        • 1970-01-01
        • 2010-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多