我有一个ASP.NET Web窗体应用程序,它在内部对Web服务进行了许多SOAP和REST调用。 SOAP调用使用微软自己的“包装”代码。 REST调用来自一个简单的REST客户端。该客户端使用Using块来处理任何资源。WebRequest和资源 - ASP.NET超时
该应用程序运行良好几个小时,但然后挂断。该网站将不再能够提供asp.net页面。我通过在上面放置了一个hello.htm文件来测试这个站点......它服务的很好。所以这绝对是ASP.NET引擎空间中的一个问题。
感觉就像它已经用完了池中的webrequests。我可以走了。我可以尝试什么?我应该看什么?需要数小时才能完成问题重现。 在IIS上重新启动站点可以解决问题,但是cource不是我们可以接受的修复。
启动错误和堆栈跟踪:
'/'应用程序中的服务器错误。
该操作已超时 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关该错误的更多信息以及源代码的位置。
异常详细信息:System.Net.WebException:操作已超时
源错误:在当前web请求的执行过程中生成 未处理的异常。关于异常的来源和位置的信息可以使用下面的异常堆栈跟踪来标识。
堆栈跟踪: [引发WebException:操作已超时] System.Net.HttpWebRequest.GetRequestStream()5322142 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(字符串方法名,对象[]参数) +103
UPDATE等详细信息
的自产自销的REST调用和SOAP都做同步。
他们并不长寿,他们需要约1秒。
Web服务托管在同一个数据中心内的Tomcat服务器(不同机器)上。
.NET应用程序在Tomcat服务器上调用SOAP和REST服务。
该应用程序以某种方式在大约停留一小时之后自行修复。思考? 如何监视.NET Threadpool? DefaultConnectionLimit会影响自发出站连接吗?
解决方案 看到答案补充意见和...... 1)关闭所有流和反应/从自产自销的REST代码请求(哎呀)
2)System.Net.ServicePointManager.DefaultConnectionLimit = 96;
//默认值= 12次内核数量
System.Net.ServicePointManager。MaxServicePointIdleTime = 3000;
//默认= 100000(100秒),
通过固定的任何渗漏代码和超时的空闲时间更快的一切似乎
您对外部SOAP服务有任何使用限制吗?追踪它所调用的服务,看看您是否可以在练习中多次击中它。所有页面都会调用同一个服务吗?所有的SOAP调用都会失败还是只有这个? – 2010-07-26 19:52:30
我可以使用WinForms客户端和另一个ASP.NET Web应用程序(同一个IIS)从同一个盒子中找到它。所有从此IIS站点调用REST或SOAP超时。应用程序日志将其列为WebException超时 – BuddyJoe 2010-07-26 20:02:09
如何检查此应用程序占用了多少内存?我还不熟悉导航IIS 7或win2008 – BuddyJoe 2010-07-26 20:05:02