我们在生产中的WCF服务中遇到了一些意外行为。这是我们能够模拟的(简化)情况:
如果客户端1对服务执行请求并且客户端2执行请求,我们会看到(即在IIS中的工作进程请求中)这些请求是同时进行的,每次大约需要30秒(因为默认的SQL超时) )。
然而,由于客户端和服务器之间的超时不正确,我们实际上可以在处理初始请求之前执行来自客户端1的第二个请求。那么我们可以:
现在来自客户端1的请求1大约需要1。 30秒,就像之前一样。来自客户端1的请求2花费少于60秒。这是可以预期的事情。 但是对我们来说意外的是,来自客户端2的请求也与客户端1的请求2或多或少地相同。我们预计它需要大约30秒。在我们看来,处理来自客户端2的呼叫仅在处理来自客户端1的第二个请求时开始。
有人可以解释这种行为吗?我们可以做些什么来避免/改善这一点?
注意:我们知道我们必须确保客户端和服务器之间的超时“同步”,但我们的实际架构比上面描述的要复杂得多。我们将进行一些优化,但即便如此,我们也可能遇到这种情况......