Multithreading IIS工作线程问题
我的网站托管在IIS托管上。站点具有需要调用WCF服务然后返回结果的功能。问题是该网站正在处理对WCF服务的调用,而另一个网站的调用是冻结的,不能快速返回内容(这只是静态内容)。我用不同的imacros脚本设置了两个chrome实例,一个调用请求wcf服务的页面,另一个页面只是静态内容。所以在这里我可以看到,当请求wcf服务的第一个页面冻结时,另一个页面也会冻结,当第一个页面被释放时,第二个页面也会冻结Multithreading IIS工作线程问题,multithreading,wcf,iis,web-config,worker-process,Multithreading,Wcf,Iis,Web Config,Worker Process,我的网站托管在IIS托管上。站点具有需要调用WCF服务然后返回结果的功能。问题是该网站正在处理对WCF服务的调用,而另一个网站的调用是冻结的,不能快速返回内容(这只是静态内容)。我用不同的imacros脚本设置了两个chrome实例,一个调用请求wcf服务的页面,另一个页面只是静态内容。所以在这里我可以看到,当请求wcf服务的第一个页面冻结时,另一个页面也会冻结,当第一个页面被释放时,第二个页面也会冻结 我是否需要重新配置Web.Config中的某些内容,或者我是否应该采取其他措施来立即获取静态
我是否需要重新配置Web.Config中的某些内容,或者我是否应该采取其他措施来立即获取静态内容。我认为这是一个线程问题。这篇MSDN KB文章对如何优化ASP.NET线程行为提出了一些建议: 来自文章-…您可以调整Machine.config文件中的以下参数以最适合您的情况:
- maxWorkerThreads
- minWorkerThreads
- 最大线程
- 自由螺纹
- minLocalRequestFreeThreads
- maxconnection
- 执行超时
- 将每个CPU可同时执行的ASP.NET请求数限制为大约12个
- 允许Web服务回调自由使用线程池中的线程
- 为maxconnections参数选择适当的值。根据使用的IP地址和AppDomain的数量进行选择
等等。您可以尝试使用AppFabric,看看您的WCF服务有什么问题。考虑这样的情况:当您向IIS发出请求时,您的应用程序会在app_数据文件夹外更改、删除或创建一些文件。这通常是一个日志文件,被错误地放在应用程序的bin文件夹中。文件系统更改会导致IIS重新加载AppDomain,因为它认为应用程序已更改,因此会出现延迟。这可能适用于您的问题,也可能不适用于您的问题,但这是ASP.NET应用程序中的常见错误。好吧,也许没有问题 它可能只是浏览器的同一域同时请求限制。
在浏览器没有完成对第一个页面(WCF页面)的请求之前,它不会将请求发送到第二个页面(静态页面) 试试这个:
每个页面使用不同的浏览器(例如chrome/firefox)。
或者在“匿名”窗口中的chrome中打开第二页(Ctrl+Shift+N)。
或者尝试从不同的计算机访问每个页面。我认为这里有两个不同的问题:
您应该检查IIS日志,了解IIS报告请求的时间必须多长。网站运行的是哪个版本的IIS?它是IIS 7.5,共享主机。是否只有两个页面请求(一个到服务页面,一个到静态页面)发生这种情况或者它是在有多个请求挂起的情况下加载的?我在共享windows主机上,似乎只能调整我自己的web.config文件。你的方法符合这个条件吗?我不这么认为。您需要在machine.config中更改这些设置。来自MSDN():processModel部分只能在Machine.config文件中设置如何设置“允许Web服务回调自由使用线程池中的线程”项?请给出建议。如果我理解正确,AppFabric可能只有在WCF服务托管在IIS下时才有用?是的。你说得对。您的WCF服务在哪里托管?如果可能的话,您可以将web服务称为双工服务,而不是等待它立即响应。它是自托管的WCF服务,托管在控制台应用程序中。呼叫双工不像我想的那么合适。然而,您依赖外部方提供数据,这可能会很耗时,但您可能会担心异步编程