3

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

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

4

5 回答 5

2

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

  1. 为什么使用 WCF 服务的页面会死机
  2. 为什么静态内容页面冻结

在调用 WCF 服务的页面上,一个常见的问题是 WCF 客户端没有关闭。默认情况下,有 10 个 WCF 连接,超时时间为 1 分钟。前 10 个调用正常(假设他们执行 i 2 秒),然后是第 11 个调用,没有可用的 wcf 连接,因此它必须等待 58 秒以使连接超时并变为可用。

关于为什么您的静态页面冻结。可能是您的客户端只允许与站点的一个连接,直到对具有 wcf 服务的页面的请求完成后才会发送对静态页面的请求。

您应该检查 IIS 日志以了解 IIS 报告请求所占用的时间。

于 2012-02-25T15:22:52.503 回答
1

我会说这是一个线程问题。这篇 MSDN 知识库文章对如何调整 ASP.NET 线程行为有一些建议:

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

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

  • maxWorkerThreads
  • minWorkerThreads
  • 最大线程数
  • minFreeThreads
  • minLocalRequestFreeThreads
  • 最大连接
  • 执行超时

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

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

ETC...

于 2012-02-16T15:28:25.720 回答
1

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

于 2012-02-25T02:21:52.107 回答
1

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

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

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

于 2012-02-25T14:30:10.153 回答
0

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

于 2012-02-21T12:35:13.397 回答