2009-11-30 80 views
2

这里的问题。为什么我的网站需要这么长时间才能加载?

我有我的网站托管在一个共享主办的asp.net mvc。我登录并说出并填写我的一份表格,然后提交。提交使用jquery ajax请求完成。

现在突然它会挂起,不会做20秒钟的事情,然后突然它会完成我的要求保存表单。

现在,这是事情。我可以做相同的请求10次,其他9次可能需要200-500毫秒才能完成。那么为什么会有这样的时间差?

似乎如果我做了一个请求,然后做一些其他请求这两个请求将会走得很快,但如果我停下来回来几分钟,第一个请求可能需要一段时间才能完成(似乎范围从5到20秒)。

但实际上它似乎只是在感觉时才会发生。有时候我几乎可以在没有看到的情况下进行整个会话。有时候,我连续得到多个,并且必须刷新页面,然后它会再次快速。

那么是什么原因造成的呢?

  • 难道这是我写的代码,这就是为什么它变慢?
  • 是我的托管网站吗?
  • 这是我在家里的连接吗?

就像我不知道是什么原因导致这个或如何测试,所以我甚至不能开始修复它。

+0

服务器上是否已经有一些稳定的负载,或者只有你自己?如果只有你,这可能是工作流程被回收。 – 2009-11-30 10:47:05

回答

0

如果您在一天中的不同时间测试了这一点,或者您刚刚部署并注意到滞后,我会很好奇。可能是在服务器上运行备份或其他导致行为的管理作业。问题是,在共享主机上,用于识别性能问题原因的选项很少。如果延迟发生的时间,很可能有下列情况之一:

  • 的服务器(主机不会承认)
  • 您与共享硬件太多的共享帐户并没有足够的资源一个非常繁忙的网站(你的主机不会轻易承认这一点,但你可以找到你自己)
  • 其他帐户都十分运行资源密集型应用程序(你的主机会帮你)

你可以这样做为您的IP进行反向DNS查找并查看还有哪些内容正在运行。 您可以在等待响应时ping通服务器,并查看网络延迟是否升高,或者响应速度是否一致。最后,你可以请支持人员看看。

+0

嗯,也许你的权利。我在2小时后回来,做了同样的事情(创建了6个帐户并执行相同数量的操作),我只有一次挂断。我如何做这个反向查找?此外,我正在测试的部分正在验证中。我是否必须取消身份验证才能ping通它,或者在身边吗? – chobo2 2009-11-30 07:14:55

+0

有网站这样做(只是谷歌反向DNS)。或者,ping您的站点以获取IP地址,然后使用您的IP运行nslookup -d xx.xx.xx.xx,并且您将获得所有具有DNS的dns记录的域的列表。 – cdonner 2009-11-30 13:00:41

4

您需要使用分析器(如ANTS Profiler)来确定缓慢的原因。造成性能下降的原因有很多,如果没有关于应用程序运行情况的数据,将无法分辨出来。

+0

任何免费的? – chobo2 2009-11-30 07:05:26

3

首先要开始使用像Fiddler或Firebug这样的网络分析器。如果问题来自网络延迟或者实际上是等待服务器的响应,那么您应该能够非常轻松地进行分析。可能它是服务器。

下一步是在遇到缓慢请求时能够看到CPU和内存正在发生什么,并且如果它正在访问数据库,则需要能够看到那里发生了什么。也许有一个交易被阻止。

理想情况下,您应该查看几个与硬件和.Net本身相关的内置系统性能计数器,例如请求队列和GC统计数据。

+0

如何判断它是否与萤火虫网络滞后?我目前使用萤火虫,但不知道在哪里检查网络滞后。我不知道我是否可以看到CPU和内存,因为它是共享主机。 – chobo2 2009-11-30 07:15:39

+1

Firebug拥有“Net”标签。你必须切换到启用它。然后,它会将请求时间的组成分解为DNS查找,连接,排队,等待响应和接收数据。如果除等待响应之外所有组件都很小,那么您知道这是服务器代码花费的时间。如果“接收数据”是小文件的最大组件,那么您可能会怀疑网络出现问题。 – womp 2009-11-30 18:10:26

+0

好酷,我将不得不等待,直到我看到再次减速并检查。 – chobo2 2009-12-01 06:21:03

0

您是否已将日志记录添加到您的应用程序中,以便您可以识别服务器代码中的滞后时间?

除了Fiddler和Firebug,我还会实现一系列日志记录。这可能是服务器上的特定请求被阻止。

伐木将缩小它在哪里的可能性。

+0

我有我的记录elmah,但我想这是一种不同类型的日志记录? – chobo2 2009-11-30 06:38:39

+0

不知道,但我会放置类似log4net的东西,然后记录所有严重程度为所谓的调试。那么一旦你解决了它,你可以通过配置文件来打开和关闭日志记录。 – griegs 2009-11-30 07:20:22

1

我也注意到共享主机上的应用程序可以退出全局内存并需要在第一次重新编译时重新访问该网站。这个过程(重新编译)显然与你的代码库的大小有关,但是15-20秒对于重新编译中小型站点听起来并不合理。

为了解决这个问题,确保所有的视图都被编译了,而不仅仅是你的核心DLL代码。

+0

如何确保我的视图已编译? – chobo2 2009-11-30 21:24:20

+0

chobo2, 这里有一个关于SO的参考资料。试试这些: http:// stackoverflow。com/questions/959859/compiling-views-when-publishing-asp-net-mvc-project http://stackoverflow.com/questions/383192/compile-views-in-asp-net-mvc jimi – 2009-12-01 10:08:12

相关问题