2008-12-02 58 views
2

我有一个webapp与一个公共托管公司共同托管,该网站还没有生效,我仍然在做一些测试。我使用nHibernate和Windsor Castle Container进行依赖注入,并且该站点似乎不时响应非常慢。我已经联系了支持,但他们说这是我的应用程序而不是他们的服务器。在公共托管公司托管时,是否有人与基于ORM的站点有类似的性能问题?nHibernate在托管网站上的性能下降

另外,你会主办什么托管公司托管网站?我尝试了godaddy,但不能使用它们,因为它们不允许在完全信任的情况下运行网站,这显然是nHibernate所必需的。


我配置NHibernate的使用XML配置文件,以下列方式打开会话:

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; 
    } 

回答

1

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

+0

很酷,我会试试这个模块 – Alex 2008-12-02 20:32:43

0

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

至于托管窗口的建议,我很抱歉,我没有任何。

+0

对,我觉得我可能不得不为专用主机弹出或重写应用程序以使用存储过程中的旧式DataAccess层 – Alex 2008-12-02 18:52:58

0

没有做任何形式的仪器,你只是猜测。你需要围绕你的数据库调用包装一个时间代理。然后记录每个通话需要多长时间。如果这是您花费时间的地方,那么您将获得必要的信息。