我们将Web服务器从Windows Server 2003升级到Windows Server 2012 R2。有问题的Web应用程序针对ASP.NET 4.0运行。 Web应用程序又与第三方Web API进行通信。
升级后不久,Web API延迟增加,从而导致显着的超时。我怀疑在IIS 8.5上,允许的并发请求数量增加,导致Web API无法处理的吞吐量增加。但是:
当我们回滚升级时,延迟后不久就会出现延迟。不太可能是巧合,所以在其他一切保持不变的情况下,必须有一些内在的Windows 2012 R2或IIS 8.5能够影响Web API。第三方Web API开发人员确认他们的空间没有任何变化,遗憾的是我没有任何其他信息可以收集。
我检查了版本6和8.5的IIS日志:每秒,分钟和小时的平均(和中位数)请求表明在IIS 8.5上处理了更多请求(我使用Log Parser Studio分析日志) 。但是,没有任何迹象表明应该是这种情况。有没有人有任何见解或建议?如果存在控制此设置的设置,那么现在我希望Web应用程序在Windows Server 2003和2012 R2上的行为相同。
答案 0 :(得分:0)
由于每个新请求都是在线程池的新工作线程上处理的,因此我查询了线程池限制,以验证自动配置的设置是否匹配(aspx
文件):
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Threading" %>
<html>
<body>
<div>
<%
int workers;
int io;
ThreadPool.GetMaxThreads(out workers, out io);
%>
The maximum number of worker threads is <%=workers.ToString()%> and
the maximum number of IO threads is <%=io.ToString()%>
</div>
</body>
</html>
结果如下(虚拟机有2个核心):
这意味着较新的设置可以同时处理更多请求。