IIS工作线程问题

时间:2012-02-16 11:53:01

标签: multithreading wcf iis web-config worker-process

我的网站托管在IIS托管上。站点具有需要调用WCF服务然后返回结果的功能。问题是网站正在处理调用WCF服务的另一个网站调用是冻结而不是快速返回内容(这只是静态内容)。我设置了两个带有不同imacros脚本的chrome实例,其中一个调用请求wcf服务的页面,另一个页面只是静态内容。所以在这里我可以看到,当请求wcf服务的第一页冻结时,另一页也冻结,当第一页被释放时,第二页也是冻结。

我是否需要在Web.Config中重新配置某些内容,或者我是否应该做其他事情以便立即获取静态内容。

5 个答案:

答案 0 :(得分:2)

我认为这里有两个独立的问题:

  1. 为什么使用WCF服务的页面会冻结
  2. 为什么静态内容页面会冻结
  3. 在调用WCF服务的页面上,常见问题是WCF客户端未关闭。默认情况下,有10个WCF连接,超时为1分钟。前10次调用很好(比如他们执行i 2秒),然后第11次调用到来,没有免费的wcf连接因此必须等待58秒才能连接到超时并且可用。

    关于你的静态页面冻结的原因。可能是您的客户端只允许一个连接到站点,静态页面的请求不会被发送,直到wcf服务的页面请求完成。

    您应该检查IIS日志,看看IIS报告请求的时间必须如何。

答案 1 :(得分:1)

我想说这是一个线程问题。这篇MSDN知识库文章提供了一些关于如何调整ASP.NET线程行为的建议:

http://support.microsoft.com/kb/821268

来自文章 - ...您可以调整Machine.config文件中的以下参数,以最适合您的情况:

  • maxWorkerThreads
  • minWorkerThreads
  • maxIoThreads
  • minFreeThreads
  • minLocalRequestFreeThreads
  • MAXCONNECTION
  • executionTimeout

要成功解决这些问题,请执行以下操作:

  • 将可以同时执行的ASP.NET请求数限制为每个CPU大约12个。
  • 允许Web服务回调自由使用ThreadPool中的线程。
  • 为maxconnections参数选择适当的值。根据您使用的IP地址和AppDomain的数量进行选择。

等...

答案 2 :(得分:1)

考虑这样的情况:当您向IIS发出请求更改时,删除或创建App_Data文件夹之外的某个文件。这往往是一个日志文件,错误地放在应用程序的 bin 文件夹中。文件系统更改导致IIS重新加载AppDomain,因为它认为应用程序已更改,因此经历了延迟。这可能适用于您的问题,也可能不适用,但这是ASP.NET应用程序中的常见错误。

答案 3 :(得分:1)

好吧,也许没问题......

它可能只是浏览器的同一域同时请求限制 直到浏览器没有完成对第一页(WCF页面)的请求,它才会将请求发送到第二页(静态)。

试试这个:
为每个页面使用不同的浏览器(例如chrome / firefox) 或者在隐身窗口中以chrome显示第二页(Ctrl + Shift + N) 或者尝试从不同的计算机访问每个页面。

答案 4 :(得分:0)

您可以尝试使用AppFabric,看看您的WCF服务有什么问题http://msdn.microsoft.com/en-us/windowsserver/ee695849