我有这个奇怪的问题。我在服务器上有 3 个 WCF 服务。管理服务是外部请求的主要入口点。另一个服务是应用程序的逻辑。第三个服务是一个数据库连接服务,这两个服务都在做大部分工作(数据库做)。
当我对管理器的请求运行负载测试并运行性能测试时,我有 90 个不同的线程同时运行,第二个服务大约有 50 个,而数据库连接只有大约 12 个。
我觉得这是应用程序中的主要性能问题。当我对这两个服务进行分析时,我发现它们确实在等待来自数据库服务的响应。
我尝试直接对数据库服务进行测试。在打开通道之后和发送请求之前,我运行了 80 个线程并使用 ManualEventHandler 停止了它们。然后当一切准备就绪时,我设置了处理程序,它在 DB 连接服务中运行了大约 25 个线程。
因此它能够处理超过 12 个线程。
有什么想法吗?
为什么请求会排队?
一些附加信息:
绑定是基本的httpbinding,但我尝试了net pipe ipc,结果相同。我已经将上下文模式和并发设置为每个调用或每个会话多个具有相同的结果。
此外,这些服务是自托管的。这种架构的原因是为了允许多个其他服务或应用程序直接向这些服务发送请求。在这个特定的事件中,我按照描述对其进行测试,在其他事件中,流程可能会有所不同。