我有一个由公共托管公司托管的webapp,该网站尚未生效,我仍在使用它进行一些测试。我正在使用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;
}
答案 0 :(得分:2)
当您不测量应用程序时,您不知道应用程序的速度有多慢。我在开发过程中使用timing http module来快速发现性能问题。 当您的某个页面加载速度很慢时,您应该使用分析器找到确切的瓶颈。我正在将NHibernate用于我当前的项目,并且我没有任何性能问题。我最复杂的查询涉及10个不同类的复杂对象图,其NHibernate映射需要0.082秒才能执行。该应用程序中的主要瓶颈是将html aspx模板呈现给响应(需要0.5秒)。性能问题通常在数据访问中,但除非您测量它,否则您无法确定。
答案 1 :(得分:1)
没有做任何仪器,你只是在猜测。您需要围绕数据库调用包装一个计时代理。然后记录每次通话需要多长时间。如果这是您花费时间的地方,那么您将获得继续所需的信息。
答案 2 :(得分:0)
假设您使用的是共享托管环境,则可能不是您的应用。我已经看到完美的代码在共享主机上停止运行。我知道共享托管问题的唯一解决方案是某种托管应用程序主机,获取虚拟专用服务器(托管与否)或专用服务器框。这种类型的服务比共享主机更昂贵。
至于Windows的托管推荐,对不起,我没有。