IIS访问时间不一致的诡异问题

游北亮
博客专家认证
2012-07-16 03:56:35
为了能监控网站执行情况,我在站点的Global.asax里加了如下代码:
void Application_EndRequest(object sender, EventArgs e)
{
double m = (DateTime.Now - HttpContext.Current.Timestamp).TotalMilliseconds;
if (url.IndexOf("ismonitor=", StringComparison.Ordinal) >= 0)
Response.Write(m + "毫秒");// 当次请求的总耗时长


然后,另外有一个Console程序24小时不间断的去访问站点某个页面,以达到异常监控的目的,程序大致如下:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
Stopwatch sw = new Stopwatch();
sw.Start();
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
sw.Stop();
string msg;
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
msg = reader.ReadToEnd();
reader.Close();
response.Close();
}
if (sw.ElapsedMilliseconds > 2000)
{
// 访问超过2秒时,输出日志
msg += ";监控耗时" + sw.ElapsedMilliseconds + "毫秒";
}


发现记录下来的时间,大多数如下:
0毫秒;监控耗时2003毫秒
10毫秒;监控耗时2115毫秒

为避免dns解析造成的影响,在监控机上增加Hosts静态域名配置,
监控记录会少很多,但是依旧会有如上的访问记录,
请教时间相关如此大的原因可能性?
注:监控机和web服务器都在内网,网络问题基本上可能性不大

会不会是IIS队列堵塞呢?我的站点应用程序池设置队列长度为65535
...全文
170 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
游北亮 2013-05-03
  • 打赏
  • 举报
回复
问题原因最终找到了, 超时的原因是站点里有大量的大对象和静态变量, 造成gc频繁进行二代扫描 GC扫描时,把进程挂起了,所以程序自己未发现超时,监控程序访问却会超时
游北亮 2012-07-16
  • 打赏
  • 举报
回复
为了避免要去配置Host,我也做过Proxy的配置
request.Proxy = new WebProxy("站点ip", 80);
效果跟设置Host一样,所以应该不是你说的这个问题

另外我的监控程序和站点都是3.5的

[Quote=引用 1 楼 的回复:]
request 要设置
request.Proxy = null;

.net4.0程序默认会找代理,需要显式设置为null

你可以试试
[/Quote]
孟子E章 2012-07-16
  • 打赏
  • 举报
回复
request 要设置
request.Proxy = null;

.net4.0程序默认会找代理,需要显式设置为null

你可以试试

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧