2011-11-01 235 views
3

好吧,所以我创建了一个非常简单的WAR,它服务于一个简单的Hello World .jsp。所有的HTML都是大约200字节。JMeter,Jetty性能测试和Keep-Alive问题

部署它运行码头7.5.x JDK 6u27 在我的客户端计算机上我的服务器上创建简单的JMeter测试计划用:线程组,HTTP请求,响应断言,总结报告客户同时运行jdk6u27

我成立线程组为5个线程运行60secs,我得到了5800个请求/秒 然后我设置了10个线程,得到6800个请求/秒

当我在HTTP请求采样器上禁用JMeter中的Keep-Alive。我想,我似乎在客户端有很多大的停顿,但似乎服务器并没有收到任何东西。我在5个线程或几乎没有任何停顿,但在10线程几乎一直挂起。

这是什么意思?

请记住,我在技术上创建一个REST服务,我得到同样的问题,所以我虽然也许我在我的服务中做了一些奇怪的事情,直到我发现它是一个Keep-Alive问题,因为它正在做几乎在一个staic web应用程序。所以实际上我会有1个客户端请求1个服务器响应。客户端不会保持连接打开。

回答

4

我的猜测是由于Keep-Alive是允许HTTP连接(从而套接字)重复使用的原因,因此您的可用临时端口号不足 - 只有64k端口号,并且由于连接必须具有唯一的客户端/服务器端口组合(和服务器端口是固定的),您可以快速通过这些。现在,如果一端连接关闭后端口是可重用的,则无关紧要:但是,根据TCP规范,双方必须等待可配置的时间量(默认值:2分钟),直到重新使用被认为是安全的。

欲了解更多的细节,你可以阅读一本TCP书(如“史蒂文斯书”);以上是简化。

+0

是的,认为是的。我将Windows设置为30秒。但是,在6000秒的时间内,每秒30秒的请求就是180 000个连接。我想我需要从多个客户端框进行测试。 – user432024