【问题标题】:Debugging hanging website调试挂网站
【发布时间】:2010-05-18 10:05:32
【问题描述】:

我们为客户部分构建和托管的 asp.net 网站存在问题。大约一周前,该网站无法响应请求,没有返回错误。我们没有部署任何代码,但客户端会不时上传未编译的页面。

重新启动运行网站的应用程序池可以解决问题,但在 1-8 小时后同样会再次发生。

奇怪的是,iis 日志显示,虽然网站似乎没有响应,但页面似乎正常提供服务,几乎就像请求卡在队列中一样。

服务器的事件日志也没有显示任何异常。该站点在使用 NLB 进行负载平衡的 2 台服务器上运行。将负载切换到一台服务器然后另一台服务器显示相同的结果,表明问题不是特定于环境的,而是应用程序本身的问题。

我们运行 DebugDiag 也没有明显的结果。我们不知道现在该去哪里追根究底。谁能建议一些我们可以用来消除任何东西或发现问题根源的调试技术?

【问题讨论】:

  • 我真的不知道...好问题!但我可以告诉你,就在前几天我遇到了编译和未编译的 ASP.NET 页面失败的问题,因为 SQL 语句中的表名不合格,导致对 MSSQL 的查询出错。那是你可以寻找的东西。
  • 从那以后有什么反馈吗?我很想知道问题是什么以及您是如何解决的;)

标签: .net debugging iis web


【解决方案1】:

CPU 使用率如何?是否已用尽(如果您设置了限制,应用程序池可能已用尽)?

它是从数据库中读取的吗?它是否死锁或以其他方式卡住,导致页面无法加载?

【讨论】:

  • 抱歉我忘了加cpu使用和内存都比较正常。我们的服务器也托管多个网站。
  • 是的,它从 sql 数据库中读取。如果出现死锁问题,服务器是否不会返回 500 和 sql 异常?但是,我将运行 sql 跟踪以确定是否存在问题。
【解决方案2】:

只是一个“白页”结果 - 所以客户端没有错误,但也没有响应流?

如果是这样,我们的旧版应用程序也得到了相同的结果。从经典的 ASP 到 .NET 1.0、1.1 和最终的 2.0。 我们忘记终止原始构建中留下的一些“静态”变量,它们每隔 x 小时就会变得非常“静态”,导致应用程序变为“白色”。

【讨论】:

  • 是的,没有任何响应流。浏览器只是坐在那里,只是等待响应。嗯,他们添加的一些客户页面是经典的 asp。终止静态变量是什么意思?你的意思是一个持续应用程序生命周期的变量。如果是这样,我们会不会看到内存使用异常?
  • "如果是这样,我们不会看到内存使用异常吗?"我也是这么想的.. 但在我们的应用程序中并非如此,CPU 和内存使用情况非常正常。通过终止 Iment:将静态变量重构为会话变量或会话的公共单例(取决于用途)。
  • 您使用的是 SQL Server 我看到了。您是否在使用后关闭每个连接?
  • 就像我说的,“我们”没有更改任何代码。我们的客户可能有。即便如此,如果没有关闭连接,也会返回一个 sql 异常,并带有我会想到的连接池错误?
  • 我认为是这样,但我知道我们也将(不良做法)SqlConnection 保持为静态(我们遇到的主要问题之一)。那时我们从未见过错误屏幕 - 只是白页......(真是地狱)除此之外,我们在缓慢的时间里从来没有遇到任何问题。
猜你喜欢
  • 1970-01-01
  • 2012-10-16
  • 1970-01-01
  • 2012-11-14
  • 1970-01-01
  • 2017-11-11
  • 2018-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多