1

我们在 Win 2003 服务器 .Net 4.0 和 IIS 6.0 上运行一个网站。该网站向其他几个服务器发出许多 Web 服务请求。我们遇到了这些请求的超时问题。

通过对来自服务器的转储使用调试诊断工具,我们已经确认请求似乎正在等待连接输出 - 而不是另一端响应:

XXXXXXXX-app-pool 中的以下线程正在尝试发出 HttpWebRequest,但它们似乎并未在远程服务器上等待响应(例如,不是“在线”)。这些请求中的一个或多个超出了其最大可用连接数。*

HttpRequest URI:http ://certainserver.somwhere.com/certainwebservice.asmx ServicePoint - ConnectionLimit:24 CurrentConnections:24

很公平。那么连接池实际上是如何工作的呢?为什么我们现在遇到这个问题?代码库大部分未更改 - 服务器基础架构已更改 - 更多服务器。

这个连接池是否与 sql 连接将使用的连接池相同?

它何时选择“新”连接?

请求何时在“现有”连接中排队?他们曾经吗?

如果网站中的某个页面必须调用两个不同的 web 服务来显示首页,将使用多少个连接?二?这两个 Web 服务是在同一台服务器上还是在不同的服务器上是否重要?

如果几乎同时有 5 个访客怎么办?它会尝试使用 2 x 5 连接,还是会有一个连接 pr “唯一” web 服务?

我发现很难搜索这个,因为有很多种连接,并且连接池问题的大多数匹配通常是关于 sql 连接 - 而不是 web 服务请求。

网络服务器有两个核心,最大限制为 24 个连接(默认设置为 12 个 pr 核心)。

4

0 回答 0