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