0

我们有一个核心 Windows 服务托管大约 9 个 WCF 服务,并充当另外 3 个 WCF 服务的客户端。我们有一个前端网站,通过 WCF 与这个 windows 服务进行通信。

在某些时候,Windows 服务正在执行一些繁重的操作,导致 100% 的 CPU 使用率,通常在 Windows 服务和 SQL 服务器之间拆分 60-40。

这是网站之间的 WCF 连接/请求超时的地方,这会导致 UI 非常无响应。

我正在寻找一种方法来确保任何与 UI 相关的 WCF 调用无论如何都会被执行并具有最高优先级。

我们的主要问题是我们需要坚持这种部署场景,Windows 服务、网站和 SQL 服务器都运行在一台机器上。即使 CPU 利用率为 100%,我们也需要保持响应式 UI。我不确定从哪里开始寻找解决方案...

4

1 回答 1

2

听起来您应该将服务端点拆分到两台单独的主机上,一台用于大容量或流程密集型操作,另一台用于低延迟操作。大容量端点将离线处理队列,而低延迟端点将同步处理来自 UI 的请求。

当您尝试在同一进程中同时平衡高容量和低延迟的冲突资源需求时,您遇到的这类问题很典型。

如果您不能以这种方式扩展,那么我真的无法建议您对此做些什么,并且必须为没有直接回答您的问题而道歉。

您可以看到的另一件事是异步移动所有内容并使用诸如CQRS 之类的模式来分离您的读取和写入需求。

于 2012-04-07T14:02:52.390 回答