为什么IIS不一致?

我有一个在Windows 2008 R2 64位IIS 7.5下运行的WCF服务(用.NET 4编写)。

我创build了一个产生10-20(或更多)线程的testing工具 – 每个线程创build一个随机的有效载荷并命中服务器。 在服务器上,我logging了所有的访问,我可以看到从事IIS的线程ID。

无论有多less客户端请求(同时)服务器,服务器只使用2个线程。 它基本上在它们之间循环。

但是,突然之间,IIS将开始使用尽可能多的线程作为我请求的数量。 然后,它会下降到使用1或2个线程。

有人可以解释这种行为,我可以做些什么来解决这个问题?

如何调整客户端连接pipe理设置,

<configuration> <system.net> <connectionManagement> <add address = "http://www.example.org" maxconnection = "4" /> <add address = "*" maxconnection = "2" /> </connectionManagement> </system.net> </configuration> 

你肯定是打在system.net默认2连接限制。 因此,您需要将每个IP允许的最大连接数增加到线程数。

 <configuration> <system.net> <connectionManagement> <add address = "*" maxconnection = "100" /> </connectionManagement> </system.net> </configuration> 

如果您有Windows 7,那么您将达到IIS上的最大25请求限制。 您将不得不在Windows 2008上加载testing以获取实际的数字。

另一件事是客户端可能不会并行执行所有的线程。 所以,你需要确保客户端真的并行运行所有100个线程。

除了这些设置,为了扩展WCF,你需要做一些进一步的调整。 最常见的调整在这里解释:

http://www.codeproject.com/Articles/133738/Quick-Ways-to-Boost-Performance-and-Scalability-of