Asp.net IIS性能问题从7变为8.5

Asp.net IIS性能问题从7变为8.5,asp.net,.net,asp.net-mvc,iis,iis-8.5,Asp.net,.net,Asp.net Mvc,Iis,Iis 8.5,我们正在将大约100个网站从基于IIS 7的解决方案迁移到IIS 8.5解决方案。两者都是负载平衡的,并且基于大约2个运行IIS的共享虚拟机 所有站点在旧解决方案上运行良好,页面加载时间从0.2秒到2秒不等。我们升级到了一个假定的更快的解决方案,这样我们就有了更多的空间来扩展和添加更多的站点,但是现在新的解决方案的负载增加了,我们遇到了巨大的性能问题。我们只在将大约40个站点重新发布到新服务器时才开始出现问题(我们没有重新发布其余站点) 在站点IIS重置或更改应用程序池设置后,所有站点都会快速运

我们正在将大约100个网站从基于IIS 7的解决方案迁移到IIS 8.5解决方案。两者都是负载平衡的,并且基于大约2个运行IIS的共享虚拟机

所有站点在旧解决方案上运行良好,页面加载时间从0.2秒到2秒不等。我们升级到了一个假定的更快的解决方案,这样我们就有了更多的空间来扩展和添加更多的站点,但是现在新的解决方案的负载增加了,我们遇到了巨大的性能问题。我们只在将大约40个站点重新发布到新服务器时才开始出现问题(我们没有重新发布其余站点)

在站点IIS重置或更改应用程序池设置后,所有站点都会快速运行10-20分钟,但随后会遇到障碍,请求会间歇性地花费站点上任何页面10-20倍的时间(但仍然返回时没有错误)。我们混合了.NET3.5WebForms和MVC.NET4.5站点。所有站点都受到影响,但它似乎更频繁地影响MVC站点

我认为这与负载有关,但是CPU几乎没有显示任何东西(几乎没有超过30%),ram大约有80%,3GB可用空间,即使服务器上没有其他运行,但在初始阶段后仍然很慢。这就像是应用程序池阻塞或内存不足之类的,但我们在任何地方都看不到任何实际的阻塞,这一切似乎都是随机的

我们尝试过的东西在20分钟重置期后没有任何影响:

  • 旁路负载平衡器
  • 检查新web服务器之间的差异(两者都有相同的问题,但可能在不同的时间出现)
  • 选中Perfmon,活动线程数徘徊在0和5之间,有时峰值为10,请求/秒峰值为20
  • 根据将MaxPoolThreads增加到20,将MaxConcurrentRequestsPerCPU增加到5000(尽管很难说这是否有效)
  • 事件查看器不显示意外的应用程序池回收
  • 将工作进程更改为4(我们有一个会话状态服务器)
  • 即使“%windir%\system32\inetsrv\appcmd list request”未显示任何阻止项,并且appcmd可以在.css和.jpg文件以及任何网页上显示阻止,也会发生此情况(一个小jpg可以显示最多60秒的响应时间)
  • 关闭了C驱动器和共享IIS文件的文件索引
  • 将会话的会话状态更改回InProc
  • 应用程序上的FailedReqLogFiles只显示了所用的时间(例如)2969ms,但对于FormsAuthentication上未解决的虚拟模块,故障发生时唯一有效的时间是719ms
其他信息 -应用程序池没有内存限制和请求限制,每天凌晨3点循环使用 -一个网站运行良好,我们添加了另一个新网站/应用程序池,前一个网站慢了20倍,新网站也慢了。 -网站或应用程序池的数量是否有限制?我们目前在网站上的ID是109,但是有些已经被删除了,所以那里大约有90个网站,其中大约有40个正在运行


任何关于做什么或去哪里看的想法都将不胜感激!我们是程序员,但我们正在努力解决这个问题,因为主持人说这不是他们的问题

你没有说“哪里”请求会慢10-20倍?是请求到达服务器后处理速度变慢了,还是启动请求的时间变长了,等等??它不可能以某种均匀分布的百分比在任何地方都变慢。从“where”开始将导致“what”。现在,整个管道似乎都受到怀疑,这导致检查一切都是浪费时间。需要一些测量。这些是什么样的站点?重型CMS类站点每次请求都会碰到数据库,大量异步??如果是这样,DB服务器是否与以前相同,或者是否也发生了变化?Async对于释放web服务器非常有用,但它同样可以轻松地将瓶颈从web服务器转移到DB服务器。人们有时会忘记,当“将MaxPoolThreads增加到20,将MaxConcurrentRequestsPerCPU增加到5000”时,appcmd表明进程运行缓慢,因此请求很好地到达服务器,但在处理过程中会在某个地方阻塞。这些站点是重CMS站点,最多可以访问DB 30次(虽然有缓存),但DB没有改变,也没有显示任何负载迹象。我现在正试图使用windbg来查找实际的死锁,显然没有死锁:-(另一个死胡同您找到问题了吗?对于几个代码相同的站点(仅不同的域/数据库),从IIS 7移动到IIS8.5时,我们遇到了相同的问题).只有其中一个在执行过程中被挂起。看起来和你遇到的问题一样。