3

我有一个由公共托管公司托管的 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;
    }
4

3 回答 3

2

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

于 2008-12-02T20:03:18.783 回答
1

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

于 2008-12-02T18:56:07.543 回答
0

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

至于 Windows 的托管建议,很抱歉我没有。

于 2008-12-02T18:39:20.153 回答