我有一个执行复杂操作和数据库调用的ASPX网页。当我通过运行ASP.NET开发服务器(Cassini)查看网页时,大约需要200 it。
然后,在没有任何代码更改和配置更改的情况下,我将网站部署到本地计算机IIS 7并再次查看相同的网页。它需要2.0秒,这是慢的10倍。
我认为IIS应该比卡西尼快(或者至少和卡西尼一样快)。
为了进一步研究,我创建了一个新页面test1.aspx,它只包含一个空的for -循环,在Page_Load中运行了9千万次。在卡西尼,大约需要200毫秒。在IIS中,它需要300 50(慢50%)。
使IIS比Cassini慢的原因是什么?或者,也许还有一个更好的问题,我如何使IIS运行至少与Cassini一样快?
发布于 2012-10-18 12:02:58
快速而简短的回答:
配置web应用程序使用的应用程序池以启用32位应用程序:

详细演练:
我使用了一些性能分析工具 (有些是免费)来比较性能和找出瓶颈。免费的EQATEC剖面仪足够好,我可以比较运行Cassini和IIS生成的两个报告,并识别导致问题的方法。但是,该方法包含了太多的行,而我无法精确地指出导致问题的确切行。
然后红门蚁就派上用场了。通过使用行级细节分析方法,我发现RegEx运行得非常慢。
进一步的搜索将我引向这里的答案:与开发服务器相比,IIS中的RegEx.Match要慢得多(Cassini)。我在IIS 7中使用Windows 7 64位,将“启用32位应用程序”设置为True解决了这个问题。
此外,在以32位或64位的形式运行IIS时,阅读的内容也略有关联:
64位服务器用于诸如Server之类的数据库或其他数据管理服务器(比方说,企业电子邮件服务器,如Exchange)比用于处理服务器(如IIS或它管理的工作进程)要有效得多。 它将需要64位指针的每次查找,这将使一切都有点慢。
https://stackoverflow.com/questions/12954150
复制相似问题