【发布时间】:2011-11-04 01:37:21
【问题描述】:
我有一个非常繁忙的自托管 WCF 服务器,它需要 2000 多个客户端频繁更新其状态。我发现服务器的 CPU 利用率一直保持在 70% 左右,客户端有 50% 的机会实际连接到服务器。它们将在 60 秒后超时。这是有问题的,因为如果服务器没有收到客户端的回复,它将假定客户端处于离线状态。
我已经实现了限制,因此我可以调整并发连接/会话/等,但如果我没记错的话,增加它只会导致更高的 CPU 利用率和更严重的连接问题。对吧?
将超时时间增加到 60 秒以上会有帮助吗?我不确定它是如何工作的,但是在服务器可以处理请求之前,客户端会坐在某种队列中吗?还是最好将超时设置为较小的值,让客户端在无法连接时更频繁地签入(这似乎只会使问题在某种意义上变得更糟)?
【问题讨论】:
-
为什么服务端对客户端一无所知?
-
最大的问题是您需要可靠的消息传递吗?即需要确保您的消息始终能够通过?
-
Terry - 是的,服务器会跟踪已知在线的计算机列表。如果客户端未报告,则服务器将其标记为脱机,并通知管理员进行调查。很明显,如果客户端不能和服务端通信,就会报一堆假的“离线”。