当涉及到 WCF 代理时,我一直遵循 try/Close/catch/Abort 的指导。我现在面临一个代码库,它在 MVC 控制器中创建代理并让它们超出范围。我认为我们需要编辑代码库以使用 try/Close/catch/Abort 但存在阻力。
有谁知道我可以捕获的指标(例如 perfmon)来说明问题/好处。或者一个明确的参考,说明问题/好处没有人可以争论?
当涉及到 WCF 代理时,我一直遵循 try/Close/catch/Abort 的指导。我现在面临一个代码库,它在 MVC 控制器中创建代理并让它们超出范围。我认为我们需要编辑代码库以使用 try/Close/catch/Abort 但存在阻力。
有谁知道我可以捕获的指标(例如 perfmon)来说明问题/好处。或者一个明确的参考,说明问题/好处没有人可以争论?
您可以创建一个示例应用程序来模拟该问题。虽然我没试过 你可以试试这个
创建一个简单的服务并将 and 限制maxConcurrentCalls
为maxConcurrentSessions
5。
创建一个客户端应用程序,并在其中调用服务方法而不关闭连接。
启动 6 个或更多客户端
查看从客户端打开新连接时会发生什么。客户可能会等待一段时间,然后您会遇到一些异常。
如果客户端没有正确关闭连接,连接仍将在服务中保持打开状态,那么如果有 1000 个客户端一次连接到服务并保持连接打开,会发生什么情况?该服务有一个限制,它可以一次提供“n”个连接,因此该服务无法处理来自客户端的任何新请求,这就是关闭连接非常重要的原因。
您是否在服务器和客户端的命令提示符下尝试过简单的“netstat -N”?Yoy 可能会看到很多等待/挂起的连接,这可能会无缘无故地耗尽您的服务器资源。