|
|
1
3
经过长时间的研究和测试执行,我得出结论,这是由于服务器上的线程调用时间,因为WCF使用I/O完成端口(一个有效的线程模型)。 Detail here ) 您需要在服务器启动时设置最低并发性要求,如下所示
否则,由于池最小大小的默认值为2,2,您将受到影响,任何新线程都需要创建线程的成本(每个开发人员都知道这是最昂贵的进程)。通过这样做,线程池将保持至少100线程准备工作,您的服务将摇滚。 因为我已经把腰围从31ms减到了6ms。 |
|
2
2
你在做什么手术?即,有效载荷大小是多少?如果您使用非常小的有效负载执行大量的操作,那么显然您将遭受更多的延迟等问题;但是 带宽 也可能是非平凡有效负载的问题。如果您遇到这种情况,可以尝试其他序列化程序。请告诉我这里的有效负载大小是否是一个可能的问题,因为那里可能有一些选项。 另外,您使用的是什么安全/流式处理/etc选项?基于消息的安全性在两端都更昂贵(与传输安全性相比),并且IIRC块流式传输作为整个消息必须是可用的,以便验证它。同样,如果您在周围抛出blob,那么您可能会受益于启用MTOM(这在基本HTTP上是可行的)和使用流式API。 |
|
|
3
0
这里有很多问题要问。马克首先提出了一系列好的问题,但最终,我想我们将无法从你那里获得关于你的程序、平台和网络的足够信息,从而无法在网上给你一个完整的答案。 如果我在你的情况下,我会做的第一件事是进行一点分析,以了解下面发生了什么。具体来说,我将使用procmon来分析网络传输之前和包括网络传输在内的系统活动,以确保网络时间精确。基于这些发现,我要么深入研究网络上的情况,要么使用.NET性能分析器来查看堆栈上的哪些操作会花费您最大的时间。 |