jetty - JMeter、Jetty 性能测试和 Keep-Alive 问题

标签 jetty jmeter keep-alive

好的,所以我创建了一个非常简单的 WAR,它提供了一个简单的 Hello World .jsp。所有的 HTML 大约有 200 字节。

将它部署在我运行 Jetty 7.5.x jdk 6u27 的服务器上
在我的客户端计算机上创建简单的 JMeter 测试计划:线程组、HTTP 请求、响应断言、汇总报告客户端也运行 jdk6u27

我将线程组设置为运行 60 秒的 5 个线程,得到 5800 个请求/秒
然后我设置了 10 个线程并获得了 6800 个请求/秒

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

这究竟是什么意思?

请记住,我在技术上创建了一个 REST 服务,但我遇到了同样的问题,所以我虽然可能在我的服务中做了一些时髦的事情,直到我发现这是一个 Keep-Alive 问题,因为它几乎是在一个静态网络应用程序。所以实际上我将有 1 个客户端请求 1 个服务器响应。客户端不会保持连接打开。

最佳答案

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

有关更多详细信息,您可以阅读 TCP 书籍(如“Stevens book”);以上是一个简化。

关于jetty - JMeter、Jetty 性能测试和 Keep-Alive 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7967927/

相关文章:

c++ - Asio 和 HTTP 保活

java - Keep-alive 如何与 ThreadPoolExecutor 一起工作?

ssl - 多个图像请求的 Amazon ssl 效率

servlets - jetty webSocket : java. lang.IllegalStateException:已提交

java - 如何使用 jruby 创建 servlet(使用 jetty 运行)?

java - Gretty,从存储库设置 "Module specified Libraries"

certificate - 未生成ApacheJMeterTemporaryRootCA.crt

java - 错误 java.lang.IllegalArgumentException : Name for argument type [java. lang.String]

使用 jMeter 3.3 未到达 WCF 端点

Jmeter xpath 提取器