Asp.net IIS 6.0通配符映射基准?

Asp.net IIS 6.0通配符映射基准?,asp.net,asp.net-mvc,iis-6,Asp.net,Asp.net Mvc,Iis 6,我很快就爱上了ASP.NET MVC测试版,我决定在部署到IIS 6托管环境时不会牺牲的一件事就是无扩展URL。因此,我正在考虑添加一个通配符映射,但我读到的所有内容都表明使用此方法时可能会影响性能。然而,我找不到任何实际的基准 这个问题的第一部分是,你知道我在哪里可以找到这样的基准,还是这只是一个未经测试的假设 问题的第二部分是关于我在开发服务器上通过100Mbs连接使用jMeter运行的两个负载测试 背景信息 我们的托管服务提供商有一个4Gbs的burstable internet管道,我们

我很快就爱上了ASP.NET MVC测试版,我决定在部署到IIS 6托管环境时不会牺牲的一件事就是无扩展URL。因此,我正在考虑添加一个通配符映射,但我读到的所有内容都表明使用此方法时可能会影响性能。然而,我找不到任何实际的基准

这个问题的第一部分是,你知道我在哪里可以找到这样的基准,还是这只是一个未经测试的假设

问题的第二部分是关于我在开发服务器上通过100Mbs连接使用jMeter运行的两个负载测试

背景信息

我们的托管服务提供商有一个4Gbs的burstable internet管道,我们的VLAN有一个1Gbs的主干网,所以我可以在办公室局域网上生成的任何东西都可以很好地转换为托管环境


测试场景是加载多个图像/css文件,因为当请求现在正在通过ASP.NET ISAPI过滤器(通常不会通过该过滤器)的文件时,会出现假定的性能问题。每个测试包含50个线程(模拟用户),每个线程运行请求脚本1000次迭代。每个测试的结果发布在下面

测试结果

没有通配符映射:

Samples: 50,000 Average response time: 428ms Number of errors: 0 Requests per second: 110.1 Kilobytes per second: 11,543 Samples: 50,000 Average response time: 429ms Number of errors: 0 Requests per second: 109.9 Kilobytes per second: 11,534 样本:50000 平均响应时间:428ms 错误数:0 每秒请求数:110.1 每秒千字节:11543 使用通配符映射:

Samples: 50,000 Average response time: 428ms Number of errors: 0 Requests per second: 110.1 Kilobytes per second: 11,543 Samples: 50,000 Average response time: 429ms Number of errors: 0 Requests per second: 109.9 Kilobytes per second: 11,534 样本:50000 平均响应时间:429ms 错误数:0 每秒请求数:109.9 每秒千字节:11534 这两个测试都是热运行的(一切都在内存中,没有初始负载偏差),从我的角度来看,性能大约是均匀的。在两次测试期间,CPU使用率约为60%,内存状况良好,网络利用率稳定在90-95%左右

这是否足以证明所有内容通过ASP.NET筛选器的通配符映射不会真正影响性能,或者我遗漏了什么


编辑:11个小时,没有一条评论?我希望能有更多。。哈哈

我一直在寻找这样的基准测试。塔克斯

在我的公司,我们在几个网站(标准web表单、.net1.1和2、iis6)上进行了通配符映射,系统管理员对我说,他们没有注意到任何性能问题


但是,似乎您强调的是网络,而不是服务器。那么,可能是因为网络瓶颈,分数如此相似?只是想…

我想还有几件事需要检查:

  • 因为我们使用的是.NETISAPI过滤器,所以我们可能使用线程来运行应用程序以服务于静态资产。我会在检查线程的性能计数器时运行相同的负载测试-
  • 我会在运行Microsoft Performance Analyzer时运行相同的负载测试,并比较报告

    • 克里斯,非常方便的帖子

      许多认为性能存在缺陷的人推断,web应用程序中处理的代码与标准工作流中处理的代码有多大的不同/低劣。基本代码类型可能不同,当然您需要MSIL解释器,但MS已经表明,在许多情况下,.NET运行时的性能实际上会比本机运行时有所提高

      这也是明智的,考虑IIS必须是一个“所有行业的杰克”-允许各种配置和重写<强>甚至在静态文件。其中一些是为了提高性能而设计的(缓存、压缩),实际上,除非您在代码中重新实现它们,否则它们将丢失,但其中许多用于其他目的,可能永远不会被使用。如果您(仅)根据自己的需要进行构建,那么您可以忽略其他部分,并且应该实现某种性能优势,即使ASP.NET存在潜在的缺点

      在我的(非.NET)MVC测试中,我发现与webforms相比,MVC具有相当大的(10倍或更多)性能优势。即使对静态内容有一个小小的冲击,这也不是一个难以下咽的药丸

      在您的测试中,这种差异几乎可以忽略不计,我并不感到惊讶,但我很高兴看到它得到了支持


      注意:您可以在IIS中禁用静态目录中的通配符映射(我将所有静态文件保存在/static/(pics | styles |…)中)。将文件夹切换到一个应用程序,删除通配符映射,然后将其从应用程序切换回原来的位置,-voilá-静态文件由IIS处理,而不会困扰您的ASP.NET。

      这是一篇非常令人印象深刻的文章,非常感谢

      我们还评估了删除一个一直用于过滤不必要流量的软件的安全性和性能问题

      您是否会通过进一步的基准测试来实现这一点

      干杯


      Karl.

      您测试中的瓶颈似乎是网络利用率。如果性能下降是由CPU使用率引起的(我不确定是否如此,但这是合理的),那么您在进行测试时不会注意到这一点


      由于这是一个复杂的系统,有许多变量,这并不意味着没有性能下降。这意味着在您的场景中,性能下降可能可以忽略不计。

      “测试场景是加载多个图像/css文件”。你能在这里提供更多关于“几个”的细节吗?已经有相当长的时间了,但是iirc,我有4-5个aspx页面,引用了2-3个样式表和大约20个图像。我故意在测试页面中没有任何数据库活动,因为我想单独测试IIS以解决瓶颈问题。